我正在尝试通过 sftp 连接到其他人托管的服务器。
为了确保它有效,我按照密码提示的标准进行了操作,并且效果很好。sftp [email protected]
我正在设置一个 cron 脚本来每周发送一次文件,因此我已向他们提供了我们的公钥,他们声称已将其添加到他们的 authorized_keys 文件中。
我现在再试一次,仍然提示我输入密码,但现在密码不起作用了......sftp [email protected]
Connecting to [email protected]...
[email protected]'s password:
Permission denied, please try again.
[email protected]'s password:
Permission denied, please try again.
[email protected]'s password:
Permission denied (publickey,password).
Couldn't read packet: Connection reset by peer
但我确实注意到,如果我只是按下enter
(无密码)它就可以正常登录......
我的问题是:
- 有没有办法检查我的 sftp 连接正在使用哪个私钥/公钥对?
- 是否可以指定使用哪对密钥?
- 如果所有设置正确(使用正确的密钥对并添加到授权文件)为什么要求我输入空白密码?
提前感谢您的帮助!
更新
我刚刚跑sftp -vvv [email protected]
....
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /root/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug2: input_userauth_pk_ok: SHA1 fp 45:1b:e7:b6:33:41:1c:bb:0f:e3:c1:0f:1b:b0:d5:e4:28:a3:3f:0e
debug3: sign_and_send_pubkey
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /root/.ssh/id_dsa
debug3: no such identity: /root/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
它似乎表明它试图使用公钥...我遗漏了什么?
答案1
在详细模式下运行应该可以帮助您:
sftp -vvv [email protected]
它将向您显示它正在使用的密钥,并希望了解为什么它要求输入密码。
更新:您可以告诉 ssh 使用哪个私钥:http://www.cyberciti.biz/faq/force-ssh-client-to-use-given-private-key-identity-file/但我不确定你会如何在服务器端做同样的事
答案2
关于如何执行您所做的事情的第一个链接是:http://ask-leo.com/how_can_i_automate_an_sftp_transfer_between_two_servers.html
似乎描述了您采取的相同步骤,但没有导致麻烦。您是否确保您的私钥没有使用密码?该网站暗示密钥由 SFTP 自动匹配;我猜它使用密钥指纹。
另外,看看手册页对于 SFTP,并尝试指定所需的选项,以便优先使用基于密钥的身份验证而不是密码身份验证。
更新:
也许服务器端配置不正确?例如,authorized_keys 文件中指定 user@host 的条目不正确?