vscode使用ssh远程连接失败(及其他问题合集) 您所在的位置:网站首页 远程连接显示登录没有成功 vscode使用ssh远程连接失败(及其他问题合集)

vscode使用ssh远程连接失败(及其他问题合集)

2024-05-30 05:20| 来源: 网络整理| 查看: 265

文章目录 1. 常见错误和解决方案1.1 ERR Request 7 timed out (15000ms)1.2 ERR Error: WebSocket close with status code 1006 2. Error: Could not find pty on pty host2.1 确认错误2.2 搜索解决(需要等待官方debug) ✅ 8. 解决1. 更新vscode版本2. 配置ssh密钥8.2.1 想法来源8.2.2 具体操作 3. 👍 更换默认的ssh工具4. OpenSSH与gitSSH 3. 彻底卸载vscode4. vscode报错5. Failed to set up socket for dynamic port forward to remote port5.3 改服务器中ssh的配置 ❌5.2 删除服务器端的`.vs-code` ❌5.1 改本地配置文件 ❌ 6. 与终端pty主机进程的连接没有响应,终端可能停止工作(重启pty主机)7. 其它问题7.1 终端进程"C:\Windows\System32\cmd.exe"启动失败(退出代码:-1)7.2 已安装配置的调试类型'python',但在此环境中不受支持

1. 常见错误和解决方案

去查看自己的错误,

在vscode界面,帮助 -> 切换开发人员工具如果是windows系统,直接快捷键ctrl+shift+I打开开发者工具。 1.1 ERR Request 7 timed out (15000ms)

在这里插入图片描述 ERR Error: Time limit reached,超时错误,15000ms是个参数,可以设置响应等待时间,默认是15s,可以改为其他时间

参考 Stack Overflow:why ssh connection timed out in vscode?

文件-> 首选项->设置在常用设置中,找到扩展->Remote-SSH把15s改成更长的时间 在这里插入图片描述

另外,也有方法是修改一个配置文件。

依旧是在设置中,搜索ssh,找到 在setting.json中编辑 在这里插入图片描述 在这个文件夹中加入:"remote.SSH.useLocalServer": false,,编辑后文件类似下面这样:

{ "security.workspace.trust.untrustedFiles": "open", "remote.SSH.useLocalServer": false, "remote.SSH.remotePlatform": { "10.71.10.49": "linux", "10.70.21.10": "linux" }, "workbench.colorTheme": "Quiet Light", "workbench.iconTheme": "office-material-icon-theme", "terminal.integrated.windowsEnableConpty": false, }

如果没什么用的话,说明可能本地和远程服务器之间网可能确实不太好,大部分情况下重连几次就好了

1.2 ERR Error: WebSocket close with status code 1006

在开发者工具里信息如下: 在这里插入图片描述 其实在输出->remote ssh中,也会有一些有用的信息, 在这里插入图片描述 错误信息为:

Failed to set up socket for dynamic port forward to remote port XXX: Proxy connection timed out. Is the remote port correct? 大概意思是代理超时了。。(应该是vpn有问题?但是mobaxterm连接依然非常顺利)

参考Github:Vscode-issue 一些人选择降级,但是2021年是1.52版本,现在已经1.66了,而且这个问题已经关闭了,应该新版本已经解决了

参考

why ssh connection timed out in vscode? 2. Error: Could not find pty on pty host 2.1 确认错误

感谢Github上的issue:Keeps reconnect and reload when Remote SSH with VPN #2565,启发我去看自己的输出信息,确定远程log文件的位置。 在这里插入图片描述 使用xshell或者mobaxterm等远程连接工具,去查看上面这个日志文件,例如:

vim /home/user/.vscode-server/.dfd34e8260c270da74b5c2d86d61aee4b6d56977.log

找到其中的报错信息,例如我的是

[15:13:51] [Error: Could not find pty on pty host, at C._throwIfNoPty (/home/user/.vscode-server/bin/dfd34e8260c270da74b5c2d86d61aee4b6d56977/out/vs/platform/terminal/node/ptyHostMain.js:20:5336), at C.updateTitle (/home/user/.vscode-server/bin/dfd34e8260c270da74b5c2d86d61aee4b6d56977/out/vs/platform/terminal/node/ptyHostMain.js:20:1676), at Object.call (/home/user/.vscode-server/bin/dfd34e8260c270da74b5c2d86d61aee4b6d56977/out/vs/platform/terminal/node/ptyHostMain.js:13:8332), at E.onPromise (/home/user/.vscode-server/bin/dfd34e8260c270da74b5c2d86d61aee4b6d56977/out/vs/platform/terminal/node/ptyHostMain.js:12:4867), at E.onRawMessage (/home/user/.vscode-server/bin/dfd34e8260c270da74b5c2d86d61aee4b6d56977/out/vs/platform/terminal/node/ptyHostMain.js:12:4262), at /home/user/.vscode-server/bin/dfd34e8260c270da74b5c2d86d61aee4b6d56977/out/vs/platform/terminal/node/ptyHostMain.js:12:3554, at L.invoke (/home/user/.vscode-server/bin/dfd34e8260c270da74b5c2d86d61aee4b6d56977/out/vs/platform/terminal/node/ptyHostMain.js:8:145), at l.fire (/home/user/.vscode-server/bin/dfd34e8260c270da74b5c2d86d61aee4b6d56977/out/vs/platform/terminal/node/ptyHostMain.js:8:1856), at process.U (/home/user/.vscode-server/bin/dfd34e8260c270da74b5c2d86d61aee4b6d56977/out/vs/platform/terminal/node/ptyHostMain.js:6:34661), at process.emit (node:events:390:28), at emit (node:internal/child_process:917:12), at processTicksAndRejections (node:internal/process/task_queues:84:21)] 2.2 搜索解决(需要等待官方debug)

进一步搜索vscode remote Error: Could not find pty on pty host, ,根据Github的issue:Could not find pty on pty host #144548。

一模一样的报错信息(自动测试机器人发现的。。)2022.3.7才分配的错误报错代码位于这里修复时间从3月推迟到了4月等吧 ✅ 8. 解决

最大的收获,

https://code.visualstudio.com/docs/remote/troubleshooting#_configuring-key-based-authenticationhttps://code.visualstudio.com/docs/remote/ssh这两个文档里详细介绍了一些ssh连接可能出现的问题和解决方案 1. 更新vscode版本

前几天vscode更新了,目前版本是1.67.0

帮助->关于 在这里插入图片描述 2. 配置ssh密钥 8.2.1 想法来源

灵感来源于我在寻找替代方案时,看到VScode远程调试C++工程含X11(局域网)中配置ssh密钥,就可以省去输入密码。

想起来vscode之前一直断连,一直让输入密码,那直接配密钥就可以避开这一环节。

8.2.2 具体操作

生成密钥

在windows命令行里输入ssh-keygen,然后会有一些提示,直接三个回车。在C:\Users\yourname\.ssh文件夹中可以看到刚刚生成的密钥id_rsa.pub和私钥id_rsa

公钥复制到服务器中

将公钥复制到~/.ssh/authorized_keys文件中

测试是否配置成功

直接在命令行里输入ssh [email protected]看是否不需要密码可以直接连接

以上内容完成后,就去vscode进行远程连接,一般都会成功

我的到这里其实有个小插曲

由于公司电脑会自动加密,我在将公钥复制到服务器的过程中,不小心把公钥文件做了编辑,因此文件被加密了在vscode的Remote-SSH输出面板中,当时出现了C:\Users\yourname\.ssh\id_rsa invalid format这样的提示。重新生成密钥公钥,复制的时候小心不进行编辑,才成功的 3. 👍 更换默认的ssh工具

报错 close - IO is still pending on closed socket. read:0, write:1, io:0000019BC2EE60

更换OpenSSH为gitSSH

在vscode的设置中搜索remote.SSH.path,在弹出的输入框中输入自己git的ssh的路径,例如:D:\software\Git\usr\bin\ssh.exe

设置好之后再去进行远程连接,输出信息中会有类似

[22:59:38.015] Install and start server if needed [22:59:38.018] Checking ssh with "D:\software\Git\usr\bin\ssh.exe -V" [22:59:38.736] > OpenSSH_8.8p1, OpenSSL 1.1.1m 14 Dec 2021 [22:59:38.748] Running script with connection command: "D:\software\Git\usr\bin\ssh.exe"

即现在已经使用git的ssh在进行远程连接了

参考:

✅How can I use Windows’ built-in OpenSSH ssh-agent in VS Code, instead of Git bash’s?vscode-remote的Github issue:Can’t connect to Ubuntu: unreachable or not Linux x86_64 - IO is still pending on closed socket #51环境配置–关于vscode-ssh远程连接下openssh与git自带的ssh的冲突解决方法

其它:一般有两种解决方案,

一种是修改vscode的Remote-SSH插件的代码,对ssh加入-t参数,但是在我看到的Remote-SSH输出信息中,"C:\Users\huangs2\AppData\Local\Temp\vscode-linux-multi-line-command-XXXX-XXX.sh" | ssh -T -L 127.0.0.1:57124:127.0.0.1:33173 "XXX" bash,已经加入-T参数了,应该是这个问题已经被修复了,故不予考虑另一种方案是使用gitssh来代替默认的openssh,下面着重叙述这个方案

查看自己当前系统的SSH版本

使用vscode进行远程连接时,其实会打印出这个信息,类似OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2其实可以直接在命令行里输入ssh -V,也会得到OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2根据PowerShell/Win32-OpenSSH的Github issue: close - IO is still pending on closed socket. read:1, write:0, io:0000023DE45AF900 #1899这个问题可能与当前系统的openssh版本有关。一开始想着如果报错就重启OpenSSH,但是似乎没有输入命令的地方。。

参考:VSCode远程连接配置。虽然这个网站看起来不怎么行,但是上面这个文章真的很好,虽然找不到收录的来源。

以下是这篇文章的一部分内容摘录

VSCode远程连接到开发机,调试Python或C++程序时,通过配置本地ssh,理论上每次在VSCode中连接远程机器,输入密码后即可连接。

首先需要确保VSCode中安装了Remote SSH插件。

考虑两种情况:

连接不上,或者经常掉线

不想每次输入密码

对于问题1,考虑安装git-for-windows,并添加Git安装目录usrin到系统PATH环境变量,并重开VSCode以生效(使用git安装后带的ssh.exe替代Win10自带ssh.exe)

对于问题2,考虑配置ssh-key。按照VSCode官方文档:https://code.visualstudio.com/docs/remote/troubleshooting#_configuring-key-based-authentication

由于上述VSCode文档中的操作,是在本机的powershelll/terminal里操作的, 实际中可能执行会出错,例如提示:

close - IO is still pending on closed socket. read:1, write:0, io:0000001B883956190

4. OpenSSH与gitSSH

参考:让 git 使用 Windows 10 OpenSSH 在这里插入图片描述

另外,也可以参考:

✅Using the OpenSSH client included in Windows 10 (1809) as your Git’s SSH client以及Git on Windows: Force use of OpenSSH [closed] 3. 彻底卸载vscode

其实就是两步:

软件本身的卸载一些缓存文件(配置、插件等的卸载)

第一步: 软件本身的卸载,找到安装目录,点击unis000.exe 在这里插入图片描述 第二步:找到C:\Users\yourname\AppData\Roaming中的Code文件夹,删除。(如果没有找到AppData,在查看中勾选隐藏的项目) 在这里插入图片描述 第三步:找到C:\Users\yourname文件夹,删除其中的.vscode文件夹

在这里插入图片描述

参考:

💨 How to uninstall VS Code completely?How to cleanly / completely re-install VS Code on MacHow to reinstall VSCode without losing extensions and user settingsUninstall Visual Studio Code 4. vscode报错

窗口已崩溃(原因:“crashed”,代码:“-1073741819”) 在这里插入图片描述 网上常见的解决方式有两种:

设置成兼容模式加大给的内存

根据Github issue:The window has crashed (reason: ‘crashed’, code: ‘-1073741819’) #132945,其实可以通过某个命令打开错误记录,来查看更详细的错误信息。

根据文档:Creating and symbolicating local crash reports

1. 关闭vscode 2. 在命令行输入`code --crash-reporter-directory `,注意是绝对路径,这个路径是用于存放后续生成的故障转储文件(vscode在安装时默认添加到了path,所以可以执行) 例如:`code --crash-reporter-directory D:\package\vscode_dump` 3. 然后这个命令会自动打开vscode,你需要复现自己的错误 7. 然后去看这个文件夹下的`.dmp`文件记录

参考:

CSDN博客:解决 vscode运行项目卡死 提示:窗口已崩溃(原因oom)Github issue:The window has crashed (reason: ‘crashed’, code: ‘-1073741819’) #132945CSDN:解决 vscode 窗口故障CSDN:关于Visual Studo Code其中The window has crashed(宽口出现故障)问题!!! 5. Failed to set up socket for dynamic port forward to remote port

网上有很多解决方案,都试了一遍,对我的问题有效的我放在前面,无效的丢在后面了

5.3 改服务器中ssh的配置 ❌

参考VSCode Remote SSH Connection Failed和VSCode连接Linux服务器出错

注意,不要在容器里改,在服务器里改

# vi /etc/ssh/sshd_config "大概会看到以下内容" # override default of no subsystems Subsystem sftp /usr/lib/openssh/sftp-server # Example of overriding settings on a per-user basis #Match User anoncvs # X11Forwarding no AllowTcpForwarding yes "将AllowTcpForwarding 前的注释去掉,同时no改为yes" "然后重启服务" systemctl restart sshd

改了之后,短暂的连接正常

5.2 删除服务器端的.vs-code ❌

连接远程过程中,其实可以看到输出信息中,包含以下内容 在这里插入图片描述 切换到这个文件夹,删除你自己这个连接对应的文件夹,即上面的bin/dfd34e8260c270da74b文件夹,

# 打开会发现这里有很多其他连接的文件,删除自己的就行 /home/user/.vscode-server/bin> ls 6cba118ac49a1b88332f312a8f67186f7f3c1643 8908a9ca0f221f36507231afb39d2d8d1e182702 dfd34e8260c270da74b5c2d86d61aee4b6d56977 7f6ab5485bbc008386c4386d08766667e155244e c722ca6c7eed3d7987c0d5c3df5c45f6b15e77d1

再次连接,会发现一个同名文件会被创建,还是名为dfd34e8260c270da74b5c2d86。

5.1 改本地配置文件 ❌

根据【Vscode Remote】无法连接:Failed to set up socket for dynamic port forward to remote port

ctrl+shift+P,输入Remote-SSH:Settings,或者找到设置中用户->扩展->Remote-SSH。把Remote.SSH:Enable Agent Forwarding的勾选去掉 在这里插入图片描述 6. 与终端pty主机进程的连接没有响应,终端可能停止工作(重启pty主机)

和最开始2. 自己看日志找适合自己的解决方案中报错的问题类似,都是和pty主机有关系。

报错:与终端pty主机进程的连接没有响应,终端可能停止工作(重启pty主机) 在这里插入图片描述 对应的英语是:The connection to the terminal’s pty host process is unresponsive, the terminals may stop working.

虽然有些github上的issue显示这个问题已经被修复了,但是感谢Connection to terminal’s pty host process is becoming unresponsive #130320

文件->首选项->设置,搜索Windows Enable Conpty,将勾选去掉即可 在这里插入图片描述

参考

Github Issue:Terminal pty, not responding #148307Github Issue:The connection to the terminal’s pty host process is unresponsive, the terminals may stop working. #118159 7. 其它问题 7.1 终端进程"C:\Windows\System32\cmd.exe"启动失败(退出代码:-1)

在这里插入图片描述 真的是令人无语的问题,根据Exit codes可知:

终端启动失败时提示的退出代码时来自于shell,而不是由VS code生成的。VS code支持很多类型的shell,因此也会有很多种可能的退出代码。 因此在解决问题的时候,需要搜索shell及对应的退出代码。例如:PowerShell 4294901760,或者是cmd 1等。

操作1

参考2021-11-25终端进程“C:\Windows\System32\cmd.exe”已终止,退出代码: 3221225786。

可以将所有终端的使用旧版控制台选项都去掉,包括powershell,cmd,Anaconda Prompt以及Anaconda Powershell Prompt 在这里插入图片描述 没啥用。

操作2

参考关于vscode出现终端进程终止,退出代码:1的情况

其认为错误原因是: 由于vscode安装目录的文件名中有空格存在,将其改为其他字符或删除空格 我也确实有这个问题,重新安装之后,报另一个错误。

无效

7.2 已安装配置的调试类型’python’,但在此环境中不受支持

已安装配置的调试类型’python’,但在此环境中不受支持 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有