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

最近看Digital Ocean的Droplet的日志,经常受到来自江苏连云港一个IP的SSH密码穷举攻击。

于是博主关闭了Droplet的密码登录,改用SSH密钥对登录,杜绝穷举攻击可能。

这种登录方式,需要创建一个新的SSH密钥对(包含公钥和私钥,公钥提供给VPS服务商,私钥用于登录)。

我们就用Linux系统自带的ssh-keygen命令来生成这个密钥对。

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

若该目录里已经有 (filename).pub 和 (filename) 这样的同名文件对,则代表已经有生成好的秘钥对

如果不知道已经存在的密钥对的用途,请不要随意覆盖或删除。

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

输出如下:

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

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

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

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

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

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

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

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

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

在使用SSH客户端登陆该VPS时,指定该私钥文件为秘钥即可。

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

P.S. 测试用密钥对( test.pub 和 test )已经被删除,也没有被用于任何SSH链接,破解没有任何意义。

0 回复

发表评论

Want to join the discussion?
Feel free to contribute!

发表评论