![使用另一台机器上备份的 SSH 密钥访问服务器](https://linux22.com/image/724312/%E4%BD%BF%E7%94%A8%E5%8F%A6%E4%B8%80%E5%8F%B0%E6%9C%BA%E5%99%A8%E4%B8%8A%E5%A4%87%E4%BB%BD%E7%9A%84%20SSH%20%E5%AF%86%E9%92%A5%E8%AE%BF%E9%97%AE%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
我创建了一个服务器,并将 SSH 配置为不允许 root 登录并禁用密码访问,因此只接受 SSH 密钥登录。
我有一台带有密钥的机器 A,我可以从该机器访问我的服务器,没有任何问题。
为了以防万一,还要备份这些密钥。
假设我的机器 A 明天坏了,我有一台新机器 B,当然需要访问我的服务器。
我不知道这里是怎么回事。我是否应该将密钥从备份复制到机器 B,这样我就可以访问我的服务器了?还是应该通过一些 OpenSSH 命令导入密钥?
所以我的第一个疑问是关于备份导入,因为我担心完全失去对我的服务器的访问权限。
第二个问题是关于我在机器 A 上为密钥设置的密码。这对我复制的密钥仍然有效吗?或者我需要通过导入在新机器上设置新密码。
谢谢。
答案1
SSH 密钥由两部分组成:
- 这私钥应该用强密码保护
- 这公钥(通常以 .pub 后缀结尾)应复制到服务器
您可以根据需要自由移动这两个部分,尽管我不建议您将私人部分公开(即使加密)放置。
私有部分放在您本地机器的 ~/.ssh/ 目录中。预期的密钥名称是
- id_rsa
- id_rsa-证书
- id_dsa
- id_dsa-证书
- id_ecdsa
- id_ecdsa-证书
- id_ed25519
- id_ed25519-证书
如果您的密钥具有相应的名称之一,那么您就可以开始了。如果您需要使用某个特定密钥,则必须使用参数-我
/usr/bin/ssh -i <path_to_key_file>
公共服务器部分也是如此。在用户主目录必须存在一个文件 ~/.ssh/authorized_keys。此文件包含允许以用户身份登录的所有公钥用户- 每行一个。注释部分可以省略。
也就是说,无论您想在任何服务器上使用任何 SSH 密钥,请将公共部分复制到 authorized_keys 文件的新行上。
我建议你研究一下 SSHD 的手册页(man sshd),尤其是“AUTHORIZED_KEYS FILE FORMAT”部分。
此外,我认为我还应该警告您,正如 sshd 手册页中所述,主目录、~/.ssh 目录和 ~/.ssh/authorized_keys 文件的文件系统权限有一些规则,简而言之,其他人不能写入。
~/.ssh/authorized_keys Lists the public keys (DSA/ECDSA/RSA) that can be used for logging in as this user. The format of this file is described above. The content of the file is not highly sensitive, but the recommended permissions are read/write for the user, and not accessible by others. If this file, the ~/.ssh directory, or the user's home directory are writable by other users, then the file could be modi‐ fied or replaced by unauthorized users. In this case, sshd will not allow it to be used unless the StrictModes option has been set to “no”.
答案2
将备份密钥复制到位即可。无需特定的导入命令。密码是密钥文件的一个属性(具体来说,它是密钥派生函数的输入,用于为私钥数据生成加密密钥)。
答案3
只需将私钥(从机器 A)复制到另一台机器(B)。然后您可以使用命令登录服务器
ssh -i private_keyfile.key [email protected]
注意:假设您已经将机器 A 的公钥复制到服务器上的 authorized_key。
答案4
所有你需要的是两把钥匙。公共和私人。请随意将其复制到另一个环境(尤其是仅位于客户机上的私人环境)并尝试检查。密码短语是针对该对生成的,因此您始终需要它。