写在前面

这是一篇问题解决记录。希望能帮到遇到同样问题的读者。

强烈建议:请您先看解决步骤一节,如果您发现在下的问题和您的问题不一样,就可以及时离开本文,避免浪费时间。

正文

问题描述

在使用GoLand连接远程服务器时遇到了奇怪的问题:通过ssh连接是 successfully connected! 的,但通过SFTP连接就报 EOF while reading packet 错误。跟[1](在下的答案也更新到了这里)描述的情况一模一样。

相关环境如下:

  1. GoLand:2021.3
  2. 远程服务器:Ubuntu 20.04,非root账户(但在下可以登录root)
  3. 本地系统:Win10

解决过程

1. 网上最普遍的说法是更新密码(因为密码已过期)或者重启IDE。但这两种方法都不奏效。首先,在下的服务器密码过期时间是never(读者可以自行学习如何查看Linux账户的密码过期时间),并且在下更改了密码后仍然没有解决问题。其次,重启IDE毫无帮助。

2. 在下突发奇想,既然GoLang无法SFPT连接远程服务器,那我直接通过命令行连接呢?这样就能确定是GoLand的问题还是服务器的问题了。于是,在下打开PowerShell,键入命令 sftp -v -P 22 user_name@IP ,回车,提示输入密码,输入密码再回车,得到了报错 debug1: Exit status 127 Connection closed 。

3. 在Google上检索 linux sftp Connection closed 127 ,于是找到了[2][3][4]。至此,问题解决。

原因分析

1. 在下回想起来,之前在服务器上卸载重装过openssh,当时一通乱搞,很可能就是那个时候“活没干利索”,导致配置文件中sftp-server的路径出现了错误,雷就此埋下。

2. GoLand的报错只报了结果而没有报原因。Connection因为找不到命令(因为路径没有配置对,当然找不到了,退出码127就是“command not found”的意思)而closed了,所以当reading packet时,自然就EOF了。如果死磕“EOF while reading packet”,可能到现在都不能解决问题。

启发

格局要打开,思维要发散。当一条路走不通时,静下心来,想想能不能另辟蹊径,通过某种方法缩小问题排查范围或者找到问题本质。

解决步骤

  1. 在服务器上 whereis sftp-server ,找到sftp-server的路径,比如 /usr/libexec/sftp-server 。
  2. 打开ssh_config(多半位于 /etc/ssh/sshd_config ),找到 Subsystem sftp 开头的一句,看后面的内容。如果后面的内容与步骤1找到的路径不一样,那您的问题多半就能解决了;反之,本文帮不了您了。
  3. 将路径改成正确的路径,如 Subsystem sftp /usr/libexec/sftp-server ,保存文件。
  4. 重启sshd。(类似 /etc/init.d/sshd restart 这样的命令,同理,sshd的路径可以通过 whereis sshd 查出来)
  5. 重启IDE,重新连接,成功。(这一步不能省略)

参考:

[1] ftp - SFTP - "EOF while reading packet" error in PhpStorm, works fine in FileZilla - Stack Overflow
[2] SFTP无法连接,报“Connection closed by server with exitcode 127_weixin_39833509的博客-CSDN博客
[3] SFTP error using Cyberduck: EOF while reading packet | DigitalOcean
[4] centos - Can connect via SSH - but not via SFTP? Exit status 127 - Server Fault

写在后面

希望这篇文章能帮到遇到同样问题的读者。由于在下才疏学浅,能力有限,错误疏漏之处在所难免,望广大读者批评指正,您的批评是在下前进的不竭动力。

昔日埋雷不经意,今朝踩雷排查难:JetBrains系列IDE使用SFTP连接远程服务器报“EOF while reading packet”解决方法的更多相关文章

  1. JetBrains系列IDE快捷键大全(转载)

    编辑 快捷键组合 说明 Ctrl + Space 代码自动完成提示(选择) Alt + Enter 显示意图动作和快速修复 Ctrl + P 参数信息 (在调用方法参数忘记的时候,提示) Ctrl + ...

  2. JetBrains系列IDE无法输入中文

    1 问题描述 环境Linux+fcitx,JetBrains的IDE无法输入中文,包括IDEA,PyCharm,WebStorm,CLion等等. 2 解决方案 Linux下一般使用fcitx进入中文 ...

  3. 自搭建jetbrains系列ide授权服务器

    1.下载 LicenseServer 地址:https://mega.nz/#!7B5UVY6b!Hae2ceTBPIrTowQN0sV9fQ5lGOKzGxas2ug02RZAdGU,里面有不同的服 ...

  4. JetBrains系列IDE创建文件模板

    #coding:utf-8 ''' @version: python3.6 @author: '$USER' @license: Apache Licence @contact: steinven@q ...

  5. 搭建Jetbrains家族IDE授权服务器

    虽然VS号称宇宙第一IDE但是也有不方便的地方,如果你也是C#码农我不得不向你推荐一个强大的插件ReSharper,他会是你的开发更加便捷,大大加快了开发的速度以及开发的乐趣.但是ReSharper并 ...

  6. [jetbrains系列] 外链第三方库+代码补全设置

    jetbrains系列的IDE真的是太好用了,有种相见恨晚的感觉. 在开发过程中第三方库是必不可少的,在开发的时候如果有一个可以补全的IDE可以节省查文档的时间. 举个例子:给pycharm配pysp ...

  7. JetBRAINS 系列注册机

    转载说明 本篇文章可能已经更新,最新文章请转:http://www.sollyu.com/1118/ 说明 这个是一国外的大牛写的一个 JetBRAINS 系列注册机,他里面包含了很多,我就不打字了. ...

  8. Linux(Manjaro) - IntelliJ IDEA (JetBrains) 字体模糊解决方法

    Linux(Manjaro) - IntelliJ IDEA 字体模糊解决方法 解决方法非常简单, 只要安装 JetBrains 提供的 jre 即可 使用 Octopi 或者 pacman 安装名为 ...

  9. 正版phpstorm,webstorm,goland(Jetbrains系列都可以)免费激活步骤(图文详解)(亲测有效)

    1 前言 Jetbrains系列都可以,包括webstrom,phpstorm,goland等. 附加其它方案如下: webstrom(注册机) goland(破解补丁) 2 步骤 1. 可以先试用, ...

随机推荐

  1. 【LeetCode】35. Search Insert Position 解题报告(Java & Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 二分查找 日期 题目地址:https://leetc ...

  2. 【LeetCode】396. Rotate Function 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址:https://leetcode.com/problems/rotate-fu ...

  3. Auto-Encoding Variational Bayes

    目录 主要内容 Encoder (损失part1) Decoder (损失part2) 伯努利分布 高斯分布 代码 Kingma D P, Welling M. Auto-Encoding Varia ...

  4. JavaScript交互式网页设计 • 【第5章 JavaScript对象】

    全部章节   >>>> 本章目录 5.1 Object 对象和 Date 对象 5.1.1 JavaScript 的内部对象 5.1.2 Object对象 5.1.3 Date ...

  5. Java集合与数组的联系和区别

    数组特点 存放一组相同的数据类型(基本类型和对象类型)的数据,从而实现对数据的管理. 优势:可以快速的通过下标对数组元素进行访问,效率高 劣势:容量实现定义好了,不能随着需求变化而扩容. 集合特点 集 ...

  6. Unity——ShaderLab基础

    1.格式 Shader "Custom/MyShader" //命名+右键创建shader路径 { //属性必须在代码里声明才能使用 Properties{ //属性,会出现在in ...

  7. Java中List与数组互相转换

    1.说明 在Java中,经常遇到需要List与数组互相转换的场景. List转换成数组,可以使用List的toArray()或者toArray(T[] a)方法. 数组转换成List,可以使用Arra ...

  8. C# 使用阿里云发送短信

    最近有个项目,短信服务使用的是阿里云的,由于时间问题,没有手动去构造sign去发送,而是直接使用阿里云的SDK发送,所以这里算是做个笔记,或许以后还能用得到 首先,我们需要安装阿里云的SDK,推荐使用 ...

  9. web自动化,下拉滚动到底部/顶部和下拉滚动到指定的元素

    在web自动化,经常会遇到页面显示内容太多的时候,页面就会出现滚动条,一般有两种方式进行下拉,一种是直接下拉到底部/顶部/中部,或者直接给定元素,直接下拉到指定元素的位置. 两种方式的共同点: 两种方 ...

  10. Python_闭包

    闭包并不只是一个python中的概念,在函数式编程语言中应用较为广泛.理解python中的闭包一方面是能够正确的使用闭包,另一方面可以好好体会和思考闭包的设计思想. 1.概念介绍 首先看一下维基上对闭 ...