Windows 10 Linux子系统SSH客户端资源暂时不可用


24

我正在尝试使用Windows 10 Linux子系统中的SSH服务器。我正在使用MS Windows 10 Home Insider Preview内部版本14366。

在命令提示符下,键入:

ssh user@domain.com

键入ssh命令几秒钟后,我收到以下消息:

ssh:连接到host domain.com端口22:资源暂时不可用

我可以使用Putty以及Git Bash中的ssh成功进行连接。

因此,这使我相信问题出在我的本地PC上,更具体地说是在Linux子系统内。我对Linux环境仍然很满意,不确定如何解释此消息。哪些资源不可用,我应该怎么做才能使其可用?


首先猜测:Windows防火墙?ps>并欢迎超级用户使用:) Google似乎与fork有关。请编辑帖子,并添加给出此错误的命令行。
Hastur


仅检查您使用的是Windows 10的Insider Preview版本,因为AFAIK Linux子系统仅在此版本中可用,而在“正常” Windows 10上不可用。否则,您是否正在使用Cygwin?
gogoud

@ggoud-我已经更新了问题,以包括操作系统。这确实是Insider Preview版本。
凯尔

2
我也有这个问题。它会影响ssh支持的所有程序,例如gitandapt-get
scicalculator

Answers:


9

据我所知,这是WSL中的错误。希望微软会在下一个版本中对其进行修复。但是目前,我们可以使用这个稍微难看的hack。

更新#1:绝对是一个错误。在Github上发现了此问题。如果您不想经历所有这些,那么他们提出的重新启动外壳的变通方法对我也适用。

TL; DR将此添加到END您的SSH配置(通常位于~/.ssh/config):

Host *
    ProxyCommand nc %h %p %r

它起作用的原因如下:我们的SSH问题不是防火墙问题,因为nctelnet可以在同一主机和端口上工作(尝试telnet <host> <port>nc <host> <port>:您应该看到类似的内容SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.7)。这是我们可以利用的优势。

SSH允许使用接受标准输入的代理,然后通过该ProxyCommand选件将其发送到服务器的端口。通常,它通过使用中间堡垒SSH服务器(有时称为跳转主机)将网络隧道连接到受保护的主机(有关更多信息,请参见此链接)。

该黑客告诉SSH使用没有跳转主机的代理。因此,它通过将所有网络资源分配推送到有效的Netcat来解决SSH失败的TCP资源分配问题。SSH只是在没有任何网络连接的情况下完成其SSH任务,而Netcat通过TCP连接将原始数据发送到SSH服务器。

警告:由于此操作会修改ProxyCommand所有主机的,因此我不知道它如何与使用的其他SSH配置主机交互ProxyCommand。我有几台服务器可以用来测试它,我将用结果更新此答案。有可能没有有害的副作用,但是我不能保证。

更新#2:我对一些服务器进行了一些测试,这似乎可行。当有多个条目应用时,SSH使用配置中最上面的条目。因此,ProxyCommand该hack之上的现有存在将覆盖它。当执行新的SSH命令时,它会重新读取SSH配置,如果没有其他配置,则ProxyCommandSSH使用我们的hack ProxyCommand,从而使其仅适用于“最外面的” SSH会话。警告词:如果将hack放在配置文件的顶部(或尝试SSH进入的条目的上方),则要求a的SSH会话ProxyCommand将忽略另一个ProxyCommand,而是尝试解析主机地址并连接直接与Netcat合作。


感谢您提供详细信息@ computergeek125。不幸的是,即使按照建议设置了配置,我仍然会收到相同的ssh消息:连接到host domain.com端口22:资源暂时不可用当我运行nc -v <host> <port>时,我得到了详细的输出相同的错误:资源暂时不可用。我可能做错了事,不确定。由于使用Git bash shell没有任何ssh问题,因此我暂时坚持使用。顺便说一句,我的系统现在位于内部版本14393,因此,如果这是在提出问题时版本中的错误,那么它仍然是以后会构建的错误27。
2013年

好吧,这很有趣。我将不得不对该构建进行一些研究。当时我正在运行14903(现在是14905)。这可能是他们在我的版本中修复的。
computergeek125

如何编辑SSH配置?在Windows控制台bash中,我尝试vi ~/.ssh/config打开一个空文件。我粘贴了您的命令,但是当我尝试保存(esc->:-> wq)时,它会告诉我"~/.ssh/config" E212: Cannot open file for writing
Dan

好吧,这很奇怪。您正在运行哪种Windows版本,输出是ls -al ~/.ssh什么?
computergeek125



0

供以后参考,当您安装Nginx时,它将默认情况下阻止SSH并显示错误消息“资源暂时不可用”,除非您...

须藤UFW允许SSH


Windows 10本身具有防火墙。你为什么这么建议?
Biswapriyo

我建议对于具有相同问题的未来用户,因为我有完全相同的问题,这是因为Nginx阻止SSH到服务器
andrerpena
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.