生成SSH Keys 防止VPS被密码暴力破解

默认分类 SSH

很久之前就写过这个,最后丢失了,在写一次.

生成 ssh keys

这里说两个方法,可视化软件的和命令行的

通过xshell

图形化很容易操作

新建用户密钥生成向导

在工具里面找到'新建用户密钥生成向导'

QQ截图20210709101229.png

默认采用RSA 2048位的加密方式,你可以自己调整,然后下一步,下一步.

配置密钥名和密码

到这里可以给他起个名字,其实就是文件名字,用于区分.密码的话可以为空,也可以自己设置,设置了密码的话,以后要使用这个密钥还要再输入你的这个密码.(建议设置一下,不然泄露了别人拿到就直接用了)

QQ截图20210709102345.png

导出密钥公钥

下一步之后直接点完成.到这个页面

QQ截图20210709102846.png

选中你生成的那个名字,在属性内可选择公钥,然后另存为文件,选择位置保存,即可得到公钥.
选中你生成的那个名字,直接导出,选择位置保存,即可得到密钥,如果生成的时候有填写密码,导出也需要你设置的那个密码.

通过shell命令

这里参考的是https://www.vultr.com/docs/how-do-i-generate-ssh-keys/

1.生成您的密钥ssh-keygen,替换您的电子邮件地址

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

2.按ENTER将密钥保存在默认位置

Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/example/.ssh/id_ed25519):

3.您可以为您的密钥输入密码

我们建议使用密码短语,但您可以按ENTER绕过此提示.如果您使用密码的话,则每次使用密钥时都会输入它.

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

4.您的密钥已生成并保存

从代码可看出密钥和公钥的文件位置.
/Users/example/.ssh/id_ed25519 这个是密钥
/Users/example/.ssh/id_ed25519.pub 这个是公钥,pub结尾.

Your identification has been saved in /Users/example/.ssh/id_ed25519.
Your public key has been saved in /Users/example/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:qx6prR4Zo+VU7Fl8yivXzzzzzzzzJ/9NRnPbrC20w7g example@example.com
The key's randomart image is:
+--[ED25519 256]--+
|                 |
|     o .         |
|    o B o + .    |
|     B + + o +   |
|    = = S o o o  |
|   = + = O + +   |
|  . + B B = * .  |
|     = O   + o   |
|   .+o=.. E .    |
+----[SHA256]-----+

其他

切记备份私钥。如果丢失,密钥将无法恢复。

有密钥的话,可以恢复出公钥.
ssh-keygen -y -f 私钥文件 > 要保存的公钥文件

更改密钥的密码
ssh-keygen -p -f 私钥文件
根据提示输入旧密码和新密码(两次).

查看钥匙的指纹
ssh-keygen -l -f 私钥文件

输出类似是这样
3072 SHA256:pqdEtfbmIRwqTk9PpApa7DMvAxqCA577vJ/FcgyUM0Q root@localhost (RSA).

VPS服务器启用密钥

启用密钥登录

我自己用的简单粗暴,我是root用户,工作目录就是/root,所以直接修改工作目录下的.ssh/authorized_keys文件,在其中把公钥内容放进去就好了.
如果是添加的其他用户,用户的工作目录在/home/用户名目录下,也是照样修改用户工作目录下的.ssh/authorized_keys,把公钥放进去即可.

禁用密码登录

修改文件/etc/ssh/sshd_config,找到PasswordAuthentication yes这一行,改成PasswordAuthentication no

重启ssh systemctl restart sshd 即可

新评论

称呼不能为空
邮箱格式不合法
网站格式不合法
内容不能为空