SSH“反向”ProxyCommand变体

SSH“反向”ProxyCommand变体

SSH“反向”代理命令覆盖

Workstation -> Intermediate <- Server

我的情况恰恰相反......

Workstation <- Intermediate -> Server

我想从工作站 ssh 到服务器,但服务器只能从中间层访问。我可以物理访问非常有限的中间层,但尽管它完全能够执行基本的网络操作,但绝对不足以用于工作。它上面有一个 OpenSSH 客户端,但没有 OpenSSH 服务器,而且获取一个服务器...很困难。

工作站不受限制。它运行的是 Windows 10 Pro 19042 主机和 Linux VM (WSL2)。那里欢迎各种巫术和魔法,我们有大量的 CPU 周期和 I/O 可用。

最后的脚注:可以添加更多网络适配器,中级和工作站都有 USB 端口。(工作站甚至有 Thunderbolt,如果有必要的话,虽然我无法想象它会是什么样子。)

答案1

要按需要连接Workstation -> Intermediate( ),您需要W->I一些类型的服务器I
笔记:反向 SSH 隧道可帮助您克服防火墙设置的(“外部”)障碍,而不是缺乏 SSH 服务器的(“内部”)障碍。

没有 OpenSSH 服务器...检查是否有其他服务器。可能有其他 SSH 服务器(不太可能)。如果有 telnet 服务器(也不太可能),您可以使用。请注意,telnet 是从 Windows Server 2012 R2 / Windows 10 中删除(还),但你仍然可以安装它。不过,安全可能是个问题。

索卡特尚未另一种选择。我不确定您是否可以使用 ssh I->S,但如果您明确说明您有此选项可用,我们可以尝试解决它。

网猫(未加密)尚未另外一个选择. 与上述评论相同。

了解你使用哪种操作系统是很有用的I

答案2

解决这个问题的一个可能有效的方法是在中级运行:

ssh -L 2222:localhost:22 -g serveruser@Server

-g选项允许远程主机连接到本地转发端口。如果 Intermediate 有防火墙,请确保允许端口 2222 通过该防火墙。然后在 Workstation 上运行:

ssh -p 2222 serveruser@Intermediate

如果这不起作用,则在中级尝试:

ssh -R 2222:Server:22 workstationuser@Workstation

然后在工作站运行:

ssh -p 2222 serveruser@localhost

答案3

这已经是老问题了,但我刚刚打了这场仗,我最终从我的工作站中间创建了一个反向代理:

ssh -NTC -i ~/.ssh/my_id_rsa -R 54321:localhost: me@workstation

然后,我设置了中间 .ssh/config 以访问服务器和更远的服务器(下面的所有内容,除了中间的)。

然后,我用相同的跳转设置了我的工作站 .ssh/config(即使这些连接不能从工作站直接访问)和一个额外的配置来从我的工作站到中间件。

Host intermediate
  Hostname 127.0.0.1
  Port 54321
  User me
  IdentitiesOnly yes
  IdentityFile ~/.ssh/my_id_rsa

Host server
  Hostname server
  User me
  IdentitiesOnly yes
  IdentityFile ~/.ssh/my_id_rsa
  ProxyCommand ssh intermediate -W %h:%p

Host farfaraway
  Hostname farfaraway.local
  User me
  IdentitiesOnly yes
  IdentityFile ~/.ssh/my_id_rsa
  ProxyCommand ssh server -W %h:%p

尽管我的工作站无法直接看到或访问服务器或 farfaraway,但它会使用这些确定其路由,并将它们通过隧道推送到中间设备(中间设备确实使用它们)。现在(只要 my_id_rsa.pub)位于所有计算机上的 authorized_keys 文件中,我就可以 ssh 到其中任何一台机器: ssh <destination>

相关内容