如何在CentOS 8上设置SSH密钥

安全壳(SSH)是一个加密网络协议,旨在为客户和服务器之间的安全连接而设计。

两个最流行的SSH认证机制是基于密码的认证和基于公钥的认证。使用SSH密钥通常比传统的密码认证更加安全和方便。

这篇文章描述了如何在CentOS 8系统上生成SSH密钥。我们还将告诉你如何设置一个基于SSH密钥的认证,并在不输入密码的情况下连接到远程Linux服务器。

在 CentOS 上创建 SSH 密钥

你有可能在你的CentOS客户机上已经有一个SSH密钥对。如果你要生成一个新的密钥对,旧的将被覆盖。

运行以下ls命令来检查钥匙文件是否存在。

ls -l ~/.ssh/id_*.pub

如果该命令的输出结果是没有这样的文件或目录,或者没有找到匹配的文件,这意味着用户没有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 passphrase (empty for no passphrase):

整个交互过程看起来像这样。

Generate a new SSH key pair

为了验证你的新SSH密钥对是否生成,请输入。

ls ~/.ssh/id_*
/home/yourusername/.ssh/id_rsa /home/yourusername/.ssh/id_rsa.pub

就这样了。你已经在你的 CentOS 客户机上成功生成了一个 SSH 密钥对。

将公钥复制到服务器上

现在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密码验证

为了给你的远程服务器增加一个额外的安全层,你可以禁用SSH密码认证。

在继续之前,确保你可以在没有密码的情况下以具有sudo权限的用户身份登录到你的服务器。

按照下面的步骤来禁用SSH密码认证。

  1. 登录到你的远程服务器。ssh sudo_user@server_ip_address

用你的文本编辑器打开SSH配置文件/etc/ssh/sshd_config 。

sudo nano /etc/ssh/sshd_config

搜索以下指令,并按以下方式修改。/etc/ssh/sshd_config

PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

一旦你完成了保存文件并通过输入重启SSH服务。

sudo systemctl restart ssh

在这一点上,基于密码的认证被禁用。

总结

我们已经向你展示了如何生成一个新的SSH密钥对并设置一个基于SSH密钥的认证。你可以使用同一个密钥来管理多个远程服务器。你还学会了如何禁用SSH密码认证,并为你的服务器增加一个额外的安全层。

默认情况下,SSH监听端口为22。改变默认的SSH端口可以减少自动攻击的风险。为了简化你的工作流程,使用SSH配置文件来定义所有的SSH连接。


已发布

分类

作者:

标签