SSH如何通过proxy进行服务器连接

openssh是什么这里不做解释,但凡是用过linux系统的一般都是会了解这个的,毕竟openssh都是系统自带的应用。

openssh一般都是指linux上的客户端,很多linux系统自有客户端的ssh没有服务器端的ssh,为此我们可以手动安装服务器端的ssh:

sudo apt install openssh-server

 

 

===========================================

 

 

最近在家想着通过自己的linux主机直接访问校园网的内网,但是学校的vpn客户端只有Windows版本和Mac版本,不能把这个vpn客户端安装到linux主机上,因此不能直接通过linux主机访问学校内网。

于是想到Windows主机上运行的proxy客户端,由于工作的需要,自己的Windows主机是一直都有运行proxy客户端的,这个客户端就是:

 

 

 

 

 

 

 

由于这个proxy客户端是可以接受局域网中其他主机的sock5请求的,因此平时我在这个linux主机也是通过这个Windows上的proxy客户端转发sock5的信息来实现特种上网的:

 

 

 

 

 

既然平时可以通过系统的sock5代理设置实现通过Windows上的proxy进行特种上网,那么是不是也同样可以支持ssh的proxy连接呢?

于是手打命令:

ssh devil@210.35.97.210 -p 53666

结果的显示是无法连接。

 

 

想了半天也没有想出一个比较靠谱的解释,最后也只能得到一个结论,那就是认为这个ssh默认的网络连接是不支持sock5的proxy的,既然这样那就不能通过系统的默认sock5的proxy是ssh进行proxy连接,那也必然有其他的设置方法。

 

 

现有的网络情况为:

 

 

 

 

=============================================

 

 

经过在网上的查找资料终于发现如何设置ssh通过proxy连接服务器了:

给出一个使用proxy的Demo命令:

ssh -o ProxyCommand='nc -x 192.168.1.105:1080 %h %p'  devil@210.35.97.210 -p 53666

 

如果不使用proxy的话,命令为:

ssh  devil@210.35.97.210 -p 53666

 

 

 

也就是说ssh如果使用proxy需要加的命令为:

-o ProxyCommand='nc -x 192.168.1.105:1080 %h %p'

其中,-o ProxyCommand=  是必备的。

nc是应用netcat的缩写,

-x 后面跟着proxy的IP和端口,

%h %p  这里的含义不清楚,有种解释说是指目标主机地址和端口。

192.168.1.105 指proxy的地址和端口。

 

 

 

实际效果证明:

ssh -o ProxyCommand='nc -x 192.168.1.105:1080 %h %p'  devil@210.35.97.210 -p 53666

 

这个命令在192.168.1.104的Ubuntu主机上执行,成功的连接到192.168.1.105的proxy上,并通过192.168.1.105上的校园vpn客户端访问到了校园网内的深度服务器。

 

 

 

 

 

 

加入保活参数后无法运行:

ssh -o ProxyCommand='nc -x 192.168.1.105:1080 %h %p'  devil@210.35.97.210 -p 53666  ServerAliveInterval=60

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

校园VPN客户端:

 

 

 

 

 

 

 

 

 

Windows上的proxy:

 

 

 

 

 

===========================================================

 

 

参考:

https://ieevee.com/tech/2017/10/19/ssh-over-socks5.html

https://blog.csdn.net/ASX20042005/article/details/7041294

 

posted on 2022-10-18 15:07  Angry_Panda  阅读(1913)  评论(0编辑  收藏  举报

导航