我有三个系统,一个只安装了 ssh 客户端的客户端,以及服务器 1 和服务器 2。我使用 ssh 公共身份验证,我可以从客户端 ssh 到服务器 1 和服务器 2。我为服务器 1 保存了相同的公钥,现在我想使用代理转发从服务器 1 ssh 到服务器 2,我希望我的私钥只保留在客户端上,请尽快帮助我,我该如何实现这种情况?我使用了这个链接,但不知道怎么做。
答案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 (使用相同的密钥。)
只需执行以下命令。
在客户端:
使用 tmux 或打开 2 个终端
ssh user@server1
在新终端中:
ssh user@server2
答案3
简单的答案是添加-A
这样的标志:
ssh -A [user]@[hostname]