通过 WinSCP 使用 root 帐户连接到服务器时出现“接收太大的 SFTP 数据包”错误

通过 WinSCP 使用 root 帐户连接到服务器时出现“接收太大的 SFTP 数据包”错误

我尝试了不同的方法并阅读了一些解决方案,包括:
为什么我不能以 root 身份使用 ssh?
使用 Winscp 编辑
Ubuntu 论坛上的一篇文章

  1. 我不明白为什么当我ubuntu通过 PuTTY 连接时,我可以拥有 root 权限并修改文件。但是,当我通过ubuntuWinSCP 连接时,我是另一个用户(我在两个连接软件上使用了相同的用户名和相同的私钥 (pem)),无法修改文件。

  2. 然后我从上面的链接中找到了一些可能的解决方案。我尝试设置root密码和permitRootLogin。但是,当我使用用户名登录时root,它显示:

    收到的 SFTP 数据包过大(1349281121 B)。支持的最大数据包大小为 1024000B。此错误通常是由启动脚本(如 .profile)打印的消息引起的。该消息可能以“Plea”开头。

    无法初始化 SFTP 协议。主机是否正在运行 SFTP 服务器?

    而当我将用户名改回时ubuntu,它就可以正常工作(但当我不是用户时,我无法修改文件root)。

我很困惑,如果您能指出我,我将不胜感激。

答案1

我相信您收到的错误消息可以解释这一点。

您的服务器root帐户错误地设置了配置文件脚本。其中一些脚本会打印违反 SFTP 协议的消息。终端和非终端会话(分配了和未分配 TTY 的会话)有不同的配置文件脚本。只能从用于终端会话的脚本打印消息。当您从用于非终端会话的配置文件脚本打印消息时,它会破坏使用严格协议(例如 SFTP 或 SCP)的任何客户端。

错误信息以“Plea”开头。它很容易是一些琐碎的事情,例如

echo "Please be careful when using root account!"

当您使用 SSH 终端(例如 PuTTY)登录时,您将看到完整的消息。

通常,您需要将打印消息的命令从.bashrc脚本移动到.bash_profile

它与帐户一起工作ubuntu,因为它的配置文件脚本不会打印错误消息。

另请参阅 WinSCP 文档以了解错误消息“收到的 SFTP 数据包过大(... B)。支持的最大数据包大小为 102400 B”

答案2

我遇到了同样的问题,并发现在 /etc/security/limits.conf 中用户的最大登录次数已超出,因此不允许我使用 winscp。

您可以删除多余的用户或者增加该用户的登录限制。

登录将会成功。

相关内容