为什么使用 sftp 时仍提示我输入密码?

为什么使用 sftp 时仍提示我输入密码?
  1. 远程系统拥有公钥。

  2. 我的.ssh/config文件内容如下:

 Host     fubar
 Hostname fubar.ip.address.here
 User     fubar_userid   
 Port     22
  1. known_hosts 条目:(与 #2 使用的 IP 地址相同)

    fubar.ip.地址.这里 ssh-rsa BLAH_BLAH_key.....

命令结果:

$>sftp fubar
Connecting to fubar ....
[email protected]'s password:

问题:
为什么我仍会提示输入密码?我需要做哪些更改才能使用密钥进行连接而不提示输入密码?

答案1

我不清楚您是否正在尝试设置 SSH 密钥。请查看这里以获取有关如何执行此操作的说明。

特别注意输入密码的部分。如果你不将其留空,那么当你想连接时,你仍然需要输入该密码。你可能会问自己“好吧,如果我仍然需要输入密码,为什么还要这么麻烦?”答案是,这个特定的密码是解密你的当地的当您想要使用密钥时,您无需输入任何密码。密码永远不会通过线路传到服务器,即使是散列形式。如果服务器位于其他人具有 root 访问权限的机器上(例如托管服务器),则您需要使用密码,因为如果其他人获得您的密钥,他们将无法在不解密的情况下使用它。但是,如果服务器位于您自己的本地机器上,只有您才有访问权限,那么您可以放心地将密码留空。这样,您就可以使用 SSH 或 SFTP,而无需任何提示。

答案2

尝试添加IdentityFilePasswordAuthentication~/.ssh/config

Host     fubar
Hostname fubar.ip.address.here
User     fubar_userid   
Port     22
IdentityFile fubar.private.key
PasswordAuthentication no

答案3

就我而言,给我的密钥是 PPK(PuTTY 私钥)文件。SSH(以及扩展的 SFTP)本身不支持 PPK 文件格式。

我必须将该文件转换为 PEM 格式:

puttygen keyfile.ppk -O private-openssh -o keyfile.key

我的~/.ssh/config

Hostname        sftp.example.com
User            MyUserName
Port            22
IdentityFile    /path/to/keyfile.key

始终使用ssh -vvv ...sftp -vvv ...来解决任何问题。

相关内容