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

理查德·阿克顿

我正在尝试创建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)在我的本机(L)上执行命令:这会提示我输入密码以解锁第一个钥匙,然后似乎挂起,它没有返回提示,使用该-f选项或以a结尾使&我无法输入密码。但是,如果我^C在输入密码后再输入此命令,然后输入,则系统ssh destination.server(A)会提示我提供密码以解锁第二个密钥,然后我将其连接到目标服务器(A)。

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

频闪灯

简短的答案是您需要

  • 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 destinationssh 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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

单个命令中的多个 ssh

来自分类Dev

登录时解锁 ssh 密钥

来自分类Dev

SSH密钥在隧道中丢失

来自分类Dev

通过单个命令在SSH上运行htop

来自分类Dev

如何使用-L命令进行SSH隧道?

来自分类Dev

在SSH隧道内发送Telnet命令

来自分类Dev

在不运行ssh命令的情况下创建SSH隧道

来自分类Dev

su-自动解锁ssh密钥

来自分类Dev

在shell脚本中检查单个SSH隧道的过程?

来自分类Dev

如何在单个命令中将ssh + bash放入Docker容器

来自分类Dev

单个命令即可登录SSH并运行程序?

来自分类Dev

允许用户以root身份通过ssh运行单个命令

来自分类Dev

如何在单个命令中将ssh + bash放入Docker容器

来自分类常见问题

我可以使用SSH隧道转发MySQL命令吗?

来自分类Dev

用于本地(非远程)命令执行的ssh隧道

来自分类Dev

在一个命令中通过SSH隧道运行rdesktop

来自分类Dev

ssh隧道传输后在本地执行命令

来自分类Dev

Git在错误的位置寻找我的SSH密钥

来自分类Dev

即使使用ssh-add,SSH密钥也不会被解锁

来自分类Dev

ssh命令消失后,如何在ssh服务器上关闭远程ssh隧道端口?

来自分类Dev

交换密钥后ssh命令崩溃

来自分类Dev

登录后如何自动解锁SSH密钥环

来自分类Dev

SSH隧道和SSH连接停留在控制台后在本地执行命令

来自分类Dev

寻找使用普通用户帐户时执行单个sudo命令的更好解决方案吗?

来自分类Dev

SSH反向隧道-使用密钥验证时禁用密码请求

来自分类Dev

我可以将这些SSH隧道命令合并为一个命令吗?

来自分类Dev

在命令行中运行命令时,系统SSH隧道服务失败

来自分类Dev

VPN隧道与SSH隧道

来自分类Dev

单个DNS名称后的许多主机的SSH密钥验证

Related 相关文章

热门标签

归档