手里还有两个永久免费的甲骨文云VPS,装的Ubuntu系统,开服的时候还教过大家Oracle Cloud SSH使用密码登录,前不久发现SSH突然登不上了,还以为甲骨文给回收了。后来一番探究,终于解决了。

得到的结论是,永久免费的东西,或者说甲骨文家的东西真的挺糟心的。

排查过程太曲折就不说了,直接说最后的解决方法:

用Cloud Shell或者Web上带的终端登录到服务器上,首先核对sshd和ssh服务有没有在运行。

sudo systemctl status ssh
sudo systemctl status sshd

如果这俩没在运行,就先安装

sudo apt update
sudo apt install openssh-server

设置开机启动

sudo systemctl start sshd
sudo systemctl enable sshd

用你的编辑器编辑sshd配置文件

nano /etc/ssh/sshd_config

确保以下行没有被注释,并且端口设置正确:

Port 22
PermitRootLogin yes
PasswordAuthentication yes

保存配置文件后重启服务

sudo systemctl restart sshd
sudo systemctl restart ssh

启用防火墙

sudo ufw enable

防火墙允许22端口入站,如果你把SSH改成别的端口了就相应替换

sudo ufw allow 22/tcp
sudo ufw allow ssh
sudo ufw reload

但是这些常规操作不是大家都会吗?Oracle就是那个你照着走一遍依然还是连不上的东家。

下面骚操作来了:

检查你服务器里以下文件夹

cd /etc/ssh/sshd_config.d

如果你发现里面有个文件 60-cloudimg-settings.conf 文件里的内容是:

PasswordAuthentication no

恭喜你,找到了阻止你远程访问的元凶。

看文件名是云镜像里带的,但是由于之前我是成功远程登录过SSH的,所以这个文件极大可能是Oracle后期扫描给添进去的。

删了这个文件,一切就正常了。

rm /etc/ssh/sshd_config.d/60-cloudimg-settings.conf

恶心吧?