来自:http://www.zhihujingxuan.com/19311.html
【scotttony的回答(41票)】:
VPN和ssh哪个比较好,
要看你怎么定义是“好”。
ssh作为一个创建在应用层和传输层基础上的安全协议,位于网络协议的较高层(相对于VPN来说)。我使用ssh一般作为socks5代理(有人说是位于会话层,未经证实)。将http的报文封装在ssh的数据包里,在客户端和服务器之间传输。
ssh代理用起来很方便,搭配火狐的autoproxy扩展之类,可以很容易做到哪些网站通过ssh访问,哪些不使用ssh,非常灵活,轻量级。
VPN好的地方在于,他更全能。实际大规模使用的VPN至少有四种:PPTP,L2TP,OpenVPN,IPSec。其中L2TP和PPTP作为最老牌的vpn,是工作在OSI七层模型的数据链路层,从下往上第二层,是一个非常底层的网络通信协议,作为底层的隧道技术有什么好处呢,它们 完全不需要上层客户端做任何修改,不需要客户端支持设置代理,不需要客户端做什么设置,不需要客户端任何改变,之前你怎么使用的网络,还是怎么使用。它从底层模拟了vpn服务器的网络环境,给使用网络的上层应用造成了一种假象,让它们以为自己就是在VPN服务器所在的局域网中,没有wall,没有reset,一切都那么美好。
vpn的全能也是有代价的,那就是相对于ssh来说,VPN不够灵活,默认情况下,你连上某个vpn,系统所有的网络流量都会从那个VPN连接走,很多时候是不必要的,例如上国内网站的时候,你总不希望你看到的视频内容是从youku连到国外vpn服务器,再从vpn服务器走回到国内你的客户端吧,绕了一圈,丢包率和延时直接上了一个台阶。
当然你也可以手动改路由表,选择哪些流量走vpn,哪些直连,但是这个要比ssh应用规则相对复杂。
openvpn和Ipsec不大了解,有人说ipsec位于网络层,本人未证实。我在这里抛砖引玉。
为什么VPN比SSH繁荣?
我想vpn比ssh繁荣由上面的分析来说,已经是显而易见,因为ssh做不了的事情,VPN都可以做;而ssh能做的,VPN也统统能做。
举个例子,国内是上不了推特的,你用ssh代理当然可以通过浏览器上推特,但是我更喜欢像qq那样的客户端上推特,你装上这样的推特客户端,输入用户名,密码,然后就。。。。Oops
你点开客户端的设置选项,大多数情况下,你是找不到代理设置选项的,这时候怎么办?ssh君表示无能为力啊。
这时候我们的VPN上场了,交给我,连上VPN,一切都是那么美好,不仅仅是浏览器,客户端程序也可以连上推特啦啦啦。
还有很多场景,比如某些游戏只能美国ip才能进去玩,那么也只有VPN可以。
补充一点:
其实ssh只是代理的一种,代理有很多种,例如http代理,反向代理等,这些之所以在国内的网络环境里不堪大用,主要是因为他们内容传输都是使用明文,不加密的内容很容易被第三方嗅探,然后截断连接,一般情况下,你猜谁会干这个事情???
ssh和vpn都是加密传输,相对安全,在国内恶劣的网络环境下,总算能够生存。
【lookwatchsee的回答(19票)】:
首先,我猜你是想比较VPN和SSL. ssh是一个remote shell 是基于SSL的一种应用,尽管很多人用ssh的转发功能 但是本质上,并没有使用shell, 只是利用了sshd这个软件的SSL proxy的功能。
其次,SSL本身就是VPN的一种,称之为SSL VPN, VPN是外延更广的概念,也不能放在一起比较。
所以我猜你所说的vpn是非SSL VPN,很可能是IPsec,L2TP和PPTP这种基于GRE tunnel的VPN(也有基于其他类型的tunnel 比如ip-ip 或者根本就在tunnel里的,但典型的,是基于GRE tunnel的)。
那么接下来比较一下tunnel-based VPN和SSL VPN。
SSL VPN 的最大好处就是天生可以穿越NAT。因为SSL工作在TCP/UDP之上,有端口号,可以被NAT复用。SSL非常适合远程登陆,也就是client-gateway模式。要知道你在家里面上VPN一般来说肯定是要经过你们家路由器的NAT的,在这方面SSL有先天的优势。缺点也很明显,SSL/TCP VPN本身有TCP melt down的问题(简单的说就是性能太差),web SSL只适合与访问网站。DTLS即SSL/UDP倒是一个方向。
而tunnel-based VPN 穿越NAT需要有专门的feature,比如IPsec有NAT-T。即把数据报文包裹在UDP:4500包里面而不是简单的GRE tunnel,当然如果这么做,其实和DTLS就有点像了。tunnel VPN因为在处理包的时候只看到IP的头(顶多再看看UDP的8字节头部),而且数据通道是无状态的,因此速度特别快。我这么说并没有考虑加解密的开销,因为无论是SSL VPN还是tunnel VPN,加解密现在一般都是专门的硬件来做了。
至于面向远程用户的易用性,SSL VPN除非是client-less模式(应用并不是很多),还是要安装客户端,反而tunnel VPN在主流的操作系统上native支持。比如MAC支持IPsec,LT2P,PPTP,Andorid支持PPTP和L2TP,等等。
因此对于远程登录用户来说,现在SSL相比较Tunnel VPN并无明显优势。
但是有一个优势SSL VPN的一个分支也就是sshd proxy这种技术门槛比较低,一般的用户很容易就可以学会用sshd来搭一个转发服务器。
至于企业用户,tunnel VPN的优势就太大了。像IPSEC的企业网技术远远不是SSL VPN所能达到。比如DMVPN,GETVPN。而且企业网更注重性能。
运营商级别的就不谈了。
所以SSL的应用,现在还不能和tunnel-based VPN相比。
【知乎用户的回答(0票)】:
最令人头痛的问题是SSH不支持”多重链路协议“的并发,链接太多的时候某个链接出问题就卡壳了。需要重新登陆服务器才能恢复正常。
【知乎用户的回答(0票)】:
我猜题主大概是想问跳墙的效果哪个好?是的话继续往下看,不是就不用管我了。
涉及到具体的协议方面的东西我不是太懂,我紧紧从应用上来说。
速度来说,主要看你的网速。因为一般来说买的收费的服务网速都是没问题的。
实用性来说,我觉得ssh更好,局部代理方便。毕竟大多数时候我们只是需要访问那些国外网站才会用到,挂个vpn的话有点划不来,致使国内的网站访问受影响。但是很多软件是不支持设置socks5代理的,这个时候你就需要vpn了。代表场景就是软件要内部连接国外某些服务,还有打游戏。
综合来说,还是买ssh+vpn一号通的服务吧。搜ssh代理,很多服务商都是提供这种一号通服务的。既可以用ssh,也可以用vpn,根据自己的实际使用情况来使用。
我自己现在用的就是这种。
---------------------------------------------------------------------------------------------
以上说的都是普通用户的情况,不考虑自己动手弄ssh然后搞个全局代理或者弄vpn搞个路由表。
毕竟普通用户大概是不想这么折腾的。
【逸山的回答(0票)】:
就FQ而言,vpn适合全局FQ,ssh适合智能FQ。
【知乎用户的回答(0票)】:
另一个原因ssh用户登录的权限比较大 对系统危害大,系统要是有个权限漏洞就悲剧了
【张峥的回答(0票)】:
ssh似乎只能建立一个连接,看图片多的网站,加载很慢,一个图片卡住,后边的都要排队等着超时。
原文地址:知乎