使用SSH登录VPS一直习惯用复杂密码+非22端口,然而这些天发现CPU进程都是满的,使用SSH登录VPS查看CPU占用率,发现SSH密码已被黑客爆了并安装了挖矿程序导致VPS一直负荷运行。尝试几次卸载挖矿程序都失败了,最后以重装系统告终。有过这次经历 为了避免再次发生 使用Key秘钥进行登录。

生成秘钥

先用SSH+密码方式登录VPS,输入以下命令生成一对秘钥,默认回车

ssh-keygen

终端提示

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:
SHA256:cTSMnqP5zXAer21hc9UtPJA8ZU2HYdEUiFwTyna0Hjw root@debian
The key's randomart image is:
+---[RSA 2048]----+
|         +oo=+B*+|
|        .o+=.=o.o|
|       ...=.E+   |
|        ++ o=o   |
|       oS.  .+ ..|
|      o . o . = o|
|       . * + o o |
|        . B +    |
|          .*     |
+----[SHA256]-----+

保存私钥

使用cat命令查看VPS生成的私钥,在本机新建一个文本,将私钥保存下来并命名为“id_rsa”不要后缀名,将它放到你想放的位置,一般~/.ssh中

cat /root/.ssh/id_rsa

或者使用scp命令将私钥id_rsa从远程复制到本地/Users/july/Downloads/路径下root@127.0.0.1自行替换用户@你的IP

scp -P 22 root@127.0.0.1:/root/.ssh/id_rsa /Users/july/Downloads/

配置公钥

用SSH+Key登录,需将VPS的公钥名字改成authorized_keys

cd /root/.ssh/
mv id_rsa.pub authorized_keys
# 修改公钥为只有属主有读写权限(安全考虑)
chmod 600 authorized_keys
# 修改SSH目录为只有属主有读写执行权限(安全考虑)
chmod 700 /root/.ssh

开启 SSH+Key登录

用vi命令编辑sshd_config

vi /etc/ssh/sshd_config

找到以下两个参数,如果没有可以自行加上去,前面如果有#需要先删除掉#注释

RSAAuthentication no
PubkeyAuthentication no

将以上两个参数后的no改为yes即可 (一般默认就是yes不用改) 。

关闭 SSH+密码登录

用vi命令编辑sshd_config

vi /etc/ssh/sshd_config

找到以下这个参数,如果没有可以自行加上去,前面如果有#需要先删除掉#注释

PasswordAuthentication yes

将这个参数后的yes改为no即可

SSH+Key登录

SSH+Key配置好后就可以重启SSH服务,进行登录了

/etc/init.d/ssh restart

使用SSH+Key登录

ssh -p aaa root@xxx.xxx.xxx.xxx -i ~/.ssh/id_rsa

注意:如果用SSH+Key登录VPS服务器时,终端中显示下面内容:

Permissions 0644 for 'id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.

本机上的私钥文件权限太大,被忽略使用。在本机上执行以下命令,修改私钥文件的权限即可。

chmod 0600 id_rsa

Q.E.D.


wbname.cn