前言
因为我的 Ubuntu 虚拟机是新装的,并且应该装的是比较纯净的版本(纯净是指很多工具都尚未安装),然后在使用远程连接工具 XShell 连接时出现了很多问题,这些都是我之前没遇到过的(因为之前主要使用云服务器),因此记录一下,这样以后遇到类似的情况会少走很多坑。
远程连接失败
情况如下:
从结果上不难看出,我们能够连到我们的虚拟机 ip(尝试 ping 也是没有问题),但是连接失败了。
这是因为我们的虚拟机尚未安装 openssh-server(Ubuntu 操作系统版本,如果你使用的是 CentOS 或者是其它的版本,请自行搜索嗷)。
我们使用下面的命令进行安装:
sudo apt-get install openssh-server
安装完成以后,我们就可以连通了,但是又会出现下面的问题。
明明密码正确,但是无法登录上去
我反复确认了自己的密码,但是怎么都登不上去,情况如下:
查了资料之后发现,因为我是本地虚拟机学习使用的,并不关心安全性,因此我只使用了一个用户登录,也就是 root 用户,root 用户如果要远程登录的话,那么就需要做一件事情,修改配置项:
vim /etc/ssh/sshd_config
在这里面检查 /etc/ssh/sshd_config
文件中的 PermitRootLogin
指令。如果设置为 no
或 prohibit-password
,则你将无法使用密码以 root
用户身份登录。你可以将其更改为 yes
(允许密码登录),但出于安全考虑,通常不建议这样做。但我这里只是为了学习使用,因此我就改为 yes
了。
同样的操作还有一个字段:PasswordAuthentication
,也要将其修改为 yes
嗷。
修改后的样子如下:
PasswordAuthentication yes
PermitRootLogin yes
最后重启一下 ssh 服务:
sudo systemctl restart sshd
理论上就可以了,但是我又踩了坑,因为我的 root 用户名是 TheSea,但 Ubuntu 系统只认小写,所以我登录的用户名就应该是 thesea 。
用户名输入错了又让我反复试了好久…
如果不确定自己的用户名是什么,那么可以用下面的命令试一下:
因此我的登录名是 thesea,此时就可以正确连接上了:
番外:可能会遇到的玄学解决法
如果上面的操作都执行了但是还是没有解决,那么就重启 VMware,重启一下 Ubuntu 虚拟机,重启一下 XShell ,众所周知,重启能解决百分之八十的问题。
这一通下来应该就没有问题了,亲测有效。