Windows 10 LinuxサブシステムSSHクライアントリソースが一時的に利用不可


24

Windows 10 Linux Subsystem内のリモートサーバーにSSH接続しようとしています。MS Windows 10 Home Insider Previewビルド14366を使用しています。

コマンドプロンプトで、次のように入力します。

ssh user@domain.com

sshコマンドを入力してから数秒後に、次のメッセージが表示されます。

ssh:ホストdomain.comポート22に接続:リソースが一時的に利用不可

Git Bash内でsshを使用するだけでなく、Puttyを使用して正常に接続できます。

そのため、この問題は私のローカルPCにあり、より具体的にはLinuxサブシステム内にあると考えるようになります。私はまだLinux環境に非常に精通しており、このメッセージの解釈方法がわかりません。使用できないリソースと、使用可能にするにはどうすればよいですか?


最初の推測:Windowsファイアウォール?ps>とスーパーユーザーの歓迎:) Googleは少しフォークに関連しているようです。してください編集記事を、あなたにこのエラーを与えるコマンドラインを追加します。
ハスター


Linuxサブシステムは「通常の」Windows 10ではなく、このバージョンでのみ使用できるため、Windows 10のInsider Previewビルドを使用していることを確認するだけです。それ以外の場合は、Cygwinを使用していますか?
gogoud

@ggoud-質問を更新して、オペレーティングシステムを含めました。それは確かにInsider Previewビルドです。
ケール

2
私もこの問題を抱えています。これは、SSHなどでサポートされているすべてのプログラムに影響gitしてapt-get
scicalculator

回答:


9

私が知る限り、これはWSLのバグです。うまくいけば、Microsoftは次のビルドでそれを修正するでしょう。しかし、今のところ、この少しいハックを使用できます。

アップデート#1:間違いなくバグ。この問題はGithubで発見されました。このすべてをやりたくない場合は、Thierがシェルの再起動の回避策を提案しました。

TL; DRこれを追加して、SSH構成を終了します(通常はにあります~/.ssh/config)。

Host *
    ProxyCommand nc %h %p %r

それが動作する理由はここにあります:私たちのSSHの問題は、ファイアウォールの問題ではありませんncし、telnet仕事と同じホストとポート(しようとする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このハックの上に存在する存在はそれを上書きします。新しいSSHコマンドが実行されると、SSH設定が再読み込みされ、他ProxyCommandにSSH がない場合、SSHはハックを使用ProxyCommandして「最も外側の」SSHセッションにのみ適用できるようにします。警告:設定ファイルの上部(またはSSHしようとしているエントリの上)にハックを置くと、aを必要とするSSHセッションProxyCommandはもう一方を無視しProxyCommand、代わりにホストのアドレスを解決して接続しようとしますNetcatで直接。


@ computergeek125の詳細に感謝します。残念ながら、提案されたように構成を設定した後でも、同じメッセージsshが表示されます:ホストdomain.comに接続しますポート22:リソースが一時的に利用できませんnc -v <host> <port>を実行すると、詳細な出力が得られます同じエラー:リソースは一時的に利用できません。私は何か間違ったことをしているのかもしれません。Git bashシェルを使用したsshの問題はないので、今のところはそれを使い続けます。ところで、私のシステムはビルド14393になっているので、これが質問の時点でのバージョンのバグだった場合、27ビルド以降のバグのままです。
ケール

それは面白いですね。そのビルドについていくつか調査する必要があります。私はその時点で14903を実行していました(現在は14905までです)。私が持っているビルドで修正されたものかもしれません。
computergeek125

SSH設定を編集するにはどうすればよいですか?Windowsコンソールのbashでvi ~/.ssh/config、空のファイルを開いてみました。私はあなたのコマンドを貼り付けましたが、保存しようとすると(esc->:-> wq)教えてくれます"~/.ssh/config" E212: Cannot open file for writing
ダン

それは奇妙だ。Windowsのどのビルドを実行していますls -al ~/.sshか?また、出力は何ですか?
computergeek125

3

これは私にとっても問題でした。私の(Symantec)ファイアウォールがbashからのすべてのインターネットトラフィックをブロックしていることがわかりました。

プロセスを認識しないサードパーティのファイアウォールプロバイダーの一般的な問題のようです。

https://github.com/Microsoft/BashOnWindows/issues/809

ファイアウォールを無効にすると、正常に機能しました。現時点ではより良い解決策を見つけることができません。



0

将来の参照のために、Nginxをインストールすると、デフォルトではSSHがブロックされ、「...

sudo ufw allow ssh


Windows 10自体にはファイアウォールがあります。なぜそれを提案したのですか?
ビスワプリヨ

私は同じ問題を持つ将来のユーザーのために、私は正確に同じ問題があったとnginxのは、サーバーにSSHをブロックしましたので、それがあったのでことを示唆しています
andrerpena
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.