![SSH 密钥在 Unix 上要求输入密码,但在 Windows 上则不需要](https://linux22.com/image/1469582/SSH%20%E5%AF%86%E9%92%A5%E5%9C%A8%20Unix%20%E4%B8%8A%E8%A6%81%E6%B1%82%E8%BE%93%E5%85%A5%E5%AF%86%E7%A0%81%EF%BC%8C%E4%BD%86%E5%9C%A8%20Windows%20%E4%B8%8A%E5%88%99%E4%B8%8D%E9%9C%80%E8%A6%81.png)
我遇到了一个奇怪的问题。我正在使用 SSH 密钥连接到我的服务器。我已经生成了公钥和私钥,没有密码,并且我的公钥已安装在我的服务器上。我可以使用私钥从本地(Windows 7)连接到我的服务器,但是当我尝试使用相同的密钥从远程服务器(Linux 到 Unix)连接到我的服务器时,它会要求输入密码。我正在使用以下命令。
sftp -o "IdentityFile=<location-of-key>" [email protected]
my-local: Window 7
remote-server: Suse Linux 11 (x86_64)
my-server: SunOS
答案1
当您从 Linux 连接时,您需要将私钥从 ppk 格式(Windows 程序理解)转换为 openssh 格式。
这个问题的答案在堆栈溢出。
你需要:
- 加载您的私钥后,前往
Conversions->Export OpenSSH
PuttyGEN 并从中导出您的私钥。
答案2
尝试使用:
sftp -i "<location-of-key>" [email protected]
从手册页中:
-i 身份文件
选择从中读取公钥认证身份(私钥)的文件。此选项直接传递给 ssh(1)。