使用 WinSCP 以 Root 登录到 Google Compute Engine 虚拟机实例时收到“收到的 SFTP 数据包太大”
Posted
技术标签:
【中文标题】使用 WinSCP 以 Root 登录到 Google Compute Engine 虚拟机实例时收到“收到的 SFTP 数据包太大”【英文标题】:Getting "Received too large SFTP packet" when logging in with Root using WinSCP to Google Compute Engine virtual machine instance 【发布时间】:2016-01-29 07:11:36 【问题描述】:您好,我可以使用自己的用户名通过 WinSCP 登录 GCE 虚拟机,但无法以 root 身份登录...这是 Google 的默认设置,可以更改。
改成这样:
第一步:登录 SSH 和 Su Root
# sudo su root
第 2 步:更改密码 Root
#passwd root
第 3 步:配置 SSHD 允许 Root 登录
#nano /etc/ssh/sshd_config
PermitRootLogin yes
PasswordAuthentication yes
#service sshd restart (I used ssh as I'm using ubuntu and sshd wouldn't work)
试图通过 WinSCP 以 root 身份登录,但我得到了
"接收到的 SFTP 数据包太大 (1349281121 B)。支持的最大数据包 大小为 1024000 B. 该错误通常是由打印的消息引起的 来自启动脚本(如 .profile)。该消息可能以 '请求'。”无法初始化 SFTP 协议。主机是否运行 SFTP 服务器?”
有什么想法吗?
【问题讨论】:
尝试登录新创建的 AWS EC2 实例时出现错误。解决方案是使用admin
用户名而不是root
。 恳求的事情原来是一条询问Please login as the user "admin" rather than the user "root"
的消息。
【参考方案1】:
收到过大的 SFTP 数据包。支持的最大数据包大小为 102400 B
原因: 当您的 .bashrc 文件将数据打印到屏幕上时(例如archey、screenfetch),可能会出现此问题。 .bashrc 文件会在每次初始化任何控制台 shell 时运行。
解决方案: 只需将所有生成输出的脚本从您的 .bashrc 文件移动到您的 .bash_profile。 .bash_profile 仅在您创建物理 shell 会话时运行。
【讨论】:
你是对的;请注意,您的配置文件中的任何“回声”命令都可能导致问题。要解决此问题,请在 .bashrc 文件中注释任何类型的“回声”并重新连接会话。 我回到 SCP,为什么 WinSCP 不应该忽略那个打印,很难从 .bashrc /etc/bashrc /etc/profile 等中挖掘出来。很多 非常感谢。我在.bashrc
中添加了echo
语句,它阻止了Transmit for Mac 连接到我的Amazon Linux EC2 实例。以防有人遇到与我相同的问题。 (错误只是“无法连接”)【参考方案2】:
注意:仅适用于遇到此问题并且只想复制文件并且与他们使用什么文件协议无关的任何人。您只需将文件协议从 SFTP 切换到 SCP 即可避免此问题。认为它可能值得一提。
【讨论】:
tks,使用 SCP 工作,但我仍然收到错误,我的 .bashrc /etc/bashrc... 没有打印出任何东西【参考方案3】:如果您使用 Ubuntu linux 并尝试连接服务器,那么“请以 Ubuntu 用户身份登录”您应该以 ubuntu 用户身份登录,而不是以 root 身份登录。
试试吧,希望对你有用!
谢谢!
【讨论】:
从 CentOS 6 切换到 7 时出现同样的问题,它曾经可以在 root 下工作,但现在不行了。使用 root 进行 SSH 尝试以Please login as the user "centos" rather than the user "root".
响应在 WinSCP 中更改用户解决了它。【参考方案4】:
嗯,我在 WinSCP 的“协议选项”下的高级设置中添加了这个: sudo /usr/lib/openssh/sftp-servers
我现在可以使用自己的用户名登录并移动文件。虽然不完全确定这是如何工作的,但我认为它以某种方式将您更改为登录时的 root 用户?
更多信息:https://winscp.net/eng/docs/faq_su
【讨论】:
这也适用于 Ubuntu 18.04,只需删除最后一个 's':sudo /usr/lib/openssh/sftp-server not '..servers'【参考方案5】:请参阅Received too large (... B) SFTP packet. Max supported packet size is 102400 B 上的 WinSCP 文章
如果……(来自主题 [错误消息])是一个非常大的数字,那么问题通常是由某些配置文件/登录脚本打印的消息引起的。它违反了 SFTP 协议。其中一些脚本甚至会在非交互式(非 TTY)会话中执行,因此它们不能打印任何内容(也不能要求用户输入内容)。
【讨论】:
我没有尝试这样做,因为在 WinSCP 高级设置中添加“sudo /usr/lib/openssh/sftp-servers”有效。谢谢。【参考方案6】:要添加到@ThatOneCoder 的答案,原因是 .bashrc 的输出过多:例如Ubuntu,还有系统范围的 /etc/bash.bashrc 可能“太罗嗦”并导致 Received too large SFTP packet 错误。
这是一个“系统范围的 .bashrc”,如果您想为所有登录执行代码,这是放置它的一个位置。如果您取消了 ~/.bashrc 并且仍然出现错误,请检查 /etc/bash.bashrc 的内容。
【讨论】:
【参考方案7】:我在尝试通过 WinSCP 以“root”身份登录我的 ubuntu 16.04 EC2 服务器时遇到了同样的问题。我花了很多时间试图修复它,但最终一个简单的解决方法对我有用。
我使用用户名“ubuntu”的 PuTTY SSH 进入实例。在此之后我输入了
sudo -i
这样用户就变成了root。
【讨论】:
以上是关于使用 WinSCP 以 Root 登录到 Google Compute Engine 虚拟机实例时收到“收到的 SFTP 数据包太大”的主要内容,如果未能解决你的问题,请参考以下文章