在工作中,我们有一个SSH跳转主机,需要我们使用sudo ssh
SSH进入目标主机。像这样的东西:
ssh jump-host
sudo -u sshuser ssh final-host
我正在尝试将其合并到 ProxyCommand 或类似的 SSH 配置设置中,以便我可以运行ssh final-host
,但我不确定如何或是否可能。
答案1
不,您不能将远程sudo
调用集成到ProxyCommand
in你的用例,但你可以 -sinceOpenSSH 7.6(2018 年 10 月)- 使用:
远程命令
指定成功连接到服务器后在远程计算机上执行的命令。命令字符串延伸到行尾,并使用用户的 shell 执行。
RemoteCommand
接受中描述的令牌的参数代币部分。
.ssh/config
因此,您可以像这样输入:
Host finalhost
RemoteCommand sudo -u sshuser ssh final-host
RequestTTY yes
Hostname jumphost
Host jumphost
User jumpHostUser
... Other options for jumphost, if necessary
这仅适用于终端子系统,因此sftp finalhost
将使您进入跳转主机, 不是最终主持人。git
和其他一些工具不能一起使用最终主持人。
答案2
为什么没有中继脚本?
在跳转主机上有一个脚本goto.sh
sudo -u $1 ssh $2
在本地主机上有一个脚本jump.sh
ssh jump-host goto.sh my-ssh-user $1
然后,从本地主机,只需做
jump.sh final-host
这是假设
- 每个本地用户在跳转主机上都有不同的 ssh 用户
goto.sh
位于跳转主机上的 $PATH 中
答案3
这需要nc
在 FinalHost 上安装:
Host finalhost
proxycommand sudo ssh jumphost ssh finalhost nc localhost 22
首先ssh
是跳转主机,然后是最终主机,它将数据通过隧道传输到本地主机的端口 22,这是您的ssh
命令随后连接到的端口。