Contents

将SSH密钥复制到另一台计算机

1. 概述

安全连接到其他计算机时,使用 SSH 密钥是最佳实践。要使用我们的 SSH 密钥对,我们必须将公钥复制到远程机器上。在本教程中,我们将观察一些方法来做到这一点。我们将在此处展示的示例假设我们使用ssh-keygen 和默认设置来创建我们的 SSH 密钥对。所有示例都在 Bash 中进行了测试,并且应该也可以在其他 POSIX 兼容的 shell 中工作。

2. 在本地机器上

在我们的本地机器上,我们的 SSH 密钥对位于我们的主目录下的一个名为*.ssh*的子目录中:

drwx------   5 vagrant  vagrant   160 Apr 23 13:11 .ssh

这*.ssh*目录仅供我们自己的用户访问,并在两个文件中包含实际的密钥对:

$ ls -l .ssh
total 16
-rw-------  1 vagrant  vagrant  1843 Mar 27 15:09 id_rsa
-rw-r--r--  1 vagrant  vagrant   413 Mar 27 15:10 id_rsa.pub

名为 id_rsa的文件包含我们的私钥,我们的公钥存储在 id_rsa.pub中。我们需要将公钥复制到另一台机器上才能使用这个密钥对登录。

3. 手动复制

首先,我们将采用手动方法。让我们使用**scp 命令将公钥复制到另一台机器上**。从我们的主目录中,我们运行:

$ scp .ssh/id_rsa.pub itcodingman@blogdemo

我们必须输入远程机器的密码,然后文件就会被传输。然后,我们也使用我们的用户名和密码登录到另一台机器,将文件放在正确的位置。首先,我们必须确保另一台机器上的主目录也包含一个名为*.ssh*的目录,该目录与我们自己机器上的目录具有相同的访问权限:

$ mkdir .ssh
$ chmod 700 .ssh

这个目录应该包含一个名为 authorized_keys的文件,只有我们自己的用户可以访问:

$ touch .ssh/authorized_keys
$ chmod 644 .ssh/authorized_keys

该文件应包含我们希望允许用户登录的密钥对的所有公钥。让我们将我们传输的公钥附加到这个文件中:

$ cat id_rsa.pub >> .ssh/authorized_keys

从现在开始,每次我们登录到这台机器时,都会使用我们的密钥对,不再需要输入密码。

4. 使用ssh-copy-id

手动方法需要很多步骤。幸运的是,Linux 附带了一个方便的脚本,可以为我们完成所有繁重的工作。此脚本称为ssh-copy-id 。我们只需运行以下命令:

$ ssh-copy-id itcodingman@blogdemo

这将从默认位置获取我们的公钥并将其传输到另一台机器,执行我们在上面手动执行的所有相同步骤。