Ssh

為每個環境配置 SSH 憑據

  • April 12, 2022

我試圖弄清楚如何使用 Ansible 分別為生產和登台環境配置 SSH 憑據。我知道您可以通過將-ior--inventory-file參數傳遞給ansible-playbook命令,使用不同的清單文件分別配置伺服器 IP 地址和主機名。但是,我看不到ansible.cfg. 目前,憑證存在於/etc/ansible/ansible.cfg

[defaults]
private_key_file=/home/caleb/.ssh/staging_key.pem
remote_user=ubuntu
sudo_user=root
gathering=explicit

如何配置多個 SSH 憑據,一個用於生產,一個用於暫存?

似乎我的第一個答案並不完全正確。雖然當然可以.ssh/config像下面描述的那樣解決它,但似乎也可以使用 Ansibles Behavioral Inventory Parameters來解決。

您應該(根據文件)能夠在您的清單中定義密鑰文件和使用者,無論是每個主機還是每個組。

每組定義:

[some_hosts]
host1.foo
host2.foo

[some_hosts:vars]
ansible_ssh_user=ubuntu
ansible_ssh_private_key_file=/home/caleb/.ssh/staging_key.pem

每個主機的定義:

[some_hosts]
host1.foo     ansible_ssh_user=ubuntu          ansible_ssh_private_key_file=/home/caleb/.ssh/staging_key.pem
host2.foo     ansible_ssh_user=another_user    ansible_ssh_private_key_file=/home/caleb/.ssh/production_key.pem

但是您可以在您的主機中定義多個主機組,.ssh/config並且每個組都可以有其關於密鑰和使用者的單獨設置。

這是一個簡單的例子

#Example with a wildcard
Host *.foo.com
 user ubuntu
 IdentityFile /home/caleb/.ssh/staging_key.pem

#Example with multiple hostnames
Host hostname.one hostname.two hostname.three
 user other_user
 IdentityFile /home/caleb/.ssh/production_key.pem

您也可以定義一個預設值並在以後使用更詳細的設置覆蓋它。

Host *
 user defaut_username

Host somehost
 user special_username

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