我有一个特定的设置,需要以下步骤序列:
ssh me@host1
ssh me@host2
sudo su otheruser
我有:
- 我的笔记本电脑上有一个 ssh 密钥,可以让我
ssh me@host1
- host1 上的 ssh 密钥允许我
ssh me@host2
.
我愿意不是有权ssh otheruser@host2
.
我的目标是:我可以自动化吗?最好在我的笔记本电脑的 ~/.ssh/config 文件中,这样我就可以简单地执行以下操作:
ssh otheruser
...并让配置处理细节,最好包括密码?
我已经可以通过以下 ssh 配置获得 2/3 的路径:
Host host1
HostName host1.example.com
Host host2
HostName host2.example.com
Host mostly_there
HostName host2.example.com
ProxyJump host1 host2
以上允许我这样做,ssh mostly_there
但我仍然必须这样做sudo su otheruser
。
答案1
您可以在 .ssh/config 中使用它:
HOST host1
user me
HOST host2
USER me
ProxyCommand ssh host1 -W %h:%p
HOST otheruser
USER me
ProxyCommand ssh host1 -W %h:%p
RemoteCommand sudo su -c '/bin/bash -i' otheruser
要使用 otheruser 用户连接到 host2,只需使用:
ssh otheruser
它目前有一个缺点,即它不是一个完整的交互式 shell,但可以通过比/bin/bash -i
答案2
如果您有root权限,您可以将您的公钥部署到otheruser
的authorized_keys 并无需使用密码即可登录。切换后
otheruser
执行此操作:
mkdir -p ~/.ssh
并将您的公钥放入 ~/.ssh/authorized_keys 中。您现在应该能够otheruser
通过执行以下操作来远程登录ssh otheruser@host
。