多跳的 ssh 配置加上“sudo su”

多跳的 ssh 配置加上“sudo su”

我有一个特定的设置,需要以下步骤序列:

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

相关内容