如何在 CentOS 8 上设置 SSH 密钥

安全 Shell (SSH) 是一个被设计用来在客户端和服务器之间进行安全连接的加密网络协议。
最流行的两个 SSH 授权方式是基于密码的验证,和 基于公钥的验证。 使用 SSH 密钥通常比传统的密码验证更安全,更便捷。
本文描述如何在 CentOS 8 上生成 SSH 密钥。我们将向你展示如何设置 SSH 密钥并且 不使用密码连接到远程服务器。
一、在 CentOS 上创建 SSH 密钥
在你的 CentOS 客户机上很可能你已经有一个 SSH密钥对了。如果你正在生成一个新的密钥对,旧的密钥对将会被覆盖。
运行下面的ls
命令检查密钥文件是否存在:
ls -l ~/.ssh/id_*.pub
如果命令行输出类似:No such file or directory
,或者no matches found
,这意味着用户没有 SSH 密钥对,并且你可以进行下一步去生成 SSH 密钥对。
否则,如果你拥有一个 SSH 密钥对,你可以直接使用它们,或者备份旧的密钥,并且生成新的密钥对。
使用你的邮件地址作为评论生成一个4096位 SSH 密钥对,输入下面的命令:
ssh-keygen -t rsa -b 4096 -C "your_email@domain.com"
你将会被提示指定文件名:
Enter file in which to save the key (/home/yourusername/.ssh/id_rsa):
输入Enter
接受默认的文件位置和文件名。
下一步,你会被询问输入一个安全密码。不管你是否需要设置这个安全密码,这完全由你自己决定。 一个安全密码将会更加安全。如果你不想要安全密码,输入:
Enter passphrase (empty for no passphrase):
整个交互过程看起来像这样:

想要验证你的新的 SSH 密钥是否生成,输入:
ls ~/.ssh/id_*
输出:
/home/yourusername/.ssh/id_rsa /home/yourusername/.ssh/id_rsa.pub
二、拷贝公钥到服务器
现在 SSH 密钥已经生成,下一步就是拷贝公钥到你想要管理的服务器。
将公钥拷贝到远程服务器最简单并且最推荐的方式,就是使用ssh-copy-id
工具。在你的本地机器终端中输入:
ssh-copy-id remote_username@server_ip_address
这个命令将会要求你输入remote_username
密码:
remote_username@server_ip_address's password:
一旦用户被授权,公钥文件(~/.ssh/id_rsa.pub
)将会被附加到远程用户~/.ssh/authorized_keys
文件,并且连接将会被关闭。
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'username@server_ip_address'"
and check to make sure that only the key(s) you wanted were added.
如果ssh-copy-id
在你的本地电脑上不可用,使用下面的命令拷贝公钥:
cat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
三、使用 SSH 密钥登录你的服务器
在完成上面的步骤之后,你应该可以直接登录远程服务器,不用输入密码。
想要验证它,尝试通过 SSH 登录你的服务器:
ssh remote_username@server_ip_address
如果你没有为私钥设置密码,你将能够很快登录服务器。否则,你将被要求输入密码。
四、禁用密码验证
想要让远程服务器更安全,你可以禁用 SSH 密码验证。
在继续之前,确保你可以不使用密码,以 sudo 权限用户登录你的服务器。
按照下面的步骤来禁用 SSH 密码验证:
01.登录你的远程服务器:
ssh sudo_user@server_ip_address
02.使用你的文本编辑器打开 SSH 配置文件etc/ssh/sshd_config
:
sudo nano /etc/ssh/sshd_config
03.搜索下面的指令,并且修改如下:
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
04.一旦完成,保存文件,并且重启 SSH 服务器,输入:
sudo systemctl restart ssh
此时,基于密码的验证被禁用。
五、总结
我们向你展示如何生成一个新的 SSH 密钥对并且设置基于 SSH 的验证。你可以使用同一个密钥去管理多个远程服务器。你已经学习到如何禁用密码验证并且增强你的服务器安全性。
默认情况下,SSH 监听端口 22。修改这个默认的 SSH 端口可以降低被自动攻击的风险。想简化你的工作流程,使用 SSH 配置文件来定义所有的 SSH 连接。
如果你有任何疑问,请通过以下方式联系我们:
微信:

微信群: 加上面的微信,备注微信群
QQ: 3217680847

原文 :https://linuxize.com/post/how-to-set-up-ssh-keys-on-centos-8/
版权声明:本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。