在 PyCharm 中使用远程解释器时出现“指示数据包长度太大”错误

问题描述 投票:0回答:4

我正在 PyCharm 中设置远程 SSH 解释器,但是当我尝试在远程计算机上选择解释器的位置时,出现以下错误:

Indicated packet length 1952805748 too large

我该如何解决这个问题?

pycharm sftp
4个回答
13
投票

我收到此错误是因为我的

.bashrc
文件打印到标准输出。当 PyCharm 通过 SFTP 连接到远程解释器的机器时,会获取
.bashrc
。它必须保持安静,否则会干扰 SFTP 协议。

解决方案是在不交互运行时提前退出

.bashrc
,方法是将此行放在顶部:

# If not running interactively, return early
[[ $- == *i* ]] || return

进一步阅读:


1
投票

经过一番检查,我找到了这个问题的最终解决方案。

其实不是

pycharm
intellij
的问题。

sync
文件到远程服务器的底层工作原理是使用
sftp
上传文件和从远程服务器下载文件。

也许您已经注意到它在使用

root
用户同步时有效。

对于不同的人,他们使用不同的

sftp
实用程序,例如
putty
Linux client
Windows cmd
Power shell
xshell
等等。

通过在

sftp root@host
中使用命令
sftp user@host
xshell
(其中用户是您登录的用户)。

xshell
将要求您通过对话框输入密码。

这两个命令都可以工作。

但是当您通过相同的命令使用

windows cmd
时,这里的消息会跳出。

Received message too long 1399157792
Ensure the remote shell produces no output for non-interactive sessions.

您会看到,

pycharm
只需转发此信息即可。

这里有一个关于长消息的相关问题,sftp 给出错误:“收到的消息太长”,是什么原因?

因此,我们需要将

sftp server
配置更改为
non-interactive
模式。

通过编辑

/etc/ssh/sshd_config
,需要你有
root permission
或询问服务器管理员

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

并重启

sshd
服务,通过
systemctl restart sshd


0
投票

我也遇到了类似的问题。每次登录时,我都会 pip 更新集群中的一堆软件。因此,如果 pycharm 每次推送时都在集群中运行 bashrc,并且由于某种原因它处理其输出,那么这就是一个问题。我删除了远程/集群中 bashrc 中打印的所有行。


0
投票

注意不要添加 '[[ $- == i ]] ||返回'到您的 .bashrc 除非它是您的本地计算机。

与此处描述的类似,scp 抱怨 .bashrc 的输出(它在登录时给出问候语)。有趣的是,FreeBSD 或 OpenBSD SSH 从来没有抱怨过同样的事情。但是Ubuntu...

嗯,我记得过去某些版本的 SSH 也有类似的问题,所以我添加了 '[[ $- == i ]] || return' 到我的 .bashrc,正如上面的 Killan Obermeier 所建议的那样。我做到了,下次无法登录,本地或远程都无法登录。收到正确的密码后,提示将重置回登录哈哈。幸好这不是远程机器。

© www.soinside.com 2019 - 2024. All rights reserved.