生成公钥和私钥

Linux 系统中绝大部分的发行版都是用 OpenSSH,所以生成公钥私钥的时候最好用 ssh-keygen 命令,如果用 putty 自带的 PUTTYGEN.EXE 生成会不兼容 OpenSSH,从而会导致登录时出现 server refused our key 错误。

用 root 登录后运行命令如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): ##直接回车默认路径
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:
04:e1:93:92:95:ba:55:21:58:05:7d:57:58:92:32:d3 root@vpn
The key's randomart image is:
+--[ RSA 2048]----+
| oB*o. ..=o |
| .+.+o = E. |
| o.+... = |
| ...o |
| o S |
| . |
| |
| |
| |
+-----------------+

/root/.ssh/ 目录下生成了2个文件,id_rsa 为私钥,id_rsa.pub 为公钥。私钥自己下载到本地电脑妥善保存,公钥则可以任意公开。

导入公钥

1
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

更改 SSH 配置文件

修改 SSH 的配置文件 /etc/ssh/sshd_config,找到下面3行:

1
2
3
#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys

将前面的 # 去掉后保存。找到下面:

1
PasswordAuthentication yes

修改为:

1
PasswordAuthentication no

重启 SSH 服务,运行命令:

1
service sshd restart

制作用于 putty 的私钥

使用 WinScp 等工具将 VPS 上的 /root/.ssh/id_rsa 下载到本地,利用 PUTTYGEN.EXE 转换为 putty 用的 ppk 文件。

点击 File,Load private key,导入 /root/.ssh/id_rsa 文件。成功后的图片如下所示:

点击 Save private key 按钮,生成一个后缀为 ppk 的文件。这个文件就是已经制作好的用于 putty 无密码登录的密钥了,妥善保存。

至此,就只能用私钥登录到 VPS 了,安全性大大增强。