{"id":42600,"date":"2022-12-06T03:10:20","date_gmt":"2023-06-20T00:29:16","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8ansible%e6%9d%a5%e4%bb%a5%e5%b9%82%e7%ad%89%e6%80%a7%e6%96%b9%e5%bc%8f%e6%9b%b4%e6%94%b9ec2%ef%bc%88amazon-linux-2%ef%bc%89%e7%9a%84ssh%e7%ab%af%e5%8f%a3%e5%8f%b7%e3%80%82\/"},"modified":"2024-04-29T03:55:59","modified_gmt":"2024-04-28T19:55:59","slug":"%e4%bd%bf%e7%94%a8ansible%e6%9d%a5%e4%bb%a5%e5%b9%82%e7%ad%89%e6%80%a7%e6%96%b9%e5%bc%8f%e6%9b%b4%e6%94%b9ec2%ef%bc%88amazon-linux-2%ef%bc%89%e7%9a%84ssh%e7%ab%af%e5%8f%a3%e5%8f%b7%e3%80%82","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8ansible%e6%9d%a5%e4%bb%a5%e5%b9%82%e7%ad%89%e6%80%a7%e6%96%b9%e5%bc%8f%e6%9b%b4%e6%94%b9ec2%ef%bc%88amazon-linux-2%ef%bc%89%e7%9a%84ssh%e7%ab%af%e5%8f%a3%e5%8f%b7%e3%80%82\/","title":{"rendered":"\u4f7f\u7528Ansible\u6765\u4ee5\u5e42\u7b49\u6027\u65b9\u5f0f\u66f4\u6539EC2\uff08Amazon Linux 2\uff09\u7684SSH\u7aef\u53e3\u53f7"},"content":{"rendered":"<h1>\u9996\u5148<\/h1>\n<p>\u6211\u5df2\u7ecf\u6574\u7406\u4e86\u5728ansible\u4e2d\u786e\u4fdd\u5e42\u7b49\u6027\u7684\u60c5\u51b5\u4e0b\u5c06EC2\u7684SSH\u7aef\u53e3\u53f7\u4ece22\u66f4\u6539\u4e3a50001\u7684\u6b65\u9aa4\u3002<\/p>\n<h1>\u73af\u5883<\/h1>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30ed\u30fc\u30ab\u30eb\u74b0\u5883<\/ul>\n<\/li>\n<\/ul>\n<p>M1 Mac<br \/>\nMacOS Monterey 12.6<\/p>\n<p>\u30b5\u30fc\u30d0<\/p>\n<p>Amazon Linux2<\/p>\n<h1>\u4f7f\u7528ansible\u8fdb\u884c\u5b89\u88c5<\/h1>\n<p>\u5728\u672c\u5730\u5b89\u88c5ansible\u3002<br \/>\n\u867d\u7136\u4e5f\u53ef\u4ee5\u4f7f\u7528Homebrew\u8fdb\u884c\u5b89\u88c5\uff0c\u4f46\u7531\u4e8epip\u53ef\u4ee5\u8fdb\u884c\u8be6\u7ec6\u7684\u7248\u672c\u6307\u5b9a\uff0c\u56e0\u6b64\u6211\u4eec\u9009\u62e9\u4e86\u4f7f\u7528pip\u8fdb\u884c\u5b89\u88c5\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"go\">\u6700\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u5834\u5408\r\n<\/span><span class=\"gp\">$<\/span> pip <span class=\"nb\">install <\/span>ansible\r\n<span class=\"go\">\r\n\u30d0\u30fc\u30b8\u30e7\u30f3\u6307\u5b9a\r\n<\/span><span class=\"gp\">$<\/span> pip <span class=\"nb\">install <\/span><span class=\"nv\">ansible<\/span><span class=\"o\">==<\/span>6.5.0\r\n<\/code><\/pre>\n<p>\u4e3a\u4e86\u786e\u8ba4\u5b89\u88c5\u6210\u529f\uff0c\u6211\u4eec\u9700\u8981\u68c0\u67e5\u8f6f\u4ef6\u7684\u7248\u672c\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> pip list\r\n<span class=\"go\">Package      Version\r\n------------ -------\r\nansible      6.5.0\r\nansible-core 2.13.6\r\n<\/span><\/code><\/pre>\n<h1>\u542f\u52a8EC2<\/h1>\n<p>\u6211\u5011\u5c07\u555f\u52d5\u4e00\u500b EC2 \u5be6\u4f8b\uff0c\u4f46\u555f\u52d5\u65b9\u5f0f\u5df2\u7c21\u7565\u63cf\u8ff0\u3002<br \/>\n\u5b89\u5168\u7fa4\u7d44\u5c07\u5141\u8a31\u5165\u7ad9\u898f\u5247\u5305\u62ec SSH 22 \u7aef\u53e3\u548c\u81ea\u8a02\u7aef\u53e3\u865f 50001\u3002<br \/>\n\u6b64\u5916\uff0c\u5c07\u555f\u7528\u516c\u6709 IP \u7684\u81ea\u52d5\u5206\u914d\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d4dc937434c4406cbea68\/11-0.png\" alt=\"\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8 2022-11-22 23.24.42.png\" \/><\/div>\n<h1>\u521b\u5efaansible\u9879\u76ee<\/h1>\n<p>\u521b\u5efa\u4e00\u4e2a\u540d\u4e3aplaybook\u7684\u76ee\u5f55\uff0c\u5e76\u5728\u5176\u4e2d\u521b\u5efa\u4e00\u4e2ahosts\u6587\u4ef6\u3001\u4e00\u4e2aplaybook.yml\u6587\u4ef6\u548c\u4e00\u4e2asshd\u7684roles\u76ee\u5f55\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> <span class=\"nb\">mkdir <\/span>playbook\r\n<span class=\"gp\">$<\/span> <span class=\"nb\">cd <\/span>playbook\r\n<span class=\"gp\">$<\/span> <span class=\"nb\">touch <\/span>hosts playbook.yml\r\n<span class=\"gp\">$<\/span> ansible-galaxy init <span class=\"nt\">--init-path<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"roles\"<\/span> sshd\r\n\r\n<span class=\"gp\">$<\/span> tree     \r\n<span class=\"c\">.\r\n<\/span><span class=\"go\">\u251c\u2500\u2500 hosts\r\n\u251c\u2500\u2500 playbook.yml\r\n\u2514\u2500\u2500 roles\r\n    \u2514\u2500\u2500 sshd\r\n        \u251c\u2500\u2500 README.md\r\n        \u251c\u2500\u2500 defaults\r\n        \u2502\u00a0\u00a0 \u2514\u2500\u2500 main.yml\r\n        \u251c\u2500\u2500 files\r\n        \u251c\u2500\u2500 handlers\r\n        \u2502\u00a0\u00a0 \u2514\u2500\u2500 main.yml\r\n        \u251c\u2500\u2500 meta\r\n        \u2502\u00a0\u00a0 \u2514\u2500\u2500 main.yml\r\n        \u251c\u2500\u2500 tasks\r\n        \u2502\u00a0\u00a0 \u2514\u2500\u2500 main.yml\r\n        \u251c\u2500\u2500 templates\r\n        \u251c\u2500\u2500 tests\r\n        \u2502\u00a0\u00a0 \u251c\u2500\u2500 inventory\r\n        \u2502\u00a0\u00a0 \u2514\u2500\u2500 test.yml\r\n        \u2514\u2500\u2500 vars\r\n            \u2514\u2500\u2500 main.yml\r\n<\/span><\/code><\/pre>\n<p>\u5220\u9664\u672a\u4f7f\u7528\u7684\u76ee\u5f55\uff0c\u5e76\u6309\u7167\u4ee5\u4e0b\u65b9\u5f0f\u8fdb\u884c\u8c03\u6574\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> tree\r\n<span class=\"c\">.\r\n<\/span><span class=\"go\">\u251c\u2500\u2500 hosts\r\n\u251c\u2500\u2500 playbook.yml\r\n\u2514\u2500\u2500 roles\r\n    \u2514\u2500\u2500 sshd\r\n        \u251c\u2500\u2500 handlers\r\n        \u2502\u00a0\u00a0 \u2514\u2500\u2500 main.yml\r\n        \u2514\u2500\u2500 tasks\r\n            \u2514\u2500\u2500 main.yml\r\n\r\n4 directories, 4 files\r\n<\/span><\/code><\/pre>\n<h2>\u521b\u5efahosts\u6587\u4ef6<\/h2>\n<p>\u8bf7\u6309\u7167\u4ee5\u4e0b\u65b9\u5f0f\u63cf\u8ff0\uff1a<br \/>\n\u901a\u5e38\u60c5\u51b5\u4e0b\uff0c\u6700\u597d\u5728roles\u7684vars\u6587\u4ef6\u5939\u4e0b\u7684main.yml\u4e2d\u5199\u5165custom_ssh_port=50001\u7b49\u5185\u5bb9\uff0c\u4f46\u7531\u4e8e\u8fd9\u6837\u5f88\u9ebb\u70e6\uff0c\u6240\u4ee5\u6211\u5c06\u5176\u6574\u5408\u5230hosts\u6587\u4ef6\u4e2d\u3002<br \/>\n\u8bf7\u5728\u8be5IP\u5b57\u6bb5\u4e2d\u586b\u5199\u670d\u52a1\u5668\u7684\u516c\u5171IP\u3002<\/p>\n<pre class=\"post-pre\"><code>[web] # \u8a18\u8f09\u3055\u308c\u305fIP\u306b\u5bfe\u3057\u3066\u63a5\u7d9a\r\n11.11.11.11\r\n\r\n[web:vars] #[web]\u3067\u4f7f\u3046\u5909\u6570\u3092\u5b9a\u7fa9\r\nansible_ssh_port=22\r\nansible_user=ec2-user\r\n__working_user=ec2-user\r\nansible_python_interpreter=\/usr\/bin\/python2\r\n\r\n# custom ssh port \uff0849152\uff5e65535\uff09\r\ncustom_ssh_port=50001\r\n\r\n# pem key path\r\nansible_ssh_private_key_file=~\/.ssh\/test.pem\r\n<\/code><\/pre>\n<h2>\u521b\u5efaplaybook.yml<\/h2>\n<pre class=\"post-pre\"><code><span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Change port<\/span>\r\n  <span class=\"na\">hosts<\/span><span class=\"pi\">:<\/span> <span class=\"s\">web<\/span>\r\n  <span class=\"na\">become<\/span><span class=\"pi\">:<\/span> <span class=\"s\">yes<\/span>\r\n  <span class=\"na\">gather_facts<\/span><span class=\"pi\">:<\/span> <span class=\"kc\">false<\/span>\r\n  <span class=\"na\">roles<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"pi\">-<\/span> <span class=\"s\">sshd<\/span>\r\n<\/code><\/pre>\n<p>\u4e3a\u4e86\u5728\u4e0b\u4e00\u4e2a\u6a21\u5757\u4e2d\u4f7f\u7528`local_action`\uff0c\u9700\u8981\u5c06`gather_facts`\u8bbe\u7f6e\u4e3a`false`\u3002<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">gather_facts<\/ul>\n<\/li>\n<\/ul>\n<p>\u5bfe\u8c61\u30db\u30b9\u30c8\u306e\u60c5\u5831\u3092ansible_facts\u5909\u6570\u3068\u3044\u3046\u3082\u306e\u306b\u683c\u7d0d\u3057\u3001tasks\u5185\u306e\u5909\u6570\u3067\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<h2>\u521b\u5efaroles\u6587\u4ef6\u5939\u4e0b\u7684sshd\u76ee\u5f55\u3002<\/h2>\n<p>\u53ea\u9700\u5728tasks\u548chandlers\u7684main.yml\u4e2d\u8fdb\u884c\u8bb0\u5f55\u3002\u4e0d\u4f7f\u7528\u5176\u4ed6\u5185\u5bb9\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"c1\"># port22 \u3067SSH\u63a5\u7d9a\u3059\u308b\u3002\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u306f\uff15\u79d2\u3067\u3001\u63a5\u7d9a\u5931\u6557\u3057\u3066\u3082\u6b21\u306b\u9032\u3080<\/span>\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Connect default ssh port<\/span>\r\n  <span class=\"na\">local_action<\/span><span class=\"pi\">:<\/span> <span class=\"s\">wait_for port={{ansible_ssh_port}} timeout=5 host={{inventory_hostname}}<\/span>\r\n  <span class=\"na\">register<\/span><span class=\"pi\">:<\/span> <span class=\"s\">default_port<\/span>\r\n  <span class=\"na\">ignore_errors<\/span><span class=\"pi\">:<\/span> <span class=\"kc\">true<\/span>\r\n  <span class=\"na\">become<\/span><span class=\"pi\">:<\/span> <span class=\"s\">False<\/span>\r\n\r\n<span class=\"c1\"># port22 \u3067\u5931\u6557\u3057\u305f\u5834\u5408\u3001port 50001\u3067SSH\u63a5\u7d9a\u3059\u308b\u3002\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u306f\uff15\u79d2<\/span>\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Connect custom ssh port<\/span>\r\n  <span class=\"na\">local_action<\/span><span class=\"pi\">:<\/span> <span class=\"s\">wait_for port={{custom_ssh_port}} timeout=5 host={{inventory_hostname}}<\/span>\r\n  <span class=\"na\">register<\/span><span class=\"pi\">:<\/span> <span class=\"s\">custom_port<\/span>\r\n  <span class=\"na\">when<\/span><span class=\"pi\">:<\/span> <span class=\"s\">default_port.elapsed &gt;= <\/span><span class=\"m\">5<\/span>\r\n  <span class=\"na\">become<\/span><span class=\"pi\">:<\/span> <span class=\"s\">False<\/span>\r\n\r\n<span class=\"c1\"># port22 \u3067\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3057\u3001port50001\u3067SSH\u63a5\u7d9a\u6210\u529f\u3057\u305f\u5834\u5408\u3001ansible_ssh_port\u309250001\u306b\u5909\u3048\u308b<\/span>\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">set ansible_ssh_port custom_ssh_port<\/span>\r\n  <span class=\"na\">set_fact<\/span><span class=\"pi\">:<\/span> <span class=\"s\">ansible_ssh_port={{custom_ssh_port}}<\/span>\r\n  <span class=\"na\">when<\/span><span class=\"pi\">:<\/span> <span class=\"s\">default_port.elapsed &gt;= 5 and custom_port.elapsed &lt; <\/span><span class=\"m\">5<\/span>\r\n  <span class=\"na\">become<\/span><span class=\"pi\">:<\/span> <span class=\"s\">False<\/span>\r\n\r\n<span class=\"c1\"># \u73fe\u5728port22\u3067SSH\u63a5\u7d9a\u3057\u3066\u3044\u308b\u5834\u5408\u3001\/etc\/ssh\/sshd_config\u306ePort\u309250001\u306b\u66f8\u304d\u63db\u3048\u308b<\/span>\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Rewrite custom_ssh_port<\/span>\r\n  <span class=\"na\">lineinfile<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">dest<\/span><span class=\"pi\">:<\/span> <span class=\"s\">\/etc\/ssh\/sshd_config<\/span>\r\n    <span class=\"na\">regexp<\/span><span class=\"pi\">:<\/span> <span class=\"s1\">'<\/span><span class=\"s\">^#Port'<\/span>\r\n    <span class=\"na\">line<\/span><span class=\"pi\">:<\/span> <span class=\"s1\">'<\/span><span class=\"s\">Port<\/span> <span class=\"s\">{{custom_ssh_port}}'<\/span>\r\n  <span class=\"na\">notify<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Restart sshd<\/span>\r\n  <span class=\"na\">when<\/span><span class=\"pi\">:<\/span> <span class=\"s\">ansible_ssh_port == <\/span><span class=\"m\">22<\/span>\r\n\r\n<span class=\"c1\"># ssh\u63a5\u7d9a\u6642\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u8a8d\u8a3c\u3092\u7121\u52b9<\/span>\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Disabling password authentication<\/span>\r\n  <span class=\"na\">lineinfile<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">dest<\/span><span class=\"pi\">:<\/span> <span class=\"s\">\/etc\/ssh\/sshd_config<\/span>\r\n    <span class=\"na\">regexp<\/span><span class=\"pi\">:<\/span> <span class=\"s1\">'<\/span><span class=\"s\">^PasswordAuthentication'<\/span>\r\n    <span class=\"na\">insertafter<\/span><span class=\"pi\">:<\/span> <span class=\"s1\">'<\/span><span class=\"s\">^#PasswordAuthentication'<\/span>\r\n    <span class=\"na\">line<\/span><span class=\"pi\">:<\/span> <span class=\"s\">PasswordAuthentication no<\/span>\r\n  <span class=\"na\">notify<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Restart sshd<\/span>\r\n<span class=\"c1\"># ssh\u63a5\u7d9a\u6642\u306e\u30c1\u30e3\u30ec\u30f3\u30b8\/\u30ec\u30b9\u30dd\u30f3\u30b9\u8a8d\u8a3c\u3092\u7121\u52b9<\/span>\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Disabling Challenge-Response Authentication<\/span>\r\n  <span class=\"na\">lineinfile<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">dest<\/span><span class=\"pi\">:<\/span> <span class=\"s\">\/etc\/ssh\/sshd_config<\/span>\r\n    <span class=\"na\">regexp<\/span><span class=\"pi\">:<\/span> <span class=\"s1\">'<\/span><span class=\"s\">^ChallengeResponseAuthentication'<\/span>\r\n    <span class=\"na\">insertafter<\/span><span class=\"pi\">:<\/span> <span class=\"s1\">'<\/span><span class=\"s\">^#ChallengeResponseAuthentication'<\/span>\r\n    <span class=\"na\">line<\/span><span class=\"pi\">:<\/span> <span class=\"s\">ChallengeResponseAuthentication no<\/span>\r\n  <span class=\"na\">notify<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Restart sshd<\/span>\r\n\r\n<span class=\"c1\"># root\u30e6\u30fc\u30b6\u30fc\u306e\u30ed\u30b0\u30a4\u30f3\u7121\u52b9<\/span>\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Disabling root user login<\/span>\r\n  <span class=\"na\">lineinfile<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">dest<\/span><span class=\"pi\">:<\/span> <span class=\"s\">\/etc\/ssh\/sshd_config<\/span>\r\n    <span class=\"na\">regexp<\/span><span class=\"pi\">:<\/span> <span class=\"s1\">'<\/span><span class=\"s\">^PermitRootLogin'<\/span>\r\n    <span class=\"na\">insertafter<\/span><span class=\"pi\">:<\/span> <span class=\"s1\">'<\/span><span class=\"s\">^#PermitRootLogin'<\/span>\r\n    <span class=\"na\">line<\/span><span class=\"pi\">:<\/span> <span class=\"s\">PermitRootLogin no<\/span>\r\n  <span class=\"na\">notify<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Restart sshd<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"c1\"># sshd\u306e\u8a2d\u5b9a\u304c\u5909\u66f4\u3055\u308c\u305f\u5834\u5408\u3001\u518d\u8d77\u52d5\u3059\u308b<\/span>\r\n<span class=\"pi\">-<\/span> <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">Restart sshd<\/span>\r\n  <span class=\"na\">service<\/span><span class=\"pi\">:<\/span>\r\n    <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">sshd<\/span>\r\n    <span class=\"na\">state<\/span><span class=\"pi\">:<\/span> <span class=\"s\">restarted<\/span>\r\n<\/code><\/pre>\n<h2>\u6a21\u5757\u8bf4\u660e<\/h2>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">local_action<\/ul>\n<\/li>\n<\/ul>\n<p>\u30ea\u30e2\u30fc\u30c8\u30db\u30b9\u30c8\u3067\u306f\u306a\u304f\u30ed\u30fc\u30ab\u30eb\u3067\u5b9f\u884c\u3057\u305f\u3044\u5834\u5408\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002\u4eca\u56de\u3067\u3042\u308c\u3070\u3001\u30ed\u30fc\u30ab\u30eb\u304b\u3089SSH\u63a5\u7d9a\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>wait_for<\/p>\n<p>SSH\u63a5\u7d9a\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u6642\u3001\u30dd\u30fc\u30c8\u304c\u5fdc\u7b54\u3042\u308b\u307e\u3067\u5f85\u3064\u305f\u3081\u306b\u4f7f\u7528\u3057\u307e\u3059<\/p>\n<p>timeout\u3084host\u5148\u3092\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>register<\/p>\n<p>\u51e6\u7406\u7d50\u679c\u3092\u5909\u6570\u306e\u4e2d\u306b\u4e00\u6642\u7684\u306b\u4fdd\u7ba1\u3067\u304d\u307e\u3059<br \/>\nelapsed<\/p>\n<p>\u7d4c\u904e\u6642\u9593\u3092\u793a\u3057\u307e\u3059<\/p>\n<p>become<\/p>\n<p>\u305d\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u3092 root \u6a29\u9650\u3067\u5b9f\u884c\u3067\u304d\u307e\u3059<\/p>\n<p>set_fact<\/p>\n<p>\u65b0\u305f\u306a\u5909\u6570\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u4eca\u56de\u306f\u3001ansible_ssh_port\u306e\u5024\u304c\u5143\u300522\u3060\u3063\u305f\u306e\u3092custom_ssh_port\uff0850001\uff09\u306b\u4e0a\u66f8\u304d\u3057\u307e\u3057\u305f<\/p>\n<p>lineinfile<\/p>\n<p>\u30d5\u30a1\u30a4\u30eb\u3092\u884c\u5358\u4f4d\u3067\u7de8\u96c6\u3067\u304d\u307e\u3059<br \/>\ndest<\/p>\n<p>\u7de8\u96c6\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u306e\u30d1\u30b9\u3092\u6307\u5b9a<\/p>\n<p>line<\/p>\n<p>\u7f6e\u63db\u307e\u305f\u306f\u633f\u5165\u3059\u308b\u6587\u5b57\u5217\u3092\u6307\u5b9a<\/p>\n<p>regexp<\/p>\n<p>\u6307\u5b9a\u3057\u305f\u6b63\u898f\u8868\u73fe\u306b\u30de\u30c3\u30c1\u3057\u305f\u884c\u3092\u3001line\u3067\u6307\u5b9a\u3057\u305f\u6587\u5b57\u5217\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059<br \/>\nline\u3067\u6307\u5b9a\u3057\u305f\u6587\u5b57\u5217\u3068\u3001\u540c\u3058\u5834\u5408\u306f\u4f55\u3082\u3057\u307e\u305b\u3093<\/p>\n<p>insertafter<\/p>\n<p>regexp \u306b\u30de\u30c3\u30c1\u3059\u308b\u884c\u304c\u7121\u304b\u3063\u305f\u5834\u5408\u3001\u3053\u3053\u306b\u6307\u5b9a\u3057\u305f\u6b63\u898f\u8868\u73fe\u306b\u30de\u30c3\u30c1\u3057\u305f\u6b21\u306e\u884c\u306b\u3001line\u3067\u6307\u5b9a\u3057\u305f\u6587\u5b57\u5217\u3092\u633f\u5165\u3059\u308b\u3002<\/p>\n<p>\u305d\u308c\u306b\u3082\u30de\u30c3\u30c1\u3057\u306a\u3044\u5834\u5408\u306f\u30d5\u30a1\u30a4\u30eb\u672b\u5c3e\u306b\u3001line\u3067\u6307\u5b9a\u3057\u305f\u6587\u5b57\u5217\u304c\u633f\u5165\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>notify<\/p>\n<p>notify\u3092\u4ed8\u4e0e\u3057\u305f\u30bf\u30b9\u30af\u304cchanged\u306b\u306a\u3063\u305f\u5834\u5408\u3001handlers\u5185\u306b\u5b9a\u7fa9\u3055\u308c\u305f\u30bf\u30b9\u30af\u304c\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002<\/p>\n<p>\u540c\u3058handlers\u306e\u547c\u3073\u51fa\u3057\u306f1\u56de\u306b\u307e\u3068\u3081\u3089\u307e\u3059\u3002notify\u3092\u4ed8\u4e0e\u3057\u3066\u3044\u308b\u8907\u6570\u306e\u30bf\u30b9\u30af\u304cchanged\u306b\u306a\u3063\u3066\u3082\uff11\u5ea6\u3057\u304b\u5b9f\u884c\u3055\u308c\u307e\u305b\u3093\u3002<\/p>\n<h1>\u6267\u884c\u5b89\u742a\u513f\u3002<\/h1>\n<p>\u5728\u6839\u76ee\u5f55\u4e0b\uff0c\u60a8\u53ef\u4ee5\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u6765\u6267\u884cansible\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> ansible-playbook <span class=\"nt\">-i<\/span> hosts playbook.yml\r\n<\/code><\/pre>\n<p>\u5982\u679c\u60a8\u60f3\u8981\u8f93\u51fa\u8be6\u7ec6\u65e5\u5fd7\uff0c\u8bf7\u6dfb\u52a0 -vv\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> ansible-playbook <span class=\"nt\">-i<\/span> hosts playbook.yml <span class=\"nt\">-vv<\/span>\r\n<\/code><\/pre>\n<p>\u6211\u4eec\u5c06\u6267\u884c\u7b2c\u4e00\u6b21\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> ansible-playbook <span class=\"nt\">-i<\/span> hosts playbook.yml <span class=\"nt\">-vv<\/span>\r\n<span class=\"go\">\r\nPLAY [Change port] ************************************************************************************************************\r\n\r\nTASK [sshd : Connect default ssh port] ****************************************************************************************\r\n<\/span><span class=\"gp\">ok: [13.231.201.67 -&gt;<\/span> localhost]\r\n<span class=\"go\">\r\nTASK [sshd : Connect custom ssh port] *****************************************************************************************\r\nskipping: [13.231.201.67]\r\n\r\nTASK [sshd : set ansible_ssh_port custom_ssh_port] ****************************************************************************\r\nskipping: [13.231.201.67]\r\n\r\nTASK [sshd : Rewrite custom_ssh_port] *****************************************************************************************\r\nThe authenticity of host '13.231.201.67 (13.231.201.67)' can't be established.\r\nED25519 key fingerprint is SHA256:SgTQf176TUJ\/wSqlWH4inIAZ7NWU+eAQrewxa+aqEns.\r\nThis key is not known by any other names\r\nAre you sure you want to continue connecting (yes\/no\/[fingerprint])? yes\r\nchanged: [13.231.201.67]\r\n\r\nTASK [sshd : Disabling password authentication] *******************************************************************************\r\nok: [13.231.201.67]\r\n\r\nTASK [sshd : Disabling Challenge-Response Authentication] *********************************************************************\r\nok: [13.231.201.67]\r\n\r\nTASK [sshd : Disabling root user login] ***************************************************************************************\r\nchanged: [13.231.201.67]\r\n\r\nRUNNING HANDLER [sshd : Restart sshd] *****************************************************************************************\r\nchanged: [13.231.201.67]\r\n\r\nPLAY RECAP ********************************************************************************************************************\r\n13.231.201.67              : ok=6    changed=3    unreachable=0    failed=0    skipped=2    rescued=0    ignored=0\r\n<\/span><\/code><\/pre>\n<p>\u7b2c\u4e00\u6b21\u8fd0\u884c\u65f6\uff0c\u53d1\u73b0\u7aef\u53e322\u88ab\u4f7f\u7528\u3002<br \/>\n\u8fdb\u884c\u7b2c\u4e8c\u6b21\u6267\u884c\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"gp\">$<\/span> ansible-playbook <span class=\"nt\">-i<\/span> hosts playbook.yml\r\n<span class=\"go\">\r\nPLAY [Change port] ************************************************************************************************************\r\n\r\nTASK [sshd : Connect default ssh port] ****************************************************************************************\r\n<\/span><span class=\"gp\">fatal: [13.231.201.67 -&gt;<\/span> localhost]: FAILED! <span class=\"o\">=&gt;<\/span> <span class=\"o\">{<\/span><span class=\"s2\">\"changed\"<\/span>: <span class=\"nb\">false<\/span>, <span class=\"s2\">\"elapsed\"<\/span>: 5, <span class=\"s2\">\"msg\"<\/span>: <span class=\"s2\">\"Timeout when waiting for 13.231.201.67:22\"<\/span><span class=\"o\">}<\/span>\r\n<span class=\"go\">...ignoring\r\n\r\nTASK [sshd : Connect custom ssh port] *****************************************************************************************\r\n<\/span><span class=\"gp\">ok: [13.231.201.67 -&gt;<\/span> localhost]\r\n<span class=\"go\">\r\nTASK [sshd : set ansible_ssh_port custom_ssh_port] ****************************************************************************\r\nok: [13.231.201.67]\r\n\r\nTASK [sshd : Rewrite custom_ssh_port] *****************************************************************************************\r\nskipping: [13.231.201.67]\r\n\r\nTASK [sshd : Disabling password authentication] *******************************************************************************\r\nok: [13.231.201.67]\r\n\r\nTASK [sshd : Disabling Challenge-Response Authentication] *********************************************************************\r\nok: [13.231.201.67]\r\n\r\nTASK [sshd : Disabling root user login] ***************************************************************************************\r\nok: [13.231.201.67]\r\n\r\nPLAY RECAP ********************************************************************************************************************\r\n13.231.201.67              : ok=6    changed=0    unreachable=0    failed=0    skipped=1    rescued=0    ignored=1\r\n<\/span><\/code><\/pre>\n<p>\u901a\u8fc7\u7b2c\u4e8c\u6b21\uff0c\u6211\u4eec\u53ef\u4ee5\u770b\u5230\u4f7f\u7528\u4e86\u81ea\u5b9a\u4e49SSH\u7aef\u53e3\u768450001\u7aef\u53e3\u3002<\/p>\n<p>\u8ba9\u6211\u4eec\u6267\u884c\u7b2c\u4e09\u6b21\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"go\">ansible-playbook -i hosts playbook.yml\r\n\r\nPLAY [Change port] ************************************************************************************************************\r\n\r\nTASK [sshd : Connect default ssh port] ****************************************************************************************\r\n<\/span><span class=\"gp\">fatal: [13.231.201.67 -&gt;<\/span> localhost]: FAILED! <span class=\"o\">=&gt;<\/span> <span class=\"o\">{<\/span><span class=\"s2\">\"changed\"<\/span>: <span class=\"nb\">false<\/span>, <span class=\"s2\">\"elapsed\"<\/span>: 5, <span class=\"s2\">\"msg\"<\/span>: <span class=\"s2\">\"Timeout when waiting for 13.231.201.67:22\"<\/span><span class=\"o\">}<\/span>\r\n<span class=\"go\">...ignoring\r\n\r\nTASK [sshd : Connect custom ssh port] *****************************************************************************************\r\n<\/span><span class=\"gp\">ok: [13.231.201.67 -&gt;<\/span> localhost]\r\n<span class=\"go\">\r\nTASK [sshd : set ansible_ssh_port custom_ssh_port] ****************************************************************************\r\nok: [13.231.201.67]\r\n\r\nTASK [sshd : Rewrite custom_ssh_port] *****************************************************************************************\r\nskipping: [13.231.201.67]\r\n\r\nTASK [sshd : Disabling password authentication] *******************************************************************************\r\nok: [13.231.201.67]\r\n\r\nTASK [sshd : Disabling Challenge-Response Authentication] *********************************************************************\r\nok: [13.231.201.67]\r\n\r\nTASK [sshd : Disabling root user login] ***************************************************************************************\r\nok: [13.231.201.67]\r\n\r\nPLAY RECAP ********************************************************************************************************************\r\n13.231.201.67              : ok=6    changed=0    unreachable=0    failed=0    skipped=1    rescued=0    ignored=1\r\n<\/span><\/code><\/pre>\n<p>\u7b2c\u4e09\u6b21\u4e5f\u4f7f\u7528\u4e86\u7aef\u53e350001\u3002<br \/>\n\u800c\u4e14\uff0c\u66f4\u6539\u6b21\u6570\u4e3a0\uff0c\u53ef\u4ee5\u770b\u51fa\u5177\u6709\u5e42\u7b49\u6027\u3002<\/p>\n<p>\u4e0b\u6b21\uff0c\u5c06\u4f7f\u7528ansible\u7684ansible-lint\u5de5\u5177\u5bf9\u4ee3\u7801\u8fdb\u884c\u91cd\u6784\u3002<\/p>\n<p>&nbsp;<\/p>\n<h1>\u8bf7\u5f15\u7528<\/h1>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u9996\u5148 \u6211\u5df2\u7ecf\u6574\u7406\u4e86\u5728ansible\u4e2d\u786e\u4fdd\u5e42\u7b49\u6027\u7684\u60c5\u51b5\u4e0b\u5c06EC2\u7684SSH\u7aef\u53e3\u53f7\u4ece22\u66f4\u6539\u4e3a50001\u7684\u6b65\u9aa4\u3002 \u73af [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-42600","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u4f7f\u7528Ansible\u6765\u4ee5\u5e42\u7b49\u6027\u65b9\u5f0f\u66f4\u6539EC2\uff08Amazon Linux 2\uff09\u7684SSH\u7aef\u53e3\u53f7 - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528ansible\u6765\u4ee5\u5e42\u7b49\u6027\u65b9\u5f0f\u66f4\u6539ec2\uff08amazon-linux-2\uff09\u7684ssh\u7aef\u53e3\u53f7\u3002\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u4f7f\u7528Ansible\u6765\u4ee5\u5e42\u7b49\u6027\u65b9\u5f0f\u66f4\u6539EC2\uff08Amazon Linux 2\uff09\u7684SSH\u7aef\u53e3\u53f7\" \/>\n<meta property=\"og:description\" content=\"\u9996\u5148 \u6211\u5df2\u7ecf\u6574\u7406\u4e86\u5728ansible\u4e2d\u786e\u4fdd\u5e42\u7b49\u6027\u7684\u60c5\u51b5\u4e0b\u5c06EC2\u7684SSH\u7aef\u53e3\u53f7\u4ece22\u66f4\u6539\u4e3a50001\u7684\u6b65\u9aa4\u3002 \u73af [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528ansible\u6765\u4ee5\u5e42\u7b49\u6027\u65b9\u5f0f\u66f4\u6539ec2\uff08amazon-linux-2\uff09\u7684ssh\u7aef\u53e3\u53f7\u3002\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-06-20T00:29:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-28T19:55:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d4dc937434c4406cbea68\/11-0.png\" \/>\n<meta name=\"author\" content=\"\u97f5, \u79d1\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u97f5, \u79d1\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8ansible%e6%9d%a5%e4%bb%a5%e5%b9%82%e7%ad%89%e6%80%a7%e6%96%b9%e5%bc%8f%e6%9b%b4%e6%94%b9ec2%ef%bc%88amazon-linux-2%ef%bc%89%e7%9a%84ssh%e7%ab%af%e5%8f%a3%e5%8f%b7%e3%80%82\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8ansible%e6%9d%a5%e4%bb%a5%e5%b9%82%e7%ad%89%e6%80%a7%e6%96%b9%e5%bc%8f%e6%9b%b4%e6%94%b9ec2%ef%bc%88amazon-linux-2%ef%bc%89%e7%9a%84ssh%e7%ab%af%e5%8f%a3%e5%8f%b7%e3%80%82\/\",\"name\":\"\u4f7f\u7528Ansible\u6765\u4ee5\u5e42\u7b49\u6027\u65b9\u5f0f\u66f4\u6539EC2\uff08Amazon Linux 2\uff09\u7684SSH\u7aef\u53e3\u53f7 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-06-20T00:29:16+00:00\",\"dateModified\":\"2024-04-28T19:55:59+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/6530331a63adef3b3443a1fab53a0e6e\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8ansible%e6%9d%a5%e4%bb%a5%e5%b9%82%e7%ad%89%e6%80%a7%e6%96%b9%e5%bc%8f%e6%9b%b4%e6%94%b9ec2%ef%bc%88amazon-linux-2%ef%bc%89%e7%9a%84ssh%e7%ab%af%e5%8f%a3%e5%8f%b7%e3%80%82\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8ansible%e6%9d%a5%e4%bb%a5%e5%b9%82%e7%ad%89%e6%80%a7%e6%96%b9%e5%bc%8f%e6%9b%b4%e6%94%b9ec2%ef%bc%88amazon-linux-2%ef%bc%89%e7%9a%84ssh%e7%ab%af%e5%8f%a3%e5%8f%b7%e3%80%82\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8ansible%e6%9d%a5%e4%bb%a5%e5%b9%82%e7%ad%89%e6%80%a7%e6%96%b9%e5%bc%8f%e6%9b%b4%e6%94%b9ec2%ef%bc%88amazon-linux-2%ef%bc%89%e7%9a%84ssh%e7%ab%af%e5%8f%a3%e5%8f%b7%e3%80%82\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u4f7f\u7528Ansible\u6765\u4ee5\u5e42\u7b49\u6027\u65b9\u5f0f\u66f4\u6539EC2\uff08Amazon Linux 2\uff09\u7684SSH\u7aef\u53e3\u53f7\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/6530331a63adef3b3443a1fab53a0e6e\",\"name\":\"\u97f5, \u79d1\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/429ccb39b3fff5188bc17986222cfb0936cbadb8cc933cff04ab5ca01bd30a08?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/429ccb39b3fff5188bc17986222cfb0936cbadb8cc933cff04ab5ca01bd30a08?s=96&d=mm&r=g\",\"caption\":\"\u97f5, \u79d1\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/yunke\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8ansible%e6%9d%a5%e4%bb%a5%e5%b9%82%e7%ad%89%e6%80%a7%e6%96%b9%e5%bc%8f%e6%9b%b4%e6%94%b9ec2%ef%bc%88amazon-linux-2%ef%bc%89%e7%9a%84ssh%e7%ab%af%e5%8f%a3%e5%8f%b7%e3%80%82\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u4f7f\u7528Ansible\u6765\u4ee5\u5e42\u7b49\u6027\u65b9\u5f0f\u66f4\u6539EC2\uff08Amazon Linux 2\uff09\u7684SSH\u7aef\u53e3\u53f7 - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528ansible\u6765\u4ee5\u5e42\u7b49\u6027\u65b9\u5f0f\u66f4\u6539ec2\uff08amazon-linux-2\uff09\u7684ssh\u7aef\u53e3\u53f7\u3002\/","og_locale":"zh_CN","og_type":"article","og_title":"\u4f7f\u7528Ansible\u6765\u4ee5\u5e42\u7b49\u6027\u65b9\u5f0f\u66f4\u6539EC2\uff08Amazon Linux 2\uff09\u7684SSH\u7aef\u53e3\u53f7","og_description":"\u9996\u5148 \u6211\u5df2\u7ecf\u6574\u7406\u4e86\u5728ansible\u4e2d\u786e\u4fdd\u5e42\u7b49\u6027\u7684\u60c5\u51b5\u4e0b\u5c06EC2\u7684SSH\u7aef\u53e3\u53f7\u4ece22\u66f4\u6539\u4e3a50001\u7684\u6b65\u9aa4\u3002 \u73af [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u4f7f\u7528ansible\u6765\u4ee5\u5e42\u7b49\u6027\u65b9\u5f0f\u66f4\u6539ec2\uff08amazon-linux-2\uff09\u7684ssh\u7aef\u53e3\u53f7\u3002\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-06-20T00:29:16+00:00","article_modified_time":"2024-04-28T19:55:59+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d4dc937434c4406cbea68\/11-0.png"}],"author":"\u97f5, \u79d1","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u97f5, \u79d1","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"4 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8ansible%e6%9d%a5%e4%bb%a5%e5%b9%82%e7%ad%89%e6%80%a7%e6%96%b9%e5%bc%8f%e6%9b%b4%e6%94%b9ec2%ef%bc%88amazon-linux-2%ef%bc%89%e7%9a%84ssh%e7%ab%af%e5%8f%a3%e5%8f%b7%e3%80%82\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8ansible%e6%9d%a5%e4%bb%a5%e5%b9%82%e7%ad%89%e6%80%a7%e6%96%b9%e5%bc%8f%e6%9b%b4%e6%94%b9ec2%ef%bc%88amazon-linux-2%ef%bc%89%e7%9a%84ssh%e7%ab%af%e5%8f%a3%e5%8f%b7%e3%80%82\/","name":"\u4f7f\u7528Ansible\u6765\u4ee5\u5e42\u7b49\u6027\u65b9\u5f0f\u66f4\u6539EC2\uff08Amazon Linux 2\uff09\u7684SSH\u7aef\u53e3\u53f7 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-06-20T00:29:16+00:00","dateModified":"2024-04-28T19:55:59+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/6530331a63adef3b3443a1fab53a0e6e"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8ansible%e6%9d%a5%e4%bb%a5%e5%b9%82%e7%ad%89%e6%80%a7%e6%96%b9%e5%bc%8f%e6%9b%b4%e6%94%b9ec2%ef%bc%88amazon-linux-2%ef%bc%89%e7%9a%84ssh%e7%ab%af%e5%8f%a3%e5%8f%b7%e3%80%82\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8ansible%e6%9d%a5%e4%bb%a5%e5%b9%82%e7%ad%89%e6%80%a7%e6%96%b9%e5%bc%8f%e6%9b%b4%e6%94%b9ec2%ef%bc%88amazon-linux-2%ef%bc%89%e7%9a%84ssh%e7%ab%af%e5%8f%a3%e5%8f%b7%e3%80%82\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8ansible%e6%9d%a5%e4%bb%a5%e5%b9%82%e7%ad%89%e6%80%a7%e6%96%b9%e5%bc%8f%e6%9b%b4%e6%94%b9ec2%ef%bc%88amazon-linux-2%ef%bc%89%e7%9a%84ssh%e7%ab%af%e5%8f%a3%e5%8f%b7%e3%80%82\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u4f7f\u7528Ansible\u6765\u4ee5\u5e42\u7b49\u6027\u65b9\u5f0f\u66f4\u6539EC2\uff08Amazon Linux 2\uff09\u7684SSH\u7aef\u53e3\u53f7"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/6530331a63adef3b3443a1fab53a0e6e","name":"\u97f5, \u79d1","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/429ccb39b3fff5188bc17986222cfb0936cbadb8cc933cff04ab5ca01bd30a08?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/429ccb39b3fff5188bc17986222cfb0936cbadb8cc933cff04ab5ca01bd30a08?s=96&d=mm&r=g","caption":"\u97f5, \u79d1"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/yunke\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e4%bd%bf%e7%94%a8ansible%e6%9d%a5%e4%bb%a5%e5%b9%82%e7%ad%89%e6%80%a7%e6%96%b9%e5%bc%8f%e6%9b%b4%e6%94%b9ec2%ef%bc%88amazon-linux-2%ef%bc%89%e7%9a%84ssh%e7%ab%af%e5%8f%a3%e5%8f%b7%e3%80%82\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/42600","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=42600"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/42600\/revisions"}],"predecessor-version":[{"id":79989,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/42600\/revisions\/79989"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=42600"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=42600"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=42600"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}