SSH 登录可以,但 SFTP 登录不行

qre*_*eon 1 ssh ftp sftp

我已经看到了这个帖子,但它没有回答我的问题,因为它已经死了。

正如标题所示,当我使用 putty 登录我的 VPS 时,一切正常。但是当通过 SFTP 连接 FileZilla 时,我总是收到错误:(Authentication failed, cannot establish connection to the server粗略翻译)。
我在 FileZilla 中使用了正确的设置,因为我 3 天前才收到此错误,并且之前它工作正常:通过端口 22 进行 SFTP。

这是一个iptables -L
(TL;DR:接受端口 20、21 和 22 上的所有进出,以及端口 1024+ 上的被动入站连接)

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ftp ctstate ESTABLISHED /* Allow ftp connections on port 21 */
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ftp-data ctstate RELATED,ESTABLISHED /* Allow ftp connections on port 20 */
ACCEPT     tcp  --  anywhere             anywhere             tcp spts:1024:65535 dpts:1024:65535 ctstate ESTABLISHED /* Allow passive inbound connections */
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh ctstate ESTABLISHED /* Allow ftp connections on port 22 */

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ftp ctstate NEW,ESTABLISHED /* Allow ftp connections on port 21 */
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ftp-data ctstate ESTABLISHED /* Allow ftp connections on port 20 */
ACCEPT     tcp  --  anywhere             anywhere             tcp spts:1024:65535 dpts:1024:65535 ctstate RELATED,ESTABLISHED /* Allow passive inbound connections */
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh ctstate ESTABLISHED /* Allow ftp connections on port 22 */
Run Code Online (Sandbox Code Playgroud)

我确实手动设置了这个,以防万一这是我的问题的根源,但没有任何改变。

我也按照上一个线程的建议设置了PasswordAuthentication yesLogLevel DEBUG,但重新启动 sshd 后也没有任何改变。以下是我尝试连接 FileZilla 时
遇到的情况:实际上与 SFTP 登录无关。 它只包含有关我访问该文件的信息。 /var/log/auth.log
sudo

我不知道它是否来自 FileZilla,因为auth.log没有显示任何与 SFTP 连接相关的内容,或者它来自 sshd 配置,只是忽略了 SFTP 请求。
我似乎找不到任何可以帮助我的东西,你有什么建议吗?

感谢您花时间阅读本文。

Pau*_*lus 5

这可能是由登录期间写入控制台的 echo 或其他命令引起的。例如,我试图为复杂的构建过程设置环境变量,并在我的所有 .profile 文件中添加了回显,包括.bashrc我尝试过的所有 sftp 客户端:filezilla、Beyond Compare 突然停止工作,但没有给出有用的错误消息。超越比较说道:

Connection failed: Failed to establish SFTP connection (error code is 103)
Failed to establish SFTP connection (error code is 103)
Run Code Online (Sandbox Code Playgroud)

最后,公司 IT 要求我尝试 WinSCP,它给出了一条有用的错误消息:

Received too large (1701737573 B) SFTP packet. Max supported packet size is 1024000 B. 
The error is typically caused by message printed from startup script (like .profile). 
The message may start with "ente". 
Cannot initialize SFTP protocol. 
Is the host running a SFTP server?
Run Code Online (Sandbox Code Playgroud)

这给了我所需的线索,并在删除该行后

echo 'entering .bashrc'
Run Code Online (Sandbox Code Playgroud)

从我的.bashrcsftp 再次正常工作

类似问题的答案也提到了这一点以及如何检查启动脚本的输出

  • 您还可以修改您的`.bashrc`:`test -t 1 && echo 'Entering .bashrc'` (2认同)