问题描述
我需要使用另一台计算机来访问我的ssh服务器。这是因为我大学最近实施的vpn无法在我当前的计算机上运行,而且我无法访问服务器。
我通过加密的ssh密钥ssh。我可以将这些密钥复制到新计算机(vpn所在的计算机上)。我尝试在~/.ssh
文件夹中复制id_rsa
和id_rsa.pub
文件,但它无法识别密钥,也没有提示输入密码来解密密钥。
编辑:我无法访问服务器为新计算机生成新的密钥对,并且我不在国外,因此无法访问它。
谢谢。
最佳解决办法
检查私钥文件的权限和所有权。来自the manual,
These files contain sensitive data and should be readable by the user but not accessible by others (read/write/execute). ssh will simply ignore a private key file if it is accessible by others.
通常,密钥文件应如下所示,
$ 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
次佳解决办法
在SSH进入服务器之前尝试运行ssh-add
– 然后应该提示您输入密码,然后后续的ssh
连接可以使用您的私钥。
ssh-add
命令将密钥添加到密钥代理。
第三种解决办法
加密的私钥保持未加密的相应公钥。这就是SSH客户端如何在不向您询问密码的情况下连接到远程服务器的方式(此时它仅提供公共部分)。每当服务器接受公钥时,PC上的客户端都希望解密私钥并询问密码。
现在,只要服务器只接受来自特定IP地址的连接,就会在第一步中拒绝该连接,并解释从服务器“服务器不允许漫游”的消息。
因此,我最好的猜测是,您的服务器在某种程度上受到限制,只允许此密钥的特定IP地址。您可以通过多种方式执行此操作,但这是~/.ssh/authorized_keys
中的常见方法:
from="192.168.1.2" ssh-rsa AAAAB3NzaC[...]
要证明您可以在没有密码的情况下从加密的私钥中读取公钥,请运行:
ssh-keygen -y -f /path/to/private/key