SSH 通过代理连接服务器
老规矩,先说结论:
或者:
注意:由于 macOS 版 Ncat 的 790 和 791 版本的 bug,上述方式不再生效。起码 791 版本在 macOS 10157 上是不行的。此问题在 792 版本中已经解决。
具体原因参见: https://nmaporg/changeloghtml
但 Linux 上没问题。所以增加个 socat 的替补方案:
Scout 本身很强大,但对代理的支持这部分貌似差一些,只支持 SOCKSv4 和 HTTP Proxy,不支持 SOCKS5。详情参考 《socat 初窥门径》 。
有些时候,由于网络限制等原因,不能直接连通过 SSH 连到指定服务器,需要经过代理进行连接。例如如下场景:
其中,
clientnet 不能直接访问 servernet
clientnet 可以访问 proxynet
proxynet 可以访问 servernet
使用 SSH 的 ProxyCommand 选项,配合 nc/Ncat 命令,实现 clientnet 通过代理 proxynet ,以 SSH 访问 servernet 。
(1) nc
macOS 上常用这种方案。但是 nc 不支持需要认证的代理。
常用参数:
(2) Ncat
Ncat 在 macOS 上通过代理连接时会出现连接断开的情况。
常用参数:
以 nc 为例,如使用 Ncat 可以自行替换。
默认为 Socket5 代理,这时可以省略 -X 参数
或者采用另一种写法:
SSH 配置文件位置:
增加如下两行内容:以 nc 为例,如使用 Ncat 可以自行替换。
使用配置文件之后,就不需要在命令行中进行代理配置了。
对于大部分情况,都可以直接使用 nc 或者 Ncat 解决。但对于一些复杂情况,也可以通过其它方案完成。如在 macOS 上想通过需要认证的代理连接,用 nc 不支持代理认证, Ncat 又有些问题。
对于代理类型的问题,可以通过 Brook 来进行类型转换。
1、 corkscrew
只支持 HTTP 代理
如需要访问带认证的代理服务器:
~/ssh/myauth 的内容:
2、 proxytunnel
只支持 HTTP 代理
命令行里只填用户名,会提示输入密码,或者通过环境变量传入。
(完)
现在很多公司都对内部访问网络做了一些限制,比如不让访问微博,不能上QQ等聊天工具。小编公司就安装了一个上网行为管理的设备,居然在linux下收发邮件都是问题,真不知道这个设备是哪个公司产的,幸亏小编公司在外部有很多服务器可以拿来做代理使用。
幸好有天然的ssh支持socket 5代理,通过ssh进行代理有很多好处:ssh通道是加密的,ssh代理不需要在服务器端安装什么软件因为ssh-server是linux的标配了。
打开终端执行如下命令:
ssh -qTfnN -D 7070 -p 22 user@host
该命令是一个后台命令,执行完毕后输入正确的密码(可以免密码登录)后就可以关闭终端。
以Thunderbird为例设置代理服务器:菜单栏–>编辑–>首选项–>高级–>网络&磁盘磁盘空间–>链接-设置成如下:
1、Ngrok
ngrok 是一个反向代理,通过在公共端点和本地运行的 Web 服务器之间建立一个安全的通道,实现内网主机的服务可以暴露给外网。ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放,所以ngrok可以很方便地协助服务端程序测试。
参考博客:10分钟教你搭建自己的ngrok服务器
2、Natapp
natapp是 基于ngrok的国内收费内网穿透工具,类似花生壳,有免费版本,比花生壳好。免费版本:提供http,https,tcp全隧道穿透,随机域名/TCP端口,不定时强制更换域名/端口,自定义本地端口
参考文章:NATAPP1分钟快速新手图文教程
3、小米球
小米球是基于ngrok二次开发的内网穿透工具,支持多协议、多隧道、多端口同时映射(http、https、tcp等等),同时支持多种系统win、linux、linux_arm、mac等。具体的使用直接参考官网。
4、Sunny-Ngrok
Sunny-Ngrok同样是ngrok二次开发的内网穿透工具,支持http,https协议,同时支持更丰富的系统和语言:linux、win、mac、openwrt、 python、php等。
教程:Sunny-Ngrok使用教程
5、echosite
echosite同样ngrok二次开发的内网穿透工具,支持多种协议,以前是全部免费的,现在推出了收费版和免费版,可根据自己的需要去选择。
参考教程:EchoSite---让内网穿透变得简单
6、Ssh、autossh
ssh 配合autossh工具使用,因为autossh会容错,自动重新启动SSH会话和隧道。autossh是一个程序,用于启动ssh的副本并进行监控,在死亡或停止传输流量时根据需要重新启动它。 这个想法来自rstunnel(Reliable SSH Tunnel),但是在C中实现。作者的观点是,它不像匆匆忙忙的工作那么容易。使用端口转发环路或远程回显服务进行连接监视。在遇到连接拒绝等快速故障时,关闭连接尝试的速度。在OpenBSD,Linux,Solaris,Mac OS X,Cygwin和AIX上编译和测试; 应该在其他BSD上工作。免费软件。
使用教程:SSH内网穿透
7、Lanproxy
lanproxy是一个将局域网个人电脑、服务器代理到公网的内网穿透工具,目前仅支持tcp流量转发,可支持任何tcp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面)。目前市面上提供类似服务的有花生壳、TeamView、GoToMyCloud等等,但要使用第三方的公网服务器就必须为第三方付费,并且这些服务都有各种各样的限制,此外,由于数据包会流经第三方,因此对数据安全也是一大隐患。
参考教程:业余草推荐一款局域网(内网)穿透工具lanproxy
8、Spike
Spike是一个可以用来将你的内网服务暴露在公网的快速的反向代理,基于ReactPHP,采用IO多路复用模型。采用Php实现。
参考教程:使用 PHP 实现的的内网穿透工具 “Spike”
9、Frp
frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。对于 http, https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。
教程:一款很好用的内网穿透工具--FRP、使用frp实现内网穿透
10、Fcn
FCN[free connect]是一款傻瓜式的一键接入私有网络的工具, fcn利用公共服务器以及数据加密技术实现:在免公网IP环境下,在任意联网机器上透明接入服务端所在局域网网段。支持多种系统,有免费版和付费版。
教程:内网穿透工具FCN介绍
上面便是我所知道的内网穿透工具,其中ngrok相关的我基本都用过还有frp,都差不多。大部分都可以免费去使用,但是我不建议大家把这些免费的穿透工具去放到比较重要的云服务器中去使用,容易被攻击。我的小伙伴,开始你的穿透之旅吧。
Proxy-Go 详细介绍
Proxy是golang实现的高性能http,https,websocket,tcp,udp,socks5代理服务器,支持正向代理、反向代理、透明代理、内网穿透、TCP/UDP端口映射、SSH中转、TLS加密传输、协议转换、DNS防污染代理。
Features
链式代理,程序本身可以作为一级代理,如果设置了上级代理那么可以作为二级代理,乃至N级代理。
通讯加密,如果程序不是一级代理,而且上级代理也是本程序,那么可以加密和上级代理之间的通讯,采用底层tls高强度加密,安全无特征。
智能HTTP,SOCKS5代理,会自动判断访问的网站是否屏蔽,如果被屏蔽那么就会使用上级代理(前提是配置了上级代理)访问网站;如果访问的网站没有被屏蔽,为了加速访问,代理会直接访问网站,不使用上级代理。
域名黑白名单,更加自由的控制网站的访问方式。
跨平台性,无论你是widows,linux,还是mac,甚至是树莓派,都可以很好的运行proxy。
多协议支持,支持HTTP(S),TCP,UDP,Websocket,SOCKS5代理。
TCP/UDP端口转发。
支持内网穿透,协议支持TCP和UDP。
SSH中转,HTTP(S),SOCKS5代理支持SSH中转,上级Linux服务器不需要任何服务端,本地一个proxy即可开心上网。
KCP协议支持,HTTP(S),SOCKS5代理支持KCP协议传输数据,降低延迟,提升浏览体验
集成外部API,HTTP(S),SOCKS5代理认证功能可以与外部HTTP API集成,可以方便的通过外部系统控制代理用户。
反向代理,支持直接把域名解析到proxy监听的ip,然后proxy就会帮你代理访问需要访问的HTTP(S)网站。
透明HTTP(S)代理,配合iptables,在网关直接把出去的80,443方向的流量转发到proxy,就能实现无感知的智能路由器代理。
协议转换,可以把已经存在的HTTP(S)或SOCKS5代理转换为一个端口同时支持HTTP(S)和SOCKS5代理,转换后的SOCKS5代理不支持UDP功能,同时支持强大的级联认证功能。
自定义底层加密传输,http(s)\sps\socks代理在tcp之上可以通过tls标准加密以及kcp协议加密tcp数据,除此之外还支持在tls和kcp之后进行自定义加密,也就是说自定义加密和tls|kcp是可以联合使用的,内部采用AES256加密,使用的时候只需要自己定义一个密码即可。
底层压缩高效传输,http(s)\sps\socks代理在tcp之上可以通过自定义加密和tls标准加密以及kcp协议加密tcp数据,在加密之后还可以对数据进行压缩,也就是说压缩功能和自定义加密和tls|kcp是可以联合使用的。
安全的DNS代理,可以通过本地的proxy提供的DNS代理服务器与上级代理加密通讯实现安全防污染的DNS查询。
Why need these
当由于安全因素或者限制,我们不能顺畅的访问我们在其它地方的服务,我们可以通过多个相连的proxy节点建立起一个安全的隧道,顺畅的访问我们的服务
微信接口本地开发,方便调试
远程访问内网机器
和小伙伴一起玩局域网游戏
以前只能在局域网玩的,现在可以在任何地方玩
替代圣剑内网通,显IP内网通,花生壳之类的工具
代理服务器主要类型:
HTTP代理:最简单的一种代理形式,能够代理客户机的HTTP访问,上网浏览网页使用的都是HTTP协议,通常的HTTP代理端口为80、3128或8080端口。
SOCKS代理:SOCKS代理与HTTP等其他类型的代理不同,它只是简单地传递数据包,而并不关心是何种应用协议,既可以是HTTP协议,也可以是FTP协议,或者其他任何协议,所以SOCKS代理服务器比其他类型的代理服务器速度要快得多。SOCKS代理又分为SOCKS4和 SOCKS5,二者不同的是SOCKS4代理只支持TCP协议(即传输控制协议),而SOCKS5代理则既支持TCP协议又支持UDP协议(即用户数据包协议),还支持各种身份验证机制、服务器端远程域名解析(解决DNS污染就靠这个了)等。SOCK4能做到的SOCKS5都可得到,但SOCKS5能够做到的SOCKS则不一定能做到。目前SOCKS5是最常用的一种SOCKS代理。
一、如何使用HTTP代理服务器
HTTP代理服务器的设置方法,对于IE和FireFox设置略有不同。设置前需要先找一些可用的免费代理服务器地址。
1、IE的设置是这样的,打开IE浏览器,选择菜单栏的“工具/Internet选项”。
这时候分两种情况,对于ADSL拨号用户来说,选择一个网络连接后,点“设置”,如下图所示,选中代理服务器,填入地址和端口号。
2、对于局域网用户来说,需要点“局域网设置”,如下图所示,选中代理服务器,填入地址和端口号。
FireFox的设置和IE类似,打开FireFox浏览器,选择菜单栏的“工具/选项”。
这时选择“高级/网络”,点设置,就出现下面的界面,就可以进行代理服务器的设置了,选中“手动配置代理”,然后填写代理服务器的地址和端口。
二、如何使用SOCKS代理服务器
这里就到重点内容了,SOCKS代理是目前功能最为全面,使用最为稳定的代理服务器,我目前上网就只用SSH搭建SOCKS代理服务器上网,访问网络没有任何限制。下面我就着重讲一下如何使用SOCKS代理服务器。
用SSH搭建SOCKS代理上网,建议使用Firefox浏览器,因为Firefox支持SOCKS代理远程域名解析,而IE只能通过类似SocksCap这样的第三方软件实现,不是很方便。
配置Firefox浏览器
1、在Firefox设置SOCKS远程域名解析,主要是为了防止DNS污染,具体设置方法是,在Firefox地址栏中,输入 about:config ,按确认,修改里面的一项数值,改成 networkproxysocks_remote_dns=true 就可以了。
2、然后,打开FireFox浏览器,选择菜单栏的“工具/选项”。选择“高级/网络”,点设置,就出现下面的界面,就可以进行代理服务器的设置了,选中“手动配置代理”,然后在SOCKS主机上,填写代理服务器的地址127001,端口1080,SOCKS类型选择“SOCKS V5”,这时Firefox就配置结束。
设置SSH
配置好了Firefox,就该配置SSH了,安全外壳协议(Secure Shell Protocol / SSH)是一种在不安全网络上提供安全远程登录及其它安全网络服务的协议。常用的SSH工具有开源软件PuTTY,支持SSH远程登录的主机可以实现socks5代理服务器的功能,不过在PuTTY中没有配置文件,需要手动设置才能实现,且无法保存,而PuTTY完整版自带的pLink可以实现命令行方式调用PuTTY实现SSH的加密通道。
具体的方法是,去PuTTY官方网站下载pLink这个文件,pLink的调用参数是:plink -C -v -N -pw 密码 -D 本地端口 远程用户@IP或域名:远程希望打开的端口。
新建一个文件,写入以下内容,另存为pLinkbat批处理文件,并放在Putty的安装目录内。
@plink -N Username@sshServer -pw Password -D 127001:1080
请将Username sshServer Password三处改为用户自己登陆SSH服务器的用户名、服务器地址和密码。这个SSH帐号可以通过多种方法获得,例如用户购买了某些国外主机空间或VPS就会有SSH帐号,或者在淘宝网也有SSH帐号出售,我自用的SSH帐号是用每年100美元购买虚拟主机时赠送的,通常SSH帐号的价格大约是每年几十元人民币左右,也有少量国外网站提供免费的SSH帐号。
执行这个批处理文件,保持其窗口开启,一旦关闭窗口代理便失效。然后打开已经配置好127001:1080的Socks5代理的Firefox浏览器,就可以使用SOCKS代理服务器上网了。
其他设置技巧
为了方便代理服务器的快速切换,我推荐两个FireFox代理服务器扩展,一个是QuickProxy,可以实现一键切换代理功能,QuickProxy安装后在状态栏有一个按钮,点击后可以启用、关闭Firefox浏览器的默认代理设置,可以快速在代理和非代理之间切换,很方便。界面如下图所示。另一个是AutoProxy,通过一份无法访问的域名列表目录,实现自动在代理和非代理之间切换,该域名列表目录由志愿者手动维护。AutoProxy还可实现自定义您自己的代理规则;订阅规则列表;自定义代理服务器等功能。使用AutoProxy的时候需要注意,点“代理服务器-编辑代理服务器”,将ssh -D的端口由7070修改为1080,点“代理服务器-选择代理服务器”,将ssh -D设置为默认。
设置完成了之后,你就可以自由自在地在开放的互联网上傲游了。
由于某些原因,我们想上国外的网站而上不了,想在国外网站上学习,下载资料很不方便。一般来说,想要上国外网站,必须要准备三个工具,一个是浏览器,二是代理服务器(包括:***拨号方式,SSH代理,等等其它代理)三是使用代理服务器平台的小工具。下面小编来简单介绍怎么上国外网站的基本方法,希望能对大家有所帮助。
工具/原料
火狐浏览器,免费SSH帐号
myentunnel-unicode-352-obfuscated工具软件
下载免费SSH帐号
1
打开“百度”,在搜索栏搜“sshcenter”,进入网站进入免费申请帐号网页界面,申请SSH帐号。
2
进入申请注册页面,填写用户名,密码,按照网站注册的流程走,很简单的,不在此一步步说明了。注册好SSH帐号,记好用户名跟密码。
END
准备下载好myentunnel工具软件
1
在百度搜索栏搜“myentunnel-unicode-352-obfuscated”,352目前是最新版本,选择最前面几个下载地址下载好。
2
打开myentunnel工具界面,大家要注意下,打开后,会有一个小图标在右下角的任务栏当中,不要一直点执行文件因为没有弹出的窗口,我们要右键单击任务栏一个像锁似的的图标,选择显示就ok了。
3
出现设置的界面后,我们选择栏目”设定“,ssh服务器,跟端口一般都是默认的,如果没有默认请自己设置如下图所示。填写好我们刚才申请好的SSH免费帐号用户名跟密码,本地端口选择一个自己电脑还没用到的端口,比如7070,勾选好如下图所示的勾选,然后点击保存,再点击连接,如果中途有弹出其它的对话框,请选择”yes“,就好了。
准备好火狐浏览器
1
安装好火狐浏览器后,我们来设置它,在火狐地址栏输入:about:config 点击下面我保证会小心按钮。在下面搜索栏,输入“dns”,来设置好dns 。
选择:networkproxysocks_remote_dns 栏目 ,右键选择切换按钮,把默认的false,改成 true。
2
在浏览器上面选择“工具”-》“选项”-》“高级”-》“网络”-》“设置”-》“手动配置代理”。在栏目SOCKS上填写“localhost”也就是本机主机,端口设置:7070 勾选下面的SOCKSv5选项。点击确定就“ok”了。
注意:火狐浏览器不需要下载其他插件了,就按刚才上面的办法设置就好了。
0条评论