air*_*aft 3 ssh openssh ssh-tunnel ansible
Ansible 使用 OpenSSH 作为底层网络通信实现,但是它支持多跳登录吗?
我的意思是,如果 Ansible 可以直接登录服务器,但是它可以登录 server_a 然后从 server_a 登录 server_b 来配置 server_b 吗?
我不知道 Ansible 如何使用 OpenSSH。
但是 OpenSSH 本身支持“多跳登录”。
从 OpenSSH 7.3 开始,您可以使用-J(跳转)开关,例如:
ssh -J user1@host1.example.com user2@host2.example.com
Run Code Online (Sandbox Code Playgroud)
该-J是同等ProxyJump指令:
ssh -o ProxyJump=user1@host1.example.com user2@host2.example.com
Run Code Online (Sandbox Code Playgroud)
请注意,文件传输工具,如scp和sftp,该-J开关,因为只有8.0的支持。对于旧版本(但至少 7.3),请使用ProxyJump. 请参阅如何从我只能通过另一台主机通过 SSH 连接的主机下载文件?
另请注意,这些版本是指 OpenSSH 的本地版本。与远程版本的 OpenSSH 无关。
正如@GordonDavisson 评论的那样,对于旧版本(但至少是 5.4),您可以使用ProxyCommand指令和-W开关:
ssh -o ProxyCommand="ssh -W %h:%p user1@host1.example.com" user2@host2.example.com
Run Code Online (Sandbox Code Playgroud)
对于更旧的版本,您可以使用nc命令而不是-W:
ssh -o ProxyCommand="ssh user2@%h nc host2.example.com 22" \
-o HostKeyAlias=host2.example.com \
host1.example.com
Run Code Online (Sandbox Code Playgroud)
Wikibooks 文章OpenSSH/Cookbook/Proxies 和 Jump Hosts中详细介绍了上述所有选项 。
另一种选择是使用端口转发(-Lswitch)。但这涉及两个ssh实例。我不确定 Ansible 是否可行。
| 归档时间: |
|
| 查看次数: |
1255 次 |
| 最近记录: |