文章

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_rsaid_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