Linux 如何设置 SSH 通过密钥方式登录

Linux 如何设置 SSH 通过密钥方式登录插图

为什么要使用密钥方式登陆?

我们经常使用 PuTTY 等 SSH 客户端工具来远程管理维护 Linux 服务器。为了安全,我们通常会修改 SSH 的 22 服务端口,或者禁止 root 账户登录。但是,普通密码登录的方式始终会存在安全风险,很容易被破解,我们通过设置密钥的方式登录 SSH 可以大大提高计算机的安全性能,以便于更好的维护管理。

使用密钥方式登录的原理

原理:利用密钥生成器制作一对密钥,即:公钥和私钥。将公钥添加到服务器的某个账户上,然后在客户端上利用私钥认证并登录。如此一来,没有私钥的话,任何人都无法通过 SSH 破解你的密码来远程登录到计算机。此外,如果将公钥复制到其他账户或者主机上,利用对应的私钥也可以登录。

如何设置 SSH 通过密钥方式登录

现在我们来详细的讲解一下如何在 Linux 上制作密钥对,如何将公钥添加给账户,再通过设置 SSH 选项,从而最终实现客户端通过密钥方式登录。

1、制作密钥对

本文以 Ubuntu 22.04 系统为例,首先制作密钥对。你打算开启哪一个账户使用密钥方式登陆,就先用这个账户通过密码的方式登陆到系统上进行设置,这里以 root 账户为例,打开终端执行以下命令:

ssh-keygen
Linux 如何设置 SSH 通过密钥方式登录插图1
密钥锁码在使用私钥时必须输入,双重保险。一般留空即可,则不使用密码登录。

2、在系统上安装公钥

分别输入以下命令,安装公钥:

cd /root/.ssh
cat id_rsa.pub >> authorized_keys
Linux 如何设置 SSH 通过密钥方式登录插图2
说明:第一步生成密钥的时候,我是使用 root 用户在根目录下执行的,系统会在 root 目录下建立 .ssh 目录;如果第一步生成密钥的时候您使用非 root 用户操作,那么请选择相应的路径进入 .ssh 目录,一般默认为:cd .ssh

3、设置文件和文件夹的权限

chmod 600 authorized_keys
chmod 700 ~/.ssh
Linux 如何设置 SSH 通过密钥方式登录插图3

4、开启密钥方式登录的功能

编辑 sshd_config 文件:

sudo vi /etc/ssh/sshd_config

复制下面两行代码到最下面:

RSAAuthentication yes
PubkeyAuthentication yes
Linux 如何设置 SSH 通过密钥方式登录插图4

开启 root 用户 SSH 登录:

找到:#PermitRootLogin no
改为:PermitRootLogin yes

最后,重启 SSH 服务:

service sshd restart

5、将私钥下载到客户端,然后转换为 PuTTY 能使用的格式

使用 WinSCP 工具将私钥文件 id_rsa 下载到客户端机器上(.ssh 是隐藏目录,按 Ctrl + Alt + H 组合键显示)

Linux 如何设置 SSH 通过密钥方式登录插图5

然后打开 PuTTYGen,单击 Actions 中的 Load 按钮:

Linux 如何设置 SSH 通过密钥方式登录插图6

文件名这里选择 All Files (*.*) ,然后载入下载的 id_rsa 文件:

Linux 如何设置 SSH 通过密钥方式登录插图7

载入成功后,PuTTYGen 会显示密钥相关的信息。在 Key comment 中键入对密钥的说明信息,然后单击 Save private key 按钮即可将私钥文件保存为 PuTTY 能使用的 ppk 格式。

Linux 如何设置 SSH 通过密钥方式登录插图8

当你使用 PuTTY 登录时,选择密钥方式登陆,导入你刚才转换的 ppk 私钥文件,然后就可以直接登录了。

等设置完毕,并以密钥方式登录成功后,开启禁用密码登录:

编辑 sshd_config 文件:

sudo vi /etc/ssh/sshd_config

按照下面修改:

找到:#PasswordAuthentication yes
改为:PasswordAuthentication no

最后,再次重启 SSH 服务:

service sshd restart

标签

发表评论