如何通过已知的SSH服务器轻松弹跳任意连接,以避免端口防火墙


1

我一直在寻找一种通过已知的SSH代理连接到任意SSH服务器的方法,而无需对这些目标服务器进行硬编码。

例如,假设我无法从当前位置访问github.com,因为端口22是防火墙的,但我可以在家中连接到我的SSH服务器,因为它通过非防火墙端口。配置SSH的最实用的方法是什么,当我明确想要通过我的代理连接时,它会这样做?

我想要一个简单的解决方案一个就像打字一样简单:

$ ssh user@server-i-want-to-connect-to.proxy

一个例子是“ssh user@github.com.proxy”。


1
当你说代理时,你的意思是HTTP代理吗?如果是这样,请检查开瓶器 agroman.net/corkscrew
jackweirdy

不,代理我的意思是你可以连接到的SSH服务器(你拥有的机器)。我发现了一种方法,但我必须等待8个小时才能回答我自己的问题......
sleblanc

Answers:


2

添加这样的东西到你的 .ssh/config

Host *%myproxy
    ProxyCommand ssh username@proxy.example.com /bin/netcat -w 1 $(echo %h | cut -d%% -f1) 22

然后你可以简单地运行一个命令 ssh user@server-i-want-to-connect-to%myproxy。您需要在服务器上安装netcat作为代理。


这几乎就是我要发布的答案(不能因为我需要更多的代表才能在8小时之前发布答案)但是我会将“%p”percent_replace而不是硬编码端口22添加到netcat命令。这允许指定要连接的任意端口号。哦,我用sed代替切割。
sleblanc
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.