クールなブログ投稿ですね?いいタイトルでしょ?
この投稿の指示を実行しないでください
外部マシンから Windows 10 で Bash と WSL2 に SSH 接続する方法を簡単にフォローアップする方法を読んで、適切な決定を下すまでは!
OpenSSH が Windows に搭載されてから 5 年が経ちましたが、これはすばらしいことです。できることはたくさんあります!
- Windows 10 に組み込まれている OpenSSH を使用して、リモートの Linux マシンに自動的に SSH で接続する方法
- Linux または Windows または任意の場所から Windows 10 マシンに SSH 接続する方法
しかし、多くの場合、SSH を使用したくない ことはありません。 Windows 10 マシンではなく、Windows 10 マシン内/背後で実行されている WSL2 に。 WSL2 は内部からポートを転送できますが (たとえば、WSL2 インスタンス内の localhost:8000 がローカルの Windows 10 マシンから利用可能になります)、マシンの完全な外部から WSL2 ポートへのパスを構築する場合は、もっと明確にする必要があります。
WSL に OpenSSH サーバーをインストールする
まず、Linux ディストリビューション内に OpenSSH サーバーをインストールします。
scott@IRONHEART:~$ sudo apt install openssh-server
[sudo] password for scott:
Reading package lists... Done
Building dependency tree
Reading state information... Done
openssh-server is already the newest version (1:7.6p1-4ubuntu0.3).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
SSH ポート番号を決定する
次に、WSL2 で /etc/ssh/sshd_config を編集し、Port 行のコメントを外します。
<ブロック引用>
sudo nano /etc/ssh/sshd_config
で編集しました 、恥ずかしくない!
SSH は通常 22 ですが、私は 2222 のようなものを使用するのが好きなので、あまり明白ではありませんが覚えやすく、Windows のマシンの 22 とは異なります。0.0.0.0 でリッスンするように指示したことに注意してください。認証にパスワードではなく SSH キーを使用する場合は、PasswordAuthentication を「no」に設定することもできます。何をしているのか分かっていて、ssh キーの使い方がわからない場合は、「yes」に設定してください。
/etc/ssh/sshd_config
...STUFF ABOVE THIS...
Port 2222
#AddressFamily any
ListenAddress 0.0.0.0
#ListenAddress ::
...STUFF BELOW THIS...
WSL2 内から、"ifconfig" を使用して IP アドレスを取得します。私のは 172.23.129.80 です。あなたのは 172.SOMETHINGELSE である可能性が高く、WSL2 がコールドで起動すると変更されます .
WSL2 には systemd がないため、実行されていることを確認する必要がある場合があります。
service ssh start
ポートを WSL2 に転送する
管理者の Windows プロンプト から - これは cmd.exe または powershell.exe のどちらでもかまいません。ネット シェル "netsh" を使用してポートプロキシ ルールを追加します。ここでも、connectaddress を、マシンの内部アドレスである YOUR WSL2 ipaddress に変更します。
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=2222 connectaddress=172.23.129.80 connectport=2222
ファイアウォールを開く
次に、同じ管理者 Windows プロンプトから、着信ファイアウォール ポートを開きます。高度なファイアウォール設定から行うこともできますが、もう一度 netsh を使用するとさらに簡単です!
netsh advfirewall firewall add rule name=”Open Port 2222 for WSL2” dir=in action=allow protocol=TCP localport=2222
気になる場合は、次のようにすべてのポートプロキシ ルールを一覧表示できます。
netsh interface portproxy show v4tov4
必要に応じて、それらをすべて削除できます
netsh int portproxy reset all
スクリプト化されたソリューションですか?
GitHub ユーザーでコミュニティ メンバーの Daehahn は、このプロセスを自動化する PowerShell スクリプトに取り組んでいます。コメント スレッドはここから始まり、wsl2-network.ps1 の PowerShell スクリプトの要点はここにあります。ファイアウォールとポートプロキシをリセットし、デフォルトのディストリビューションの新しい IP を見つけて、再度セットアップします。この .ps1 をどこかに保存して読み込み、「unblock-file wsl2-network.ps1
」を実行します。 "これで、WSL2 インスタンスに Shushing するためにシステムをすばやくセットアップできます!
$Ports 変数は、開発に必要なときに WSL と VS Code が自動的にポートを localhost に転送することに注意してください。
お役に立てれば! WSL2 が起動するたびに内部 IP アドレスを変更しないようにして、これをさらに簡単かつ自動化できるようにするとよいでしょう。
結論と要約:
- このブログ投稿 - あなたが今読んでいる投稿は、Windows のみの転送ポートを持ち、WSL2 の Linux OpenSSH を使用し、Linux に対して認証します。 Windows は周辺的にのみ関与します。 WSL2 の IP アドレスは再起動時に変更されるため、その投稿の最後でリッスンするスクリプトを使用して、ポートプロキシ ルールとファイアウォール ルールを維持する必要があります。
- この別のブログ記事 (こちら) では、Windows の OpenSSH を使用し、Windows で認証を行い、WSL2 を実行しています。 WSL2 が起動し、bash が使用され、Windows が TCP トラフィックを処理します。
何が必要かを理解し、適切なものを使用してください。
その他のクールなリンク:
- Docker Desktop for WSL 2 は、Windows 10 と Linux をさらに緊密に統合します
- Windows 上の Visual Studio から WSL2 で .NET Core Linux アプリをリモート デバッグする
- あなた (または私) が知らなかったクールな WSL (Linux 用 Windows サブシステム) のヒントとコツ
- Ruby on Rails on Windows は単に可能であるだけでなく、WSL2 と VS Code を使用すると素晴らしいものになります
- インポートとエクスポートを使用して、Windows 10 マシン間で WSL ディストリビューションを簡単に移動できます。
- コンソール、ターミナル、シェルの違いは何ですか?
お役に立てれば!また、私の YouTube チャンネルを購読してください!
スポンサー: バグを見逃すことはありません — Seq 2020.1 を使用して、Slack またはメールにアラートを送信し、顧客よりも先に問題を見つけます。