VScode 远程连接错误:进程试图写入不存在的管道

dou*_*uyu 57 ssh ssh-keys visual-studio-code vscode-settings vscode-remote

我用vscode和remote-ssh连接我的服务器,配置后,我想连接我的主机,但失败了,对话框显示:“无法建立与XX的连接,进程试图写入一个不存在的管道。”

输出:

[16:45:20.916] Log Level: 3
[16:45:20.936] remote-ssh@0.49.0
[16:45:20.936] win32 x64
[16:45:20.944] SSH Resolver called for "ssh-remote+aliyun", attempt 1
[16:45:20.945] SSH Resolver called for host: aliyun
[16:45:20.945] Setting up SSH remote "aliyun"
[16:45:21.012] Using commit id "c47d83b293181d9be64f27ff093689e8e7aed054" and quality "stable" for server
[16:45:21.014] Install and start server if needed
[16:45:21.019] Checking ssh with "ssh -V"
[16:45:21.144] > OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5
[16:45:21.214] Running script with connection command: ssh -T -D 5023 aliyun bash
[16:45:21.221] Terminal shell path: C:\WINDOWS\System32\cmd.exe
[16:45:21.504] > 
> 
>
> ]0;C:\WINDOWS\System32\cmd.exe
[16:45:21.505] Got some output, clearing connection timeout
[16:45:21.577] > 
> 
>
> 
[16:45:21.592] > Bad owner or permissions on C:\\Users\\DY/.ssh/config
> 
[16:45:21.689] > The process tried to write to a nonexistent pipe.
> 
[16:45:22.091] "install" terminal command done
[16:45:22.092] Install terminal quit with output: The process tried to write to a nonexistent pipe.
[16:45:22.093] Received install output: The process tried to write to a nonexistent pipe.
[16:45:22.096] Resolver error: The process tried to write to a nonexistent pipe
[16:45:22.107] ------

Run Code Online (Sandbox Code Playgroud)

dou*_*uyu 75

将绝对文件路径添加到自定义SSH配置文件(C:\Users\{USERNAME}\.ssh\config),我的问题就解决了。

在此处输入图片说明

  • @yishirasowsky `crtl+shift+p` 并输入remote-ssh: 设置。 (7认同)
  • 除此之外,我还必须添加新主机然后连接到它。仅仅连接到主机是行不通的。 (4认同)
  • 您是如何到达答案中显示的“远程 ssh 等”屏幕的? (4认同)
  • 也尝试删除known_hosts 文件。或者编辑以删除服务器指纹 (3认同)
  • 为什么这会有帮助?它没有为我解决任何问题。 (2认同)

小智 25

如果您格式化/重新安装服务器操作系统,但使用与以前相同的 IP,您可能会遇到指纹不匹配的情况。

您可能需要删除此文件中的旧指纹:C:\Users\xxx.ssh\known_host

和文件中的旧 IP:C:\Users\xxx.ssh\config

然后再次尝试添加主机。

  • 就是这样......疯狂的是错误消息没有给你任何提示。 (2认同)

Leo*_* AB 13

对我有用的:

  1. 删除C:\Program Data\ssh和中的 ssh config 文件夹C:\<user>\.ssh
  2. 在 VS Code 中,按F1,选择Remote-SSH: Connect to Host...
  3. 不要在提示中输入任何内容,而是选择+ Add New SSH Host..
  4. 输入完整的 ssh 命令,包括密钥(如果是 Windows,您可能需要用双引号将路径括起来) ssh -i "C:\path\to\key" user@host。(您需要确保该密钥具有有限的权限。删除所有继承的权限,仅将完全控制权授予所有者。)
  5. 系统将要求您选择一个将在其中创建新配置文件的文件夹。选择两个选项中的任何一个。
  6. 将会出现提示,通知新的配置文件已创建。点击connect


Gon*_*ica 12

至少可能发生三件事:

选项1

配置文件的位置不是绝对位置,这意味着您可能正在使用配置文件所在的文件夹的位置。

如果是这种情况,请访问 VSCode 中的用户设置。滚动到Extensions> Remote - SSH。并config在自定义 SSH 配置文件的绝对文件路径末尾添加。在 Windows 中,可以是

C:\Users\user\.ssh\config
Run Code Online (Sandbox Code Playgroud)

见下图

在此输入图像描述


选项2

身份验证问题。

如果是这种情况,可以解决的问题之一就是生成新的 SSH 密钥。

在 Windows 中,为此,我建议使用MobaXterm

在 MobaXterm 中,打开一个新终端并写入

ssh-keygen -b 4096 -t rsa
Run Code Online (Sandbox Code Playgroud)

然后,在配置文件中,确保 指向IdentityFile密钥的位置。MobaXterm 的主目录通常是C:\Users\user\Documents\MobaXterm. 如果方便的话,可以将密钥复制/移动到C:\Users\user\.ssh配置文件中,然后添加IdentityFile ~/.ssh/KEY_rsa(其中KEY_rsa是[公共]密钥的名称)。

请注意,如果您使用PuTTY生成密钥,则在服务器 OpenSSHauthorized_keys 文件中,不需要保存的公钥,而是显示在顶部的公钥(见下图):

在此输入图像描述


选项3

你的config文件可能有错。

配置文件通常如下所示。仔细检查字段是否包含建立连接所需的信息。

Host Test # This is the name we want to give the host
    User user # This is the username
    Hostname blabla.com # This is the hostname
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/KEY_rsa # This is the location of the key
    IdentitiesOnly yes
    Port 50    # This varies
Run Code Online (Sandbox Code Playgroud)

  • 最全面的答案。选项 1 为我做到了。我浪费了几个小时和大量的精力才找到这个。 (2认同)

dal*_*der 6

对我有用的是删除文件夹的所有内容:C:\Users\MYNAME.ssh 这意味着删除配置文件和已知主机。配置可能是要删除的最重要的配置。

  • 删除整个配置目录或文件非常代表“我不知道我在做什么”行为。您只需从“known_hosts”中删除冲突的行,当然在此之前,请仔细检查您的远程主机是否没有被模拟。 (3认同)
  • @NdFeB 当有 10 个不同的答案并且没有一个起作用时,我很确定没有人知道他们在做什么。我的解决方案是..重新启动我的计算机-__-' (2认同)