0

我知道,这个问题被问了很多,但我在使用ssh代理时仍然遇到问题。

我有一个EC2服务器(运行一个简单的 Web 服务器),它位于aws. 并有一个jumphost连接到它。jumphost在公共网络中。我可以登录到 Web 服务器实例的唯一方法是通过jumphost.

所以我~/.ssh/config在本地计算机中创建了如下文件:

Host jumphost
  Hostname <Retracted-Public-IP>
  user ec2-user
  IdentityFile /Users/jananath/.ssh/private-key.pem

我可以登录到jumphostas:ssh jumphost并且可以正常工作。

jumphost上面我配置~/.ssh/config如下:

Host my-web-server
  Hostname <Retracted-Private-IP>
  user ec2-user
  IdentityFile ~/.ssh/web-server-private-key.pem

而且我可以通过 ssh 进入 Web 服务器(来自jumphostssh my-web-server并且它可以正常工作。

我不想jumphost每次需要登录网络服务器时都登录,所以我尝试了代理。

因此,我在本地~/.ssh/config文件中添加了另一个块,如下所示:

Host jumphost
  Hostname <Retracted-Public-IP>
  user ec2-user
  IdentityFile /Users/jananath/.ssh/private-key.pem

Host my-web-server
   ProxyCommand ssh jumphost -W %h:%p

我试过了:ssh my-web-server它给出了以下输出:

kex_exchange_identification:连接被远程主机关闭连接被未知端口65535关闭

有人可以帮我解决这个问题吗?

4

2 回答 2

0

这应该工作:

Host my-web-server
   ProxyCommand ssh jumphost nc %h %p

您也可以尝试:

ssh -oProxyCommand="ssh -W %h:%p jumphost" my-web-server

第三个值得尝试的命令:

ssh -J jumphost my-web-server
于 2021-12-20T17:48:25.320 回答
0

将本地计算机的公钥复制到~/.ssh/authorized_keys远程计算机,而不仅仅是跳转服务器。这将启用从本地机器使用无密码登录ssh -J。如果您的 ip 是 ipv6,请在本地计算机的配置文件中进行以下修改。

Host jumphost
  Hostname Retracted-Public-IPv6
  user ec2-user
  IdentityFile /Users/jananath/.ssh/private-key.pem

Host my-web-server
   ProxyCommand ssh jumphost -W %[h]:%p
于 2022-01-26T07:24:44.897 回答