我尝试了不同的方法并阅读了一些解决方案,包括:
为什么我不能以 root 身份使用 ssh?
使用 Winscp 编辑
Ubuntu 论坛上的一篇文章
我不明白为什么当我
ubuntu
通过 PuTTY 连接时,我可以拥有 root 权限并修改文件。但是,当我通过ubuntu
WinSCP 连接时,我是另一个用户(我在两个连接软件上使用了相同的用户名和相同的私钥 (pem)),无法修改文件。然后我从上面的链接中找到了一些可能的解决方案。我尝试设置
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。
您可以删除多余的用户或者增加该用户的登录限制。
登录将会成功。