sftp 和公钥

sftp 和公钥

我正在尝试通过 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(无密码)它就可以正常登录......

我的问题是:

  1. 有没有办法检查我的 sftp 连接正在使用哪个私钥/公钥对?
  2. 是否可以指定使用哪对密钥?
  3. 如果所有设置正确(使用正确的密钥对并添加到授权文件)为什么要求我输入空白密码?

提前感谢您的帮助!

更新 我刚刚跑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

debug3:尝试私钥:/root/.ssh/id_dsa

debug3:没有这样的身份:/root/.ssh/id_dsa

您是否以 root 用户身份创建了密钥对?看起来您没有这样做,因为 /root/.ssh/id_dsa 似乎不存在(或者权限错误:只能由 root 读取/写入;没有世界/组读取/写入访问权限)。

编辑

从外观上看,您似乎已经生成了 rsa 密钥,ls但您提供的是 dsa 密钥。

答案2

您是说您可以使用空的 root 密码登录吗?我会认真考虑检查一下,确保帐户没有被盗用。

ls -l /root/.ssh/id_dsa

应该返回

-rw------- root ...

答案3

打开一个新终端,在另一个端口上以调试模式(-d 选项)运行 sshd。调试模式仅在使用完整路径时才有效。因此

`which sshd` -d -p 9999

观察该控制台的标准输出并再次尝试 sftp

sftp -oPort=9999 [email protected]

检查输出,如果您无法弄清楚发生了什么,请将其粘贴到这里。

答案4

ssh 对权限的要求非常严格。另外,您如何指定密钥?您是否让 ssh 尝试默认的 ~/.ssh/id_rsa ?

请尝试使用以下命令在 CLI 中指定密钥:-oIdentityFile=/root/.ssh/id_rsa

如果您有权以 root 身份访问服务器,请检查 auth.log,您就可以找出它拒绝密钥的原因……但有趣的是,服务器似乎在某一时刻接受了密钥。

相关内容