无法使用公钥连接到 SFTP

无法使用公钥连接到 SFTP

我们使用 Copssh,在连接 SFTP 时,公钥无法正常工作。我尽可能多地查找与权限、步骤等相关的信息,但收到“服务器拒绝我们的密钥”消息。

我所做的是在 Copssh 中创建密钥对,将私钥导入 Puttygen,确保密钥位于 .ssh\authorized_keys 文件中,并尝试在 Filezilla 和 WinSCP 中进行连接。我还确保将 +ssh-rsa 添加到 PubkeyAcceptedKeyTypes,但仍然收到相同的消息。我还确认我在 sshd_config 文件中看到了此设置,但在连接时,服务器的日志中会出现以下两行:

2022.07.13 10:41:32 -  Failed publickey for devjoesftp2 from 10.81.70.3 port 64080 ssh2: RSA SHA256:GYnkAY7gsrTwT69r6XdEwVXOYb9F8KnguCGsX1/bMS0
2022.07.13 10:41:32 -  debug3: mm_answer_keyallowed: publickey authentication test: RSA key is not allowed

我的 Filezilla 看到这个:

Trace:  Connecting to 10.81.64.205 port 22
Trace:  We claim version: SSH-2.0-FileZilla_3.60.1
Trace:  Connected to 10.81.64.205
Trace:  Remote version: SSH-2.0-OpenSSH_9.0
Trace:  Using SSH protocol version 2
Trace:  Doing ECDH key exchange with curve Curve25519 and hash SHA-256 (unaccelerated)
Trace:  Server also has ecdsa-sha2-nistp256/rsa-sha2-512/rsa-sha2-256/ssh-rsa host keys, but we don't know any of them
Trace:  Host key fingerprint is:
Trace:  ssh-ed25519 255 SHA256:u4M+vpXf76UpFltUCPRDuv4dyiOmCa+/hxvEBwTnW4Y
Trace:  Initialised AES-256 GCM outbound encryption
Trace:  Initialised AES256 GCM outbound MAC algorithm (in ETM mode) (required by cipher)
Trace:  Initialised AES-256 GCM inbound encryption
Trace:  Initialised AES256 GCM inbound MAC algorithm (in ETM mode) (required by cipher)
Trace:  Successfully loaded 1 key pair from file
Status: Using username "devjoesftp". 
Trace:  Offered public key from "C:\Temp\SFTPTesting\devjoesftp1.ppk"
Status: Server refused our key 
Trace:  Server refused our key
Trace:  Attempting keyboard-interactive authentication
Trace:  Server refused keyboard-interactive authentication
Command:    Pass: 
Trace:  Sent password
Trace:  Password authentication failed
Status: Access denied 
Error:  Authentication failed.
Trace:  CControlSocket::DoClose(1030)
Trace:  CControlSocket::ResetOperation(1094)
Trace:  CSftpConnectOpData::Reset(1094) in state 3
Error:  Critical error: Could not connect to server
Trace:  CFileZillaEnginePrivate::ResetOperation(1094)

非常感谢您的任何帮助,因为我已经为此困惑了好几天,并且知道我遗漏了一些东西,因为当使用 Copssh 的实验室时,我无法重现这个问题。

答案1

原因就在您从服务器日志中粘贴的两行中:

[...] RSA key is not allowed

您的服务器配置不允许使用 RSA 密钥。我可以理解不允许使用 DSA 密钥,但 RSA 仍然被认为足够安全。

您可以尝试修复服务器配置,或者创建 ECDSA 或其他椭圆曲线密钥(假设服务器允许这些)。

答案2

在服务器上将 SFTP 用户添加为管理员后,此消息得到了更正(很奇怪,一旦发现为什么需要这样做,就无法隔离它)。之后,我得到了所有权不正确等错误,通过修改主目录的权限(从主目录中删除所有组等)可以解决此问题。

答案3

我花了几个小时解决这个问题。就我而言,是因为 authorized_keys 文件不是 UTF-8 编码的。我通过echo "<pubkey>" > authorized_keys在 PowerShell 中执行操作来生成它,但编码不正确。

从我的评论中添加:

是的,这是 authorized_keys 文件的格式。我相信 VSCode 允许您在窗口底部的状态栏中查看编码;我使用的旧服务器只有记事本,所以我将文本从文件中复制到剪贴板,创建一个新的 authorized_keys 文本文件,然后将文本粘贴到新文件中,这样就解决了问题。我猜,问题是当我在 PowerShell 中对新文件执行“echo ...”语句时,它默认为 UTF-16 文本编码。

相关内容