或者

或者

我的正常流程是这样的:

ssh jumphost
sudo -iHu jump_user
ssh target_user@targethost
Do some task

如何使用 ProxyCommand 执行此操作?我努力了:

ssh target_user@target_host -o ProxyCommand="ssh jumphost 'sudo -iHu jump_user' nc -w 120 %h %p"

但它要求输入密码,因为target_user用户没有更改为jump_useron jump_host。怎么做?我的最终目标是使用它,以便ansible_ssh_common_args我可以在目标服务器上运行任务。

答案1

在我看来你只需要:

ssh -t jumphost 'exec sudo -iHu jump_user exec ssh target_user@targethost'

ProxyCommand只为您提供网络连接,但如果您需要打开用户jumphost,则表明您需要访问jump_user的私钥,在这种情况下,您确实需要ssh以该用户身份运行。

最好的办法可能是避免这种情况并添加你的authorized_keys自己的密钥target_user@targethost,然后你可以这样做:

ssh -j jump_host target_user@targethost

答案2

.ssh/config在跳转主机上创建一个文件:

Host targethost
  User target_user

或者任何适合您的设置的内容。其他设置(例如保活、代理转发、多路复用等)也可以在此处进行配置,以使您的生活更轻松。

man ssh_config是您要查阅的文档。

答案3

当我连接到 Jumphost: 时,我会更改用户ssh jumpuser@jumphost。为此,您需要通过在 Jumphost 中注册公钥来进行设置~jumpuser/.ssh/authorized_keys

或者

将私钥从 Jumpuser 复制到 youruser。缺少此密钥是您的用户无法使用 ssh 的唯一解释(导致远程要求输入密码的唯一解释)。

相关内容