远程系统拥有公钥。
我的
.ssh/config
文件内容如下:
Host fubar Hostname fubar.ip.address.here User fubar_userid Port 22
- 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
尝试添加IdentityFile
和PasswordAuthentication
~/.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 ...
来解决任何问题。