生成SSH Keys 防止VPS被密码暴力破解
很久之前就写过这个,最后丢失了,在写一次.
生成 ssh keys
这里说两个方法,可视化软件的和命令行的
通过xshell
图形化很容易操作
新建用户密钥生成向导
在工具里面找到'新建用户密钥生成向导'
默认采用RSA 2048位的加密方式,你可以自己调整,然后下一步,下一步.
配置密钥名和密码
到这里可以给他起个名字,其实就是文件名字,用于区分.密码的话可以为空,也可以自己设置,设置了密码的话,以后要使用这个密钥还要再输入你的这个密码.(建议设置一下,不然泄露了别人拿到就直接用了)
导出密钥公钥
下一步之后直接点完成.到这个页面
选中你生成的那个名字,在属性内可选择公钥,然后另存为文件,选择位置保存,即可得到公钥.
选中你生成的那个名字,直接导出,选择位置保存,即可得到密钥,如果生成的时候有填写密码,导出也需要你设置的那个密码.
通过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]-----+
其他
操作私钥要是提示类似这样就改下权限,如果生成私钥的时候有设置密码,操作一般都需要密码验证
[root 21:50:22 ~]$ ssh-keygen -y -f id_ed25519_256 > pub
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'id_ed25519_256' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "id_ed25519_256": bad permissions
chmod 400 id_ed25519_256
切记备份私钥。如果丢失,密钥将无法恢复。
有密钥的话,可以恢复出公钥.
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