使用密钥登录linux
1.生成密钥
两种方法生成密钥)
0.服务器安装文件上传下载程序
1 | sudo apt install lrzsz |
1命令行生成
首先,在本地机器上生成一个 ed25519 类型的 SSH 密钥对。在终端(Win上的PowerShell、CMD或WSL,Mac上的Terminal)执行以下命令:
1 | #切换到密钥目录,例如 |
-t ed25519指定生成 ed25519 密钥。-C用于添加一个注释,通常使用电子邮件或用户名。
系统会提示你选择密钥存储的位置&私钥密码:
1 | root@debian01:~/.ssh# ssh-keygen -t ed25519 -C "your_email" |
你可以直接按回车选择默认位置,也可以指定一个不同的文件名。接着会要求输入一个密码来保护私钥(可以选择为空)。
将公钥复制到目标服务器的 ~/.ssh/authorized_keys 文件中
1 | rz -y #上传公钥 |
检查一下
1 | cat authorized_keys |
授权
1 | chmod 600 authorized_keys |
导入私钥
工具-》用户密钥管理者

选择你的私钥,输入密码

注意检查这里账户·是否正确

如果使用其他用户名会出现问题

2.本地生成
打开Xshell,在菜单栏点击“工具”,在弹出的菜单中选择“(新建用户密钥生成向导)”。
弹出“新建用户秘钥生成向导”对话框,在“秘钥类型”项选择“RSA”公钥加密算法,“秘钥长度”选择任意密钥长度,长度越长,安全性越高,如下图:

点击“下一步”,等待密钥生成

继续下一步,在“秘钥名称”中输入Key的文件名称,我这里为“id_rsa_2048”;在“加密密码”处输入一个密码用于加密私钥,并再次输入密码确认,如下图:

点击“下一步”,密钥生成完毕(Public key Format选择SSH2-OpenSSH格式),这里显示的是公钥,我们可以复制公钥然后再保存,也可以直接保存公钥为文件。

当然,稍后在属性中也可以保存公钥

公钥保存完后,接下来为私钥文件。点击“导出”,导出为私钥文件——用来打开刚才的公钥。请妥善保管。

注意:公钥有.pub后缀,私钥没有。
上传公钥
1 | rz -y |
在弹出的窗口中选择要上传的公钥
将公钥复制到目标服务器的 ~/.ssh/authorized_keys 文件中
1 | cat id_ed25519.pub >>authorized_keys |
检查一下
1 | cat authorized_keys |
授权
1 | chmod 600 authorized_keys |
修改ssh设置
修改/etc/ssh/sshd_config 配置文件
- 确保以下行未被注释掉,并设置为
yes:
1 | PubkeyAuthentication yes # yes表示允许密钥登陆 |
- 保存文件并退出编辑器(在 nano 中按
CTRL + X,然后按Y保存更改)。
重新启动 SSH 服务
修改配置文件后,需要重新启动 SSH 服务以使更改生效:
1 | sudo systemctl restart ssh |
最后
可以尝试关闭SSH 密码登录/修改登录端口
找到#Port 22
取消注释并修改端口号。
打开 /etc/ssh/sshd_config 配置文件,查找以下两行并修改或确保它们如下所示:
1 | PasswordAuthentication no # 不允许使用密码登陆。切记:只能在测试密钥登录成功后再改为 no! |
禁用密码认证和挑战响应认证。
重新启动 SSH 服务
如果你想其他的账户也使用密钥登录
su ***切换到那个账户
cd ~\\.ssh
然后就可以和root账户一样
但是最后还是要使用root权限重启ssh