在 Linux 服务器上启用“公钥认证”
在登录远程的Linux服务器时,通常使用 SSH 进行访问。通常可使用“用户名+密码”的方式,或使用密钥实现“免密登录”。如果在服务器上设置好了客户端公钥后,依然无法认证,那么很可能没并没有开启后者,此时就需要手动启用。
在服务器开启“公钥认证” 🔗
在 Linux 服务器上,SSH 相关的配置位于 /etc/ssh/
目录下。主要是两个文件:/etc/ssh/ssh_config
和 /etc/ssh/sshd_config
。前者是配置 SSH 客户端,后者是配置 SSH 服务器端。
想要开启服务器的“公钥认证”,那么就要修改 /etc/ssh/sshd_config
文件。修改或者添加如下配置:
PubkeyAuthentication yes
然后在终端重启 SSH 服务器:
$ systemctl restart sshd
理论上来说,此时就可以进行“免密登录”了。
验证 🔗
确保客户端上已经生成了密钥对 🔗
确保客户端主机的 ~/.ssh
目录下,已经生成了密钥对。如果没有,那么使用 ssh-keygen
命令生成。
将客户端公钥添加到服务器 🔗
在 Linux 服务器上,创建或者打开 ~/.ssh/authorized_keys
文件,在其中添加客户端的公钥。注意,~/.ssh/authorized_keys
的文件权限为 600
;而 ~/.ssh
目录的权限应该为 700
。
登录 🔗
在客户端使用 ssh
命令登录服务器,此时应该可以直接通过认证。
结尾 🔗
出于安全的考虑,“公钥认证”是登录Linux服务器的首选方式。如果查看 /etc/ssh/sshd_config
文件,就会发现其中还有“密码认证”的配置项:PasswordAuthentication
。如果将其值修改为 no
,那么就不能使用密码登录了。
加载中...