ssh隧道被中断以解锁密钥-寻找单个命令


1

我正在尝试创建ssh隧道来访问只能通过另一个服务器(B)访问的远程服务器(A)。我在本地计算机(L)上有一个密钥可以到达中继服务器(B),在中继服务器(B)上还有另一个密钥可以到达目标服务器(A)。

[具有中继服务器(B)密钥的本地机器(L)]-> [具有目标服务器(A)密钥的中继服务器(B)]-> [目标服务器(A)]

我的本地计算机(L)上有一个〜/ .ssh / config文件,看起来像这样:

Host relay.server(B)
    Hostname relay.server
    Port 22
    User me
    IdentityFile ~/.ssh/id_rsa

Host destination.server(A)
    Hostname destination.server
    Port 1122
    User me
    IdentityFile ~/.ssh/id_rsa

我可以通过以下方式使隧道正常工作:

ssh -N -L 1122:SERVER_PRIVATE_IP:22 relay.server(B)在本地计算机上运行命令:这会提示我输入密码来解锁第一个钥匙,然后似乎挂起,它没有返回提示,使用该-f选项或以a结尾使&我无法输入密码。但是,如果我^C在输入密码后再输入此命令,然后输入,ssh destination.server(A)我会提示您提供密码以解锁第二个密钥,然后我将其连接到目标服务器(A)。

我正在寻找一个命令,该命令可让我从本地计算机(L)连接到目标服务器(A),并提示我提供解锁每个密钥所需的密码。或提出另一种组织方式的建议,以便我可以通过中继服务器(B)从本地计算机(L)直接连接到目标服务器(A)。


感谢您的澄清。我打算建议-f; 得知它不起作用,我感到很抱歉。(你确定你试过-f没有&?)我的想法; 祝好运。
斯科特(Scott)

Answers:


1

简短的答案是您需要

  • ProxyCommand使用nc连接通过
  • ForwardAgent 传递密钥
  • 确保您的公钥是.ssh/authorized_keys所有服务器上的一部分
Host relay
    Hostname        relay.server.fqdn.or.IP
    User            me
    IdentityFile    ~/.ssh/id_rsa
    ForwardAgent    yes

Host destination
    Hostname        destination.server.fqdn.or.IP
    User            me
    IdentityFile    ~/.ssh/id_rsa
    ProxyCommand    ssh -q relay "nc %h %p"
    ForwardAgent    yes

较长的部分。

ProxyCommand每当使用该附件时,ssh config中的选项都会运行一个命令Host。它通常与ncnmap.org 一起使用,也称为nmap,ncat并且具有很多选项。

在上面Host destination的ssh config条目中,ProxyCommand设置为ssh -q relay "nc %h %p"ssh静默中继并运行nc destination.server.fqdn.or.IP 22

nc 在传入的ssh和目标之间建立连接。

ForwardAgent yes告诉ssh来的键添加到一个ssh代理。ssh代理会跟踪密钥,并用于根据需要自动将正确的密钥传递给主机。该ForwardAgent yes通知代理再次转嫁给继电器另一个代理键,然后到目的地。

现在,要使所有这些工作正常进行,您要跳转到的每台服务器以及最终目的地必须在其.ssh/authorized_keys文件中具有与私钥(id_rsa)关联的公钥。在创建私钥id_rsa时,还应该已经创建了一个公钥id_rsa.pub。

如果您没有公用密钥,则始终可以通过私钥从中获取它,ssh-keygen -y -f ~/.ssh/id_rsa以便于复制/粘贴。请注意,公共密钥具有2或3个以空格分隔的字段,但只有一行。

因此,ssh relay编辑~/.ssh/authorized_keys(可能不存在,因此mkdir -p ~/.ssh可能是必要的),并将公钥粘贴到新行(或第一行,如果不存在的话)上。

在中继服务器上时,检查nc/ bin或/ usr / bin中是否存在。如果不是,那么您将需要使用yum或apt-get包管理器进行安装。

在中继服务器上,ssh destination对进行相同的更新~/.ssh/authorized_keys

exit 一直到您的本地计算机,您应该能够 ssh destination

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.