Linux下使用ssh-keygen命令生成SSH密钥对

最近查看Digital Ocean的Droplet登陆日志,经常受到来自江苏连云港一个IP的SSH密码穷举攻击,于是关闭了Droplet的密码登录,改用SSH密钥对登录,杜绝穷举攻击可能。

这种登录方式,需要创建一个新的SSH密钥对(包含公钥和私钥,公钥提供给VPS服务商,私钥用于登录),我们就用Linux系统自带的ssh-keygen命令来生成这个密钥对。

/root/.ssh/目录用来存储Linux系统生成的SSH密钥对,我们首先检查一下,该目录是否为空。

$ cd ~/.ssh
$ ls

若该目录里已经有(filename).pub(filename)这样的同名文件对,则代表已经有生成好的秘钥对。如果不知道已经存在的密钥对的用途,请不要随意覆盖或删除。

我们现在用ssh-keygen命令创建新的密钥对:

$ ssh-keygen

输出如下:

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):

注意,此处不要覆盖已经存在的密钥对,我们给新的密钥对一个新的文件名test,如下:

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/test

然后提示是否要给公钥设置密码,如果不需要密码,留空即可,此处需要确认两次:

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

确认完毕后,会生成密钥对,然后返回公钥的SHA256指纹和randomart image:

Your identification has been saved in /root/.ssh/test.
Your public key has been saved in /root/.ssh/test.pub.
The key fingerprint is:
SHA256:HUN5j/NqUt1A18lLr1jVPf/KIIcTSdk/5KOjJBwJF0M [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|       .E..+  . =|
|      . .o+ o o=*|
|       o ooo B.o=|
|        o.ooo O.o|
|       .S..o B *.|
|        o = B + o|
|         o * = . |
|          o o o  |
|           o     |
+----[SHA256]-----+

现在再检查一下/root/.ssh/目录:

$ cd ~/.ssh
$ ls

输出如下,可以看到我们刚才生成的test密钥对已经在目录里了(test.pub是公钥,test是私钥):

authorized_keys  test  test.pub

用cat命令打印出公钥test.pub的内容:

$ cat test.pub

输出如下,复制公钥内容提供给VPS服务商即可:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCt35H/CTdcJf38j/
xbljWv+TLYS6qpbYm79MDuHtwtjduskzerm4lT6apqlMWS2MOibGE/
pKzIEQRtn7Poi0swXDtqgBTFaji98mI8J918PWkrNuyYZfSascriu8
nXJAxsUX8EcZPkTghzaVBmPK0tHXvX94rxyhPJIbj9eMjeQsb6fsti
kopS2Xt6kM7wCquDTjJrcPa6RrYrPTnpXtWf7K92Yd+yNKFeV4zf9+
UAU/pGo6U4rf7O5sxtzVI08i2Nsbgnm/Jr3rtn/lvAX8M56V1py9L5
76rqpSkmrjyhIC1ssWEUB2Iyelu+B3dwPjFT87hZzog+8Ahu/Oh9Em
oF [email protected]

同理,用cat命令打印出test私钥内容:

$ cat test

将私钥内容保存在本地,另存为test.pem私钥文件。

在使用SSH客户端登陆该VPS时,指定该私钥文件为秘钥即可。
– 若使用Termius:在File – Preference – Keychain中添加新的Key,将私钥内容复制到Private Key区块,登陆时指定该Key即可。
– 若使用Putty:则需要用PuttyGen工具将test.pem私钥文件转换为test.ppk,登陆时指定转换过的新私钥即可。

请注意,测试用密钥对已经被删除,也没有被用于任何SSH链接,破解没有任何意义!

发表评论