当我们购买了一台VPS,并满心欢喜地搭建好了凝聚着自己时间与经历的网站以后,却由于默认端口和弱密码的原因被搞破坏的人们给入侵了端口,成为他们的肉鸡,这是多么令人沮丧的一件事情。因此,买到一台VPS后的首要工作就是更改默认的SSH登陆端口,为了安全还可以同时设置私钥登录。
1、修改登录端口
首先,我们先用工具连接上我们的VPS(SSH工具我觉得Finalshell和Xshell都很不错,Finalshell还带有一个很直观的VPS状态监视)
输入以下命令可以查看成功登录的IP地址
grep "Accepted password for root" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | more
将代码中的”Accepted”更改为“Failed”就可以查看登录失败的IP列表了,即:
grep "Failed password for root" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | more
![](https://alxa.top/i/2022/06/22/62b2946d7a902.webp)
开始修改SSH端口。
进入 /etc/ssh 文件夹,找到 sshd_config 这一文件
cd /etc/ssh
ls
vi sshd_config
![](https://alxa.top/i/2022/06/22/62b2946d7004e.webp)
按 i
进入编辑状态
找到 Port 22 这一行,去掉前面的 “#” 注释并将后面的 22 端口修改为你所希望的登录端口,例如19995,推荐换个五位的,但是不要超过 65535 ,这是最大端口数。
![](https://alxa.top/i/2022/06/22/62b2946d4a6e0.webp)
修改完成后按 esc
键 并输入 :wq!
结束编辑
![](https://alxa.top/i/2022/06/22/62b2946d45b19.webp)
修改完成后输入以下命令来重启SSH服务
#CentOS系统
service sshd restart
#Debian/Ubuntu系统
service ssh restart
当然你也可以通过在SSH键入以下命令来直接修改端口
sed -i "s/Port .*/Port 你希望改成的端口号/g" /etc/ssh/sshd_config
修改成功后也要输入上面的命令重启SSH服务。
2、设置私钥
正所谓“有备无患”,数据无价,能够给予数据更多的保护自然是极好的。
密钥形式登录的原理是:利用密钥生成器在VPS上来制作一对密钥——即一只公钥和一只私钥。将公钥添加到服务器的某个账户上,在客户端利用私钥即可完成认证并登录。如果没有私钥,那么任何人都无法通过 SSH 暴力破解你的密码来远程登录到系统。
设置SSH通过私钥登录VPS
首先在VPS上输入以下命令来制作密钥对,制作过程中会提示你输入密钥的密码
ssh-keygen
完整过程如下
root@heVvYpZNm:~# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <=== 按 Enter
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): <=== 在这里会提示你输入密钥的锁码
Enter same passphrase again: <=== 再次输入
Your identification has been saved in /root/.ssh/id_rsa. <=== 这里是你输出的密钥所在的目录
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is: <=== 这里输出的是你的私钥
The key's randomart image is: <=== 这里输出的是你的公钥
root@heVvYpZNm:~#
随后输入以下命令安装密钥
cd .ssh
cat id_rsa.pub >> authorized_keys
输入以下命令为相关文件赋予读写权限以确保连接成功
chmod 600 authorized_keys
chmod 700 ~/.ssh
编辑 /etc/ssh/sshd_config 文件,并进行下面的设置,没有的选项可以直接加入,前面有“#”注释的要去掉注释,修改完成保存后退出。
RSAAuthentication yes
PubkeyAuthentication yes
完成以上设置后需要重启SSH服务并以修改后的端口及密钥重新连接VPS来测试是否修改成功,如成功则可以选择修改/etc/ssh/sshd_config中的以下选项来禁用密码登录
PasswordAuthentication no
某些SSH软件连接时可能会提示“暂不支持此私钥格式,需转换成PEM格式私钥”,那么只需按提示输入以下命令转换一下密钥格式即可
ssh-keygen -p -m PEM -f 私钥路径
下载私钥需参照你所使用的SSH连接工具为准,譬如Xshell配套的Xftp,或者Finalshell的右键下载。