Linux 中设置 SSH 公钥和私钥

SSH,也称为“安全外壳协议”,是一种用于通过命令行界面在不安全的网络上安全地访问远程 Linux 系统的协议。 SSH 允许用户在远程 Linux 服务器上运行命令,安装和删除软件包,并通过命令行从一个地方管理一切。

如果我们是 Linux 系统管理员并通过 SSH 管理多台服务器,那么每次连接远程服务器时可能需要提供 root 密码。 对于管理员来说,记住数千台服务器的密码是非常困难的。 在这种情况下,我们可以使用 SSH 公钥和私钥对来连接远程服务器,而无需输入密码。

在这篇文章中,我们将向我们展示如何创建公钥和私钥并设置 Linux 服务器以进行无密码登录。

先决条件

  • 在 云平台上运行 Linux 的服务器
  • 在我们的服务器上配置的 root 密码

创建 云服务器

首先,登录到我们的 云服务器。 创建一个新服务器,选择任何具有至少 1GB RAM 的 Linux 操作系统。 通过 SSH 连接到我们的云服务器并使用页面顶部突出显示的凭据登录。

创建公共和私有 SSH 密钥对

首先,我们需要在本地 Linux 机器上创建一个公钥和私钥。 我们可以使用 ssh-keygen 命令生成 RSA 密钥对。

ssh-keygen -t rsa

系统将要求我们定义保存密钥文件的路径:

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

只需按 Enter 键即可将密钥文件保存在默认位置。 系统将要求我们设置密码:

Enter passphrase (empty for no passphrase): 

只需按 Enter 键即可将其留空。 生成密钥文件后,我们将获得以下输出:

Wer identification has been saved in /home/vyom/.ssh/id_rsa.
Wer public key has been saved in /home/vyom/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Osc1pEf3PGhYBuDiofx7GG6qbjo1+6Z4rxdcTxdeYsg vyom@vyompc
The key's randomart image is:
+---[RSA 2048]----+
|       ..o.      |
|       .E +..    |
|      o .oo++    |
|   . o.o.+o= +   |
|   .o..oS.= o +  |
|  o o..o.o o   . |
| . o o+oo        |
|..+ o ++.        |
|o*=O+o..         |
+----[SHA256]-----+

我们现在可以使用以下命令列出公钥和私钥文件:

ls -l .ssh/

我们将在以下输出中获得这两个文件:

-rw------- 1 vyom vyom 1679 Apr 13 10:16 id_rsa
-rw-r--r-- 1 vyom vyom  393 Apr 13 10:16 id_rsa.pub
-rw-r--r-- 1 vyom vyom 8212 Apr 13 09:36 known_hosts

将 SSH 公钥复制到远程服务器

接下来,我们需要将公钥 (id_rsa.pub) 文件复制到要从本地计算机管理的远程服务器。

我们可以运行 ssh-copy-id 命令将公钥复制到远程服务器:

ssh-copy-id root@remote-server-ip

我们将被要求提供远程服务器的密码以将公钥复制到远程服务器:

/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 we are prompted now it is to install the new keys
root@209.23.8.35's password: 

Number of key(s) added: 1

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

无需密码即可连接到远程服务器

此时,公钥被复制到远程服务器。 我们现在无需提供密码即可连接到远程服务器。

ssh root@wer-server-ip

登录到远程服务器后,我们将获得以下输出:

Activate the web console with: systemctl enable --now cockpit.socket

Last failed login: Wed Apr 13 04:39:07 UTC 2022 from 92.255.85.135 on ssh:notty
There were 2 failed login attempts since the last successful login.
Last login: Wed Apr 13 04:06:28 2022 from 27.61.243.122

[root@linux ~]# 

本文记录了,如何创建公钥和私钥,将公钥复制到远程服务器,以及在没有密码的情况下访问远程 Linux 服务器。 希望这将在管理多个远程服务器时为我们节省大量时间。 在 的 VPS 主机上试一试!

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论