问题记录:本机无法通过xshell连接在虚拟机安装的ubuntu-18.04.1系统

虚拟机软件:VMware Workstation 15 Pro

ubuntu系统:ubuntu-18.04.1-desktop-amd64

xshell版本:  xshell 4

       由于要学习spark以及scala,找到的入门教程是使用linux系统操作,于是就在虚拟机上安装了教程中推荐的ubuntu系统,对纯命令行的系统操作不是很熟练,就下载了桌面版系统。在安装ubuntu系统的时候还遇到了小插曲:在优麒麟(中国人定制过的ubuntu桌面系统)上下载的系统镜像每次在VMware上安装完后都提示“Please remove the installation medium, then reboot”,然后我就照办把关联的系统镜像给移除(remove)了,但是每次重启后都是黑屏,根本无法进入系统,网上还找不到答案。走投无路,只好去ubuntu官网下载了桌面版系统,安装完后一样的提示,但是我移除关联的系统镜像后就进入桌面系统了,嘿,还真神奇,下次首选官网,不信特别定制版。下图就是移除系统镜像后的虚拟机设置。

问题记录:本机无法通过xshell连接在虚拟机安装的ubuntu-18.04.1系统

       回到正题,由于在虚拟机和原系统中鼠标焦点不好切换,看教程的时候不方便切换窗口打代码,就想在原系统使用xshell连接虚拟linux系统。在虚拟机安装完openssh-server后,查到虚拟机的IP(虚拟机网络是使用最简单的NAT模式)后就开始使用xshell进行连接,然后问题就出现了。

       xshell的报错信息为

Connecting to 192.168.86.189:22...
Connection established.
Escape character is '^@]'.

Connection closed by foreign host.

       然后就进行了漫长的google之路(百度搜索这类技术问题确实差一点,下次能不用百度搜索技术问题就不搜,浪费时间,不过搜索娱乐信息百度倒是不错),中间历经曲折,找了4-5种方案(有修改虚拟机配置的,也有修改xshell连接配置的),逐一试过都不行。自己也先使用排除法去掉了一些网络不通的情况,因为本机能跟虚拟机ping通,然后telnet也能连接(虽然连接上刚想操作就断了)。最后才意识到xshell上报错信息有可能比较片面,不能具体定位到自己的问题,要到虚拟机上找问题才是根本。这时才开始想起找ssh日志,ubuntu现在ssh的日志路径在/var/log/auth.log。然后再根据日志打印的信息去搜索问题,果然感觉就对了。

       报错信息为:Unable to negotiate with .......:no matching cipher found.Their offer:aes123-cbc,3des-cbc,blowfish-cbs........

问题记录:本机无法通过xshell连接在虚拟机安装的ubuntu-18.04.1系统

       根据关键字“Unable to negotiate”去google查了一下,果然发现目标了,根据这篇文章找了一下虚拟机的配置文件/etc/ssh/sshd_config,就是没有这部分东西,那就果断加上去。大概意思是原来xshell连接不了是因为没有指定加密算法,需要在配置文件指明加密算法。

问题记录:本机无法通过xshell连接在虚拟机安装的ubuntu-18.04.1系统

        原样复制粘贴后虽然有了新问题,但是报错信息变了,这就表示改对地方了,之前试了那么多次修改虚拟机的报错信息就没变过。这次是修改完配置后在重启ssh服务的时候报错了,这个报错信息关键点是圈住部分(这个也是拿报错信息在网上找的时候网友提示的),意思是执行这一步的时候出了问题,那我们可以试试单独执行这个命令看会有什么结果。

问题记录:本机无法通过xshell连接在虚拟机安装的ubuntu-18.04.1系统

       单独执行命令:/usr/sbin/sshd后又发现了一些信息,系统提示我们配置文件/etc/ssh/sshd_config第123行有错,哦,那不是之前加的那段加密算法配置吗,看来直接粘贴有问题,于是再次追寻答案。最终找到了这篇文章https://www.kingzcheung.com/archives/116.html,根据这篇文章的操作获取了正确的配置信息,然后修改,再重启ssh服务,ssh服务没问题了。

问题记录:本机无法通过xshell连接在虚拟机安装的ubuntu-18.04.1系统

        这是最终版关于加密算法的配置,还去掉了“spec”关键字,下面两个没什么影响就先放着,等以后有问题再改,只修改了Ciphers的配置。

问题记录:本机无法通过xshell连接在虚拟机安装的ubuntu-18.04.1系统

       本来想这样应该没问题了,果然不再报之前那个错误(“Connection closed by foreign host.”)了,只是不断让我输入密码。我确信密码是没问题的,就去找了其他问题,最后定位到xshell是默认root用户不能连接服务器,而我就是用root用户,于是再修改一下配置,让root用户也能登录,这样这个问题就解决了。

问题记录:本机无法通过xshell连接在虚拟机安装的ubuntu-18.04.1系统

       整个过程很曲折,感觉很多软件版本变更都会导致一些小问题,自己查找问题能力较弱,也不会触类旁通,感觉浪费了挺多时间。不过浪费的时间必须通过这次获取的经验在以后赚回来,经验总结如下:

①定位问题还是要多找日志。

②要学会从报错信息提取关键点,比如就是在某个地方执行某一步的时候报错,那这个就是关键点。