Ubuntu设置使用SSH密钥远程登陆
一、环境
系统版本:Ubuntu 20.04
SSH版本:Ubuntu 3.16
二、SSH公私钥生成与配置
1. 生成新的密钥对
$ ssh-keygen
然后一路回车,最终输出结果大致如下:
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <== 按 Enter
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): <== 输入密钥锁码,或直接按 Enter 留空
Enter same passphrase again: <== 再输入一遍密钥锁码
Your identification has been saved in /root/.ssh/id_rsa. <== 私钥
Your public key has been saved in /root/.ssh/id_rsa.pub. <== 公钥
The key fingerprint is:
****************************
此时会生成的两个密钥文件id_rsa
和id_rsa.pub
在 root 目录下的.ssh
文件夹中。
root@Classic-9863745370:~/.ssh# ls
authorized_keys id_rsa id_rsa.pub
2. 配置公钥(使用新生成密钥)
$ cd .ssh
$ cat id_rsa.pub >> authorized_keys
3. 配置公钥(使用旧密钥)
$ cd .ssh
$ echo "公钥内容" >> ~/.ssh/authorized_keys
把你之前生成的公钥pub_rsa.pub
文本保存到authorized_keys
中即可。
4. 授予文件权限
$ chmod 600 authorized_keys
$ chmod 700 ~/.ssh
操作到这一步,就算公钥绑定完成了。
5. 保存公钥文件到本地(使用旧密钥的忽略)
你需要将在.ssh
文件夹中将公私钥文件id_rsa
,pub_rsa.pub
下载到本地,即可在 Xshell等软件中使用。这是服务器唯一登录凭证,请妥善保存好,请妥善保存好,请妥善保存好,避免泄露和丢失。
三、修改SSH登录配置文件
1. 备份配置文件
为了稳妥起见,我们在进行修改前需要将之前的配置文件进行备份,方便出现问题后我们后续快速恢复。
$ cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
2. 修改配置文件
$ sudo vi /etc/ssh/sshd_config
文件添加如下几个参数,有可能是新增也有可能是修改,请仔细核对:
RSAAuthentication yes
PubkeyAuthentication yes
PermitRootLogin yes
#在SSH密钥登入测试完成后再修改此项为no
PasswordAuthentication no
建议:未测试密钥登录成功前,将该参数设置为yes,否则万一密钥无法登录,密码也就无法登录了。
PasswordAuthentication yes
修改完成后,wq保存退出即可。
配置文件详细说明:
PermitRootLogin yes
:允许root用户通过SSH登录PasswordAuthentication yes
:启用密码认证方式MaxAuthTries 3
:限制登录尝试次数,防止暴力破解ClientAliveInterval 300
:每5分钟检测一次客户端连接状态LoginGraceTime 60
:用户必须在60秒内完成认证
3. 重启SSH服务,完成配置。
$ service sshd restart
四、使用密钥登录
在Putty 或 Xshell 的密钥管理中导入自己的密钥对,然后将之前的密码登录改为密钥登录,不出意外即可登录成功,否则请检查上述步骤是否有误。
*** System restart required ***
Last login: Fri Sep 5 10:58:57 2025 from 58.76.211.150
root@Classic-9863745370:~#
License:
CC BY 4.0