如何配置 SSH 代理来为用户设置第二跳?

如何配置 SSH 代理来为用户设置第二跳?

如果第二跳需要不同的用户,是否可以使用 SSH 代理连接到 Web 服务器,然后连接到 git 服务器?

如果我明确传递用户名它就会起作用。

$ ssh web.example.com
# connects

  > ssh -T [email protected]
  > # connects

如果我依靠 SSH 配置来设置用户,它不起作用。

$ ssh web.example.com
# connects

  > ssh -T git.example.com
  > # permission denied

这是我的机器上的 SSH 配置。

Host web.example.com
  User blue
  ForwardAgent yes

Host git.example.com
  User yellow

在调试输出中,它表示blue即使配置将用户设置yellow为主机,也要进行身份验证。

debug1: Authenticating to git.example.com:22 as 'blue'

为什么它使用错误的用户?我不想对用户进行硬编码,因为这样整个团队就无法使用相同的部署脚本。

答案1

我更喜欢在我的配置文件中明确设置所有设置,~/.ssh/config并为每台主机指定一个简短的别名。这样我就不需要使用任何命令行标志,只需输入 less 即可ssh Destination完成。

Host web
    Hostname web.example.com
    User blue
    ForwardAgent yes
    AddKeysToAgent yes
    UseKeychain yes                                  # Specific to OS X 
    IdentityFile ~/.ssh/id_rsa.blue

Host git
    Hostname git.example.com
    User yellow 
    ForwardAgent yes
    AddKeysToAgent yes
    UseKeychain yes                                  # Specific to OS X
    IdentityFile ~/.ssh/id_rsa.yellow
    ProxyJump web

ProxyJump是一个相对较新的设置,我发现它比 更直观ProxyCommand。现在ssh git将执行您所需的操作,首先创建一个会话,使用[email protected]作为第一跳,然后使用 隧道传输到下一跳[email protected]

您也可以直接从命令行使用 ProxyJump 命令:

ssh -J [email protected] [email protected]

相关内容