利用Ansible的多级SSH,在常规SSH命令和ControlPath上共享

使用Ansible的多级SSH,在常规SSH命令和ControlPath之间共享

如果在使用常规的SSH命令连接堡垒服务器时,在使用Ansible共享连接时遇到问题,请按照以下步骤进行操作。由于ansible.cfg的默认设置中,ControlPath具有独立的设置,因此我们需要将其更改为共享设置。
详细信息请参阅:http://docs.ansible.com/ansible/intro_configuration.html#control-path

[本地主机] -> [step.example.com] -> [目标.example.com]

### 読み込んでくれる場所にansible.cfgを置く(今回はカレントディレクトリ)
### 読み込み優先順位の参考: http://docs.ansible.com/ansible/intro_configuration.html
$ vim ansible.cfg
[ssh_connection]
control_path = ~/.ssh/controlmaster-%%r@%%h:%%p
ssh_args = -o ControlPersist=15m -F ssh_config -q

### ssh_configを編集 (ansible.cfgのssh_argsで指定されている設定ファイル)
$ vim ssh_config
# MacOS Sierraでの設定変更回避のオプションも含まれます
HostkeyAlgorithms ssh-dss
AddKeysToAgent yes
ForwardAgent yes

# 対象サーバへのssh設定
Host destination.example.com
  ProxyCommand ssh step.example.com nc %h %p

# 踏み台サーバへのssh設定# 
# ControlPersist 10は通常のsshで使うときの便利のため、切断後10秒でコネクションが消える
Host step.example.com
  ControlMaster auto
  ControlPersist 10
  ControlPath ~/.ssh/controlmaster-%r@%h:%p
### ControlMasterを作成するためにsshする際は、先ほどのssh_configを参照して作る
$ ssh -F ssh_config step.example.com

### 上記sshセッションをオープンしたままansibleを実行すると、その接続を利用してansibleを実行してくれる
$ ansible-playbook -i hosts example.yml -K
广告
将在 10 秒后关闭
bannerAds