将 ssh 私钥复制到另一台计算机

ben*_*enj 64 ssh

我需要使用另一台计算机来访问我的 ssh 服务器。这是因为我大学最近实施的 vpn 无法在我当前的计算机上运行,​​而且我无法访问服务器。

我通过加密的 ssh 密钥 ssh。我可以将这些密钥复制到新计算机(vpn 在其上运行)。我尝试复制文件夹中的id_rsaid_rsa.pub文件,~/.ssh但它无法识别密钥,也没有提示输入密码来解密密钥。

编辑:我无法访问服务器来为新计算机生成新的密钥对,而且我在国外,因此无法物理访问它。

谢谢。

ænd*_*rük 81

检查您的私钥文件的权限和所有权。从手册中

这些文件包含敏感数据,用户应该可以读取但其他人无法访问(读/写/执行)。如果其他人可以访问,ssh 将简单地忽略私钥文件。

通常,密钥文件应如下所示,

$ ls -l ~/.ssh/id_rsa*
-rw------- 1 benj benj 1766 Jun 22  2011 .ssh/id_rsa
-rw-r--r-- 1 benj benj  388 Jun 22  2011 .ssh/id_rsa.pub
Run Code Online (Sandbox Code Playgroud)

您可以通过以下方式强制执行:

$ chown benj:benj ~/.ssh/id_rsa*
$ chmod 600 ~/.ssh/id_rsa
$ chmod 644 ~/.ssh/id_rsa.pub
Run Code Online (Sandbox Code Playgroud)

  • 谢谢。知道这很有用。当您将文件复制到另一台计算机时,权限似乎会更改为该用户。我运行了 chmod 和 chown 脚本以防万一。不幸的是,它对我的​​问题没有帮助。 (2认同)

小智 16

ssh-add通过 SSH 连接到服务器之前尝试运行- 然后应该会提示您输入密码,然后后续ssh连接可以使用您的私钥。

ssh-add命令将密钥添加到密钥代理。


ger*_*ijk 8

加密的私钥保持其相应的未加密公钥。这就是 SSH 客户端可以在不询问您密码的情况下连接到远程服务器的方式(此时它只提供公共部分)。每当服务器接受公钥时,您 PC 上的客户端想要解密私钥并要求您输入密码。

现在,只要服务器只接受来自特定 IP 地址的连接,这在第一步中就已被拒绝,并解释了您从服务器收到的消息“服务器不允许漫游”。

因此,我最好的猜测是您的服务器以某种方式受到限制,仅允许此密钥的特定 IP 地址。您可以通过多种方式做到这一点,但这是一种常见的方式~/.ssh/authorized_keys

from="192.168.1.2" ssh-rsa AAAAB3NzaC[...]
Run Code Online (Sandbox Code Playgroud)

为了证明你可以在没有密码的情况下从加密的私钥中读取公钥,运行:

ssh-keygen -y -f /path/to/private/key
Run Code Online (Sandbox Code Playgroud)