又一次服务器异常,如何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

你可能感兴趣的:(又一次服务器异常,如何ssh+vnc远程登录)