如何使用 ssh 代理转发

如何使用 ssh 代理转发

我有三个系统,一个只安装了 ssh 客户端的客户端,以及服务器 1 和服务器 2。我使用 ssh 公共身份验证,我可以从客户端 ssh 到服务器 1 和服务器 2。我为服务器 1 保存了相同的公钥,现在我想使用代理转发从服务器 1 ssh 到服务器 2,我希望我的私钥只保留在客户端上,请尽快帮助我,我该如何实现这种情况?我使用了这个链接,但不知道怎么做。

SSH 代理转发图解指南:使用代理转发进行公钥访问

答案1

首先你必须调用ssh-agent你的客户端让它记住你的密钥

ssh-agent -t 3600 ~/.ssh/private_key_rsa

(假设您的密钥存储在中,如果您想要无限的生命周期,~/.ssh/private_key_rsa您也可以省略)-t 3600

-A然后你只需使用选项ssh 进入你的一个服务器

ssh -A server1

从那里你将能够 ssh 进入 server2

ssh server2

如果您不想-A每次都指定选项,您可以将以下内容添加到您的~/.ssh/config (在客户端和可选的两个服务器上)

Host server1
 ForwardAgent yes

Host server2
 ForwardAgent yes

这适用于任意数量的服务器。为了简洁起见,~/.ssh/config您可以引入通配符,例如

Host server?
  ForwardAgent yes

答案2

将服务器主机转发到本地主机:

ssh -L localhost:22:localhost:22 user@host

或者

ssh -N -f -L serverhost:22:localhost:22 user@server1

再次阅读你的问题后。

你想通过 ssh 进入 server1:

ssh user@server1

然后你需要通过 ssh 进入 server2:

从客户端进入新终端执行以下操作:

ssh user@server1
ssh user@server2

然后你就有2个连接:

  1. 客户端到服务器 1
  2. 客户端到服务器 1 ==> 服务器 2

如果你想拥有:

  1. 客户端到服务器 1
  2. 客户端到服务器 2 (使用相同的密钥。)

只需执行以下命令。

在客户端:

使用 tmux 或打开 2 个终端

ssh user@server1

在新终端中:

ssh user@server2

答案3

简单的答案是添加-A这样的标志:

ssh -A [user]@[hostname]

相关内容