1. 背景

Linux主机使用密码登录,容易被暴力破解,整天都有各类扫描端口,暴力破解等。
尤其是自己的VPS,就算更改了ssh的默认端口,仍然无法避免扫描、爆破。
更为安全的方式是使用ssh密钥登录,禁止密码登录。
以下文件部分内容参考自:https://www.shopee6.com/web/web-tutorial/ssh-login-key.html

2. 使用方式

  • 在服务器生成公钥、私钥;
  • 配置服务器ssd使用公钥,禁止密码登录;
  • 下载私钥,使用私钥登录。

3. 主机生成公钥

先通过密码登录ssh后,输入如下命令后回车:
ssh-keygen
直接生成SSH密钥,同时可以设置密钥锁码,也可以直接留空。

类似的命令生成过程参考如下:

[root@host ~]$ 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 留空
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:
0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08 root@host

成功后就在root目录下生成了一个 .ssh 的隐藏目录,内含两个密钥文件。id_rsa 为私钥,id_rsa.pub 为公钥。

4. 主机配置使用公钥

输入如下命令,分别回车

cd .ssh
cat id_rsa.pub >> authorized_keys

同时修改文件权限:

chmod 600 authorized_keys
chmod 700 ~/.ssh

编辑 /etc/ssh/sshd_config 文件,进行如下设置:
vi /etc/ssh/sshd_config

将如下的功能开放,即注释掉#
PubkeyAuthentication yes

确保root用户能登录
PermitRootLogin yes

将密码登录禁用:
PasswordAuthentication no

保存文件并退出。

5. 使用私钥登录

从服务器下载/root/.ssh/id_rsa文件,保存在本地,使用MobaXterm时,use private key中找到id_rsa文件,后续即可登录。

登录成功: