如何在 CentOS 7 上设置 SSH 密钥

SSH 是一种安全外壳协议,是一种用于管理和与服务器通信的加密协议。在使用 CentOS 服务器时,大部分时间都是在 SSH 与服务器连接的终端会话中。

如何在 CentOS 7 上设置 SSH 密钥

如何在 CentOS 7 上设置 SSH 密钥

本文中我们向您介绍,如何在 CentOS 7 上安装和设置 SSH 密钥。

第 1 步 – 创建 RSA 密钥对

第一步是在客户端上创建一个密钥对:

ssh-keygen

默认情况下,ssh-keygen将创建一个 2048 位的 RSA 密钥对,这对于大多数情况来说时足够安全的。

输入命令后,应该会看到以下提示:

Output
Generating public/private rsa key pair.
Enter file in which to save the key (/your_home/.ssh/id_rsa):

然后按ENTER将密钥对保存到.ssh/主目录的子目录中,或指定其他路径。

如果您之前生成了其他的 SSH 密钥对,可能会看到以下提示:

Output
/home/your_home/.ssh/id_rsa already exists.
Overwrite (y/n)?

如果选择覆盖磁盘上的密钥,将无法再使用以前的密钥进行身份验证。

然后,应该会看到以下提示:

Output
Enter passphrase (empty for no passphrase):

在这里,您可以选择输入安全密码,强烈建议您这样做。密码短语增加了额外的安全层,以防止未经授权的用户登录。

然后,应该会看到以下输出:

Output
Your identification has been saved in /your_home/.ssh/id_rsa.
Your public key has been saved in /your_home/.ssh/id_rsa.pub.
The key fingerprint is:
a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host
The key's randomart image is:
+--[ RSA 2048]----+
|     ..o         |
|   E o= .        |
|    o. o         |
|        ..       |
|      ..S        |
|     o o.        |
|   =o.+.         |
|. =++..          |
|o=++.            |
+-----------------+

您现在拥有一个可用于身份验证的公钥和私钥。下一步是将公钥放置在服务器上,以便可以使用基于 SSH 密钥的身份验证来登录。

第 2 步 – 将公钥复制到 CentOS 服务器

将您的公钥复制到 CentOS 主机的最快方法是使用 ssh-copy-id。由于其操作简单,如果可用,强烈建议使用此方法。如果您的客户端计算机上没有ssh-copy-id,可以使用我们下面将要介绍的其他方法。

使用 ssh-copy-id 复制公钥

ssh-copy-id工具默认包含在许多操作系统中,因此您可以在本地系统上使用它。要使此方法,还要有对服务器的基于密码的 SSH 访问权限。

要使用该工具,只需指定要连接的远程主机以及用户帐户。

语法是:

ssh-copy-id username@remote_host

可能会看到以下消息:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

这意味着您的本地计算机无法识别远程主机。键入yes然后按ENTER继续。

接下来,该工具将扫描本地帐户查找之前创建的密钥 id_rsa.pub。当它找到密钥时,会提示您输入远程用户帐户的密码:

Output
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
username@203.0.113.1's password:

输入密码(出于安全考虑,您的输入将不会显示)并按ENTER。该工具将使用您提供的密码连接到远程主机。然后,它会将 ~/.ssh/id_rsa.pub 密钥内容复制到远程帐户主目录 ~/.ssh 中名为authorized_keys的文件中

应该看到以下输出:

Output
Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'username@203.0.113.1'"
and check to make sure that only the key(s) you wanted were added.

此时,您的id_rsa.pub密钥已上传到远程帐户。

使用 SSH 复制公钥

如果您没有ssh-copy-id,但有基于密码的 SSH 访问权限,则可以使用传统的 SSH 方法上传密钥。

可以通过使用cat命令,读取本地计算机上的公共密钥的内容,并通过 SSH 连接将其复制到远程文件。

另一方面,要确保~/.ssh目录存在,并且在具有正确的权限。

然后,可以将通过管道将内容输出到此目录 authorized_keys 文件中。将使用>>重定向符号来附加内容而不是覆盖它。这将不破坏先前添加的密钥的情况下添加密钥。

完整的命令如下所示:

cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

可能会看到以下消息:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

这意味着本地计算机无法识别远程主机。这将在第一次连接到新主机时发生。键入yes并按ENTER以继续。

之后,应该会提示您输入远程用户帐户密码:

Output
username@203.0.113.1's password:

输入密码后,您的id_rsa.pub密钥内容将被复制到远程用户帐户 authorized_keys文件的末尾。

第 3 步 – 使用 SSH 密钥连接 CentOS 服务器

如果已成功完成上述步骤,就可以在不使用密码的情况下,连接远程服务器主机。

基本流程是一样的:

ssh username@remote_host

如果这是您第一次连接到此主机,可能会看到如下内容:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

键入yes,然后按ENTER继续。

如果您没有为私钥设置密码,将立即登录。如果您在创建私钥时设置了密码,系统将提示输入密码短语。

如果使用密钥成功连接服务器,下面介绍如何禁用密码连接SSH。

第 4 步 – 在服务器上禁用密码连接

如果能够通过密钥连接服务器,则可以禁用密码连接。

先使用 SSH 密钥以 root 或具有sudo权限的帐户连接服务器。然后,打开 SSH 守护进程的配置文件:

sudo vi /etc/ssh/sshd_config

在文件中,搜索PasswordAuthentication,如果所在行被注释掉,请按i键开始插入文本,然后删除行前的#取消注释。找到指令后,将值设置为no。这将禁止通过 SSH 使用帐户密码登录:

/etc/ssh/sshd_config

...
PasswordAuthentication no
...

完成更改后,按ESC:wq保存并退出。重新启动sshd服务使更改生效:

sudo systemctl restart sshd.service

为确保万无一失,请在关闭会话之前打开一个新的终端窗口,测试 SSH 服务是否能够正常运行:

ssh username@remote_host

验证万抽,就可以安全地关闭所有当前的服务器会话。

CentOS 服务器上的 SSH 守护程序,现在只对 SSH 密钥连接进行响应。基于密码的身份验证方式已被禁用。

总结

本文介绍了如何在 CentOS 7 上设置 SSH 密钥,以及如何在服务器上禁用密码连接,希望对广大用户朋友有所帮助

作者:牛奇网,本站文章均为辛苦原创,在此严正声明,本站内容严禁采集转载,面斥不雅请好自为之,本文网址:https://www.niuqi360.com/linux/how-to-set-up-ssh-keys-on-centos-7/

(0)
上一篇 1天前
下一篇 23小时前

发表评论

登录后才能评论