又一次服务器异常,如何ssh+vnc远程登录

继上一次Ubuntu矿机问题之后,vnc也出问题了。原来我以为校网比较干净,就什么安全措施都没做。大家都直接可以vnc远程登录,输个密码就OK了,等于没戴套就上床了(捂脸)


事情回忆:

这次隔了一个多星期,没有截图了只能文字表述。

我们的ubuntu服务器有多个人远程登录工作。都是用的tigervnc。vncserver开个口,client一连接就开搞。最近有人反映vncviewer连不上,一连接就显示'too many authentication failure'。  我就自己试验了一下。结果发现,在我刚创建vncserver process的时候是可以连接的。但是等几分钟再连就会报上面的错。后来google了一下发现是安全问题。

这个上面说因为网络里有自动查找server的恶意脚本,当看到你的server某个端口开着的时候就尝试brutal force进去。vnc自己有防御机制。在发现多次尝试失败以后就自动禁止所有外界尝试了。然后我们自己想用的时候request自然也就被拒绝了。相当于多次尝试开机密码失败,就锁机了。

知道了问题症结,就得想解决办法。一般来说远程连接安全的做法就是ssh。但是如果只是ssh user@地址的话,连进去全是命令行,就没有vnc了。那么怎么才能既用ssh又用vnc呢?一下是我google了一下午之后学到的解决办法。(从零开始看,连ssh机理都不懂。。。)


解决办法,ssh+vnc

不熟悉ssh用作机理的小伙伴这里有youtube视频

mit网页上找到一哥们的解决方法,用ssh的port forwarding(不清楚原理的小伙伴看这里这里有视频,讲的很清楚)

他的想法有点绕,我也不知道是不是真的比单单用ssh要安全,但是确实能够用ssh把vnc加密。原理是在建立vnc的时候,用localhost地址来限制Xvnc所接受的来访地址。也就是说,之后server主机的地址才能连接。

$ vncserver :7 -geometry 1280x854 -localhost

这样确实安全了。可是除了服务器大家都连不上啊,那有啥用? 这时候,用ssh远程登录,并且把一个本地的port map到目标地址的vncserver输出口,然后再用vnc client连接本地的那个端口。这就实现了vnc client用本地连接,vnc server只接收本地ip,却能把connect建立起来(好不好放一边,我得承认这哥们很有想法!)

$ ssh -x -e none -L 5902:127.0.0.1:5907 vnc.server.host    # vnc.server.host是服务器的ip

(用ubuntu的话,上面这条命令是在client上打的啊,不是去server上建立ssh的。。。)

要知道vnc打开的connection都是59xx。5902就是2号。5907就是7号。上面的命令等于说“先用ssh登录服务器。再用ssh开一个local port-forwarding,把所有收到的5902的信息全都forward到127.0.0.1的5907端口去”。5907就是vncserver :7。因为已经ssh登陆了,所以系统知道127.0.0.1是服务器的localhost,这样就和vncserver接上了。

ssh连上以后,terminal放着不动就行。这是最后再用vncviewer连接localhost:2,也就是服务器的5902。感觉像绕了一个大圈,但是目前没有在遇到vnc报错的问题。  我不知道我说清楚没有,如果不好理解的话看看视频里的动画应该就能明白了。

最好在把22号端口也给改了,让别人不知道你的ssh端口是啥。


多平台应用

ssh用macOS和ubuntu很好连接。用windows的话有一点点麻烦,需要putty来做port forwarding。这里有视频教怎么弄。普通的ssh命令怎么做,和怎么改port号,在这里可以找到。这里有更多的port forwarding的例子,帮助理解。


最后为了方便备注一下,ubuntu上改port号的那个文件是 /etc/ssh/sshd_config

改过port号之后要重启一下ssh才能生效。

sudo /etc/init.d/ssh restart


感谢一下这位mit牛人的notes。


ref:

https://solveoptimized.com/how-to-resolve-prevent-too-many-authentication-failures-with-vnc/

https://www.youtube.com/watch?v=PXi-39elr6Y&t=190s

http://www.mit.edu/~avp/lqcd/ssh-vnc.html

https://help.ubuntu.com/community/SSH/OpenSSH/PortForwarding

https://www.youtube.com/watch?v=JKrO5WABdoY

https://www.youtube.com/watch?v=7YNd1tFJfwc

https://www.youtube.com/watch?v=DI3G-TfY1wM

https://www.ssh.com/ssh/tunneling/example

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • tigervnc 是client-server的工作模式,默认是不加密的,可以使用ssh forwarding m...
    suenism阅读 1,407评论 0 1
  • http://blog.csdn.net/pipisorry/article/details/52269785 什...
    950545c4cd64阅读 83,434评论 0 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • 我的个人博客:https://lixiaohui.live主要的步骤是有两步的: Step 1: 在CentOs7...
    slixiaohui阅读 18,133评论 4 4
  • 每个人,对人生都有不同的理解。有的人认为一生是白驹过隙、转瞬即逝;有的人认为一生是极度漫长、度日如年。而我认...
    王不之阅读 1,269评论 0 0