Ssh

Ansible 無法通過 ssh 連接到動態創建的 EC2 主機

  • September 16, 2021

我的 Ansible 腳本創建了一台 AWS 機器,然後嘗試連接到它。根據我創建的圖像,SSH 登錄的預設使用者名是“centos”或“ubuntu”等。

我下面的腳本在 wait_for_connection 上失敗,出現“權限被拒絕”錯誤。我認為這是因為 ssh 使用了錯誤的使用者名;控制節點以“userx”身份執行腳本。(我確認我的公鑰在遠端機器上,並且我的匹配私鑰在控制節點上可用)。

如何調整我的腳本以使 ansible 使用正確的使用者名?由於剛剛創建主機,因此我無法在清單中指定它,並且使用者名取決於實例的類型。wait_for_connection 沒有“使用者名”選項

我的腳本:

- name: Create one AWS machine
 local_action:
   module: ec2
   aws_access_key: "{{ aws_access_key }}"
   aws_secret_key: "{{ aws_secret_key }}"
   key_name: "{{ key_name }}"
   group_id: "{{ security_group_id }}"
   instance_type: "{{ instance_type }}"
   image: "{{ ami_id }}"
   wait: true
   region: "{{ aws_region }}"
   zone: "{{ aws_zone}}"
   vpc_subnet_id: "{{ aws_vpc_subnet }}"
   assign_public_ip: yes
 register: ec2

- name: Wait for SSH to come up
 delegate_to: "{{ ec2.instances[0].public_dns_name }}"
 wait_for_connection:
   delay: 60
   sleep: 15
   timeout: 40

我嘗試在 wait_for_connection 之前設置使用者和密鑰文件,如下所示,但 ansible 仍然報告為連接使用者 NONE,並且密鑰文件嘗試不列出我的密鑰文件(/root/.ssh/mykey):

- name: Prepare to connect to new node
 set_fact:
   ansible_user: 'centos'
   ansible_ssh_private_key_file: "{{ private_key_file }}"        

和部分ansible輸出:

<ec2-34-27-194-74.compute-1.amazonaws.com> ESTABLISH SSH CONNECTION FOR USER: None
debug1: identity file /root/.ssh/id_ecdsa type -1

vars您可以使用關鍵字在任何任務、塊或遊戲上設置變數。

- name: Wait for SSH to come up
 delegate_to: "{{ ec2.instances[0].public_dns_name }}"
 wait_for_connection:
   delay: 60
   sleep: 15
   timeout: 40
 vars:
   ansible_user: centos

引用自:https://serverfault.com/questions/1077701