将SSH密钥复制到不同的Linux机器
概述
使用SSH密钥时,务必妥善保管。我们可以通过将密钥存储在加密文件中来防止意外删除。我们还可以通过将密钥保存在离线状态来确保它们不会在有人试图窃取时被泄露。例如,我们可以将它们存储在USB驱动器上受密码保护的文件夹中。
但是,这不是最佳方法。如果您有多台机器并想将密钥从一台机器复制到另一台机器,那么与复制密钥文件相比,有更好的方法。本文将向您展示如何在两台不同的计算机之间安全地复制SSH密钥。
在我们的机器上
在我们的本地计算机上,我们将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_rsasubjective.pem中,我们需要将密钥对的公钥部分(id_rsa.pub)移动到另一台计算机,以便我们可以使用它们来签署消息。
手动复制
我们首先需要手动将公钥从一台计算机复制到另一台计算机。为此,我们使用scp命令。
$ scp .ssh/id_rsa.pub our_username@other_machine:
我们需要将文件从我们的计算机传输到远程服务器,并在终端窗口中输入我们的密码。之后,我们需要使用我们的用户名和密码登录到远程服务器。为了确保我们的主文件夹具有与本地计算机上相同的权限,我们首先需要确保远程服务器的主文件夹也包含一个名为.ssh的文件夹,并且具有与我们计算机上相同的访问权限。
$ mkdir .ssh $ chmod 700 .ssh
此目录应该包含一个authorized_keys文件,该文件仅对我们自己的帐户可见。
$ touch .ssh/authorized_keys $ chmod 644 .ssh/authorized_keys
输入应是我们想要允许用户登录的每个密钥对的公钥列表。我们将把我们传输的公钥添加到此列表中。
$ cat id_rsa.pub >> .ssh/authorized_keys
登录到这台其他计算机时,我们不再需要输入密码。
使用ssh-copy-id
手动方法需要大量工作。幸运的是,Linux自带一个方便的工具可以为我们完成所有工作。这个工具名为ssh-copy-id。我们只需在终端窗口中输入以下内容:
$ ssh-copy-id our_username@other_machine
我们将把我们的公钥从当前位置复制到另一台计算机,执行与我们上面手动执行的相同步骤。
结论
我们学习了如何手动为GitHub创建SSH密钥对。要进行手动创建,我们必须确保所有文件默认情况下都是受限制的。最简单的方法是使用ssh-keygen命令。