GNU/Linux >> Linux の 問題 >  >> Linux

外部マシンから Windows 10 で WSL2 に SSH 接続する方法

クールなブログ投稿ですね?いいタイトルでしょ?

この投稿の指示を実行しないでください

外部マシンから 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 またはメールにアラートを送信し、顧客よりも先に問題を見つけます。


Linux
  1. Windows –デュアルブートマシンを使用しているときにWindowsがGrubを上書きしないようにするにはどうすればよいですか?

  2. 特定のディレクトリにSSHで接続する方法は?

  3. * nixからリモートWindowsマシンでexeまたはbatファイルを実行する

  1. AndroidからLinuxでSSH接続する方法

  2. Ssh – Sshを介してグラフィカルモードでWindowsマシンからLinuxサーバーにアクセスしますか?

  3. クリップボードから nano に貼り付けるには?

  1. 中間マシンを介してScpする方法は??

  2. Linux ターミナルから Windows マシンをシャットダウンする

  3. Linux サーバーから Windows クライアントに SCP する方法