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>