创建进程失败错误:2 ssh_askpass: posix_spawn: 没有这个文件或目录 主机密钥验证失败,在远程服务器上的jupyter笔记本

11

所以我正在按照教程来连接我的Jupyter笔记本电脑,它正在我的远程服务器上运行,这样我就可以在本地的Windows计算机上访问它。

这些是我遵循的步骤。

在我的远程服务器上:

jupyter notebook --no-browser --port=8889

然后在我的本地机器上

ssh -N -f -L localhost:8888:localhost:8889 *******@**********.de.gyan.com

但我遇到了一个错误

CreateProcessW failed error:2
ssh_askpass: posix_spawn: No such file or directory
Host key verification failed.

我该如何解决这个问题?或者有其他方法可以实现相同的效果吗?

7个回答

6
如果您需要设置DISPLAY变量以便在Windows 10中使用VcXsrc或其他X-Server,解决方法是将您要连接的主机添加到known_hosts文件中。可以通过调用以下命令来完成:
ssh-keyscan -t rsa host.example.com | Out-File ~/.ssh/known_hosts -Append -Encoding ASCII;

太棒了。虽然我不知道它的意思,但它确实起作用了。 - mattgately
给这个添加一个解释会很有用。为什么它能工作?它是做什么的? - XYZT
1
我遇到了一个错误 bash: Out-File: command not found,你有什么想法吗? - Moohan
我可以使用 ssh-keyscan -t rsa spsssrv02 >> ~/.ssh/known_hosts 添加主机,但是这样会出现一系列不同但相关的错误:p - Moohan
2
请使用PowerShell。 "Out-File"是PowerShell命令,确保使用ASCII编码附加密钥。 如果您使用">>"添加密钥,则可能使用其他编码,这将破坏known_hosts文件。 - Manfred
它能够工作是因为它解决了这个 bug:https://github.com/PowerShell/openssh-portable/pull/506。 - philb

4
根据openssh文档,ssh客户端通常会在命令行提示用户输入密码,但如果设置了SSH_ASKPASSDISPLAY环境变量,它将尝试显示GUI对话框供用户输入密码。
然而在Windows上,由于缺少所需的ssh_askpass二进制文件,而且这似乎还是X11导向的,因此目前尚未得到很好的支持。
不过,Git for Windows似乎已经成功解决了这个问题。
当然,如果你只想在命令行中输入密码,请确保取消设置这些变量。根据提供的信息,无法确定为什么首先设置了该变量。

0

我相信你的 ssh 版本是 <= 8.6.0-beta1。只需在你的提升权限的 PowerShell中更新到版本 8.6.0-beta1+ 即可。

choco upgrade openssh

你可以通过以下方式检查你的版本:

choco list -lo openssh  # -lo: --localonly
openssh 8.6.0-beta1

0

您可以使用 POSIX shell 命令 "env" 显示 "环境变量" 的值。

或者您可以简单地输入 echo $DISPLAYecho $SSH_ASKPASS。这可能因 shell 而异。

解决问题的另一种方法是将您的公共 RSA 密钥插入目标系统上的 .ssh/authorized_keys 文件中,但这只有在您首先将此系统的 ID 输入到本地 known_hosts 文件中才能起作用,如上所述。

如何生成 RSA 密钥对:使用 ssh-keygen -t rsa ...

敬礼, Stefan B.


0

当我使用本地Windows10 VScode连接远程Linux服务器时,遇到了相同的问题。

CreateProcessW失败错误:2 ssh_askpass:posix_spawn:找不到文件或目录 主机密钥验证失败。

我通过升级OpenSSH到OpenSSH_for_Windows_8.9p1,LibreSSL 3.4.3来解决了这个问题。

  1. https://github.com/PowerShell/Win32-OpenSSH/releases下载OpenSSH
  2. 解压缩到某个位置
  3. 编辑系统环境变量'PATH',并将其移到旧的Openssh之上。

0

对我来说,问题出在.ssh文件夹下的配置文件中缺少一个exe文件。我的配置文件指向GIT工具connect.exe,而我没有安装Windows版的GIT,在安装了GIT之后,问题得到解决。


0
这种情况通常发生在使用cygwin时。在PATH中,c:\windows\system32\ssh.exe排在/usr/bin/ssh之前。修复PATH可以避免这个问题。
编辑/etc/profile并在末尾添加类似以下的一行:
PATH=/usr/bin:${PATH}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接