我需要使用另一台计算机来访问我的 ssh 服务器。这是因为我所在大学最近实施的 vpn 无法在当前计算机上使用,因此我失去了对服务器的访问权限。
我通过加密的 ssh 密钥进行 ssh。我可以将这些密钥复制到新计算机(vpn 在其上运行)吗?我尝试复制文件夹中的id_rsa
和文件,但它无法识别密钥,也没有提示输入密码来解密密钥。id_rsa.pub
~/.ssh
编辑:我无法访问服务器来为新计算机生成新的密钥对,而且我在国外,所以无法物理访问它。
谢谢。
答案1
检查你的私钥文件的权限和所有权。从手册,
这些文件包含敏感数据,应该仅供用户读取,但不能被其他人访问(读/写/执行)。如果其他人可以访问私钥文件,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
您可以通过以下方式执行:
$ chown benj:benj ~/.ssh/id_rsa*
$ chmod 600 ~/.ssh/id_rsa
$ chmod 644 ~/.ssh/id_rsa.pub
答案2
在通过 SSH 进入服务器之前尝试运行ssh-add
- 然后系统将提示您输入密码,然后后续ssh
连接可以使用您的私钥。
该ssh-add
命令将密钥添加到密钥代理。
答案3
加密的私钥保存其对应的公钥未加密。这就是 SSH 客户端无需询问密码即可连接到远程服务器的方式(此时它仅提供公共部分)。每当服务器接受公钥时,您 PC 上的客户端都会解密私钥并要求您输入密码。
现在,每当服务器仅接受来自特定 IP 地址的连接时,这在第一步就已经被拒绝,并解释您从服务器收到的消息“服务器不允许漫游”。
因此,我最好的猜测是您的服务器受到某种限制,仅允许此密钥使用特定的 IP 地址。您可以通过多种方式执行此操作,但这是常见的一种~/.ssh/authorized_keys
:
from="192.168.1.2" ssh-rsa AAAAB3NzaC[...]
为了证明您可以在没有密码的情况下从加密的私钥中读取公钥,请运行:
ssh-keygen -y -f /path/to/private/key