LoginSignup
0
0

リモート端末からWSL2 (Ubuntu) へssh接続する

Last updated at Posted at 2023-12-17

1. WSLの設定

1.1 WSL2のインストール

他の記事参照

1.2 WSLの起動ディレクトリの指定方法

ここにかなり苦戦した。

image.png

  • Windowsのターミナル設定->開始ディレクトリを設定しても反映されず(常に/rootが開かれる)
  • wsl上で、cat /etc/passwdを編集し、ユーザと起動ディレクトリ(とシェル)の設定を行う
  • Powershellから、wslのデフォルトユーザを変更する

まず、

wsl
cat /etc/passwd

をたたくと、

wsl
root:x:0:0:/root:/usr/bin/fish
...
[Username]:x:1000:1000:,,,:[開始ディレクトリ]:/bin/bash
...

と出てくる。開始ディレクトリを書き換えても/rootが開かれていたのは、デフォルトでrootユーザとしてwslが起動されていたためと推察。
そこで、[Username]が書かれた行を探して適宜編集する。私は、bashではなくfishをデフォルトで使用するので、

wsl
[Username]:x:1000:1000:,,,:/home/[Username]:/usr/bin/fish

とした。

続いて、PowerShellに戻り、

PowerShell
ubuntu.exe config --default-user [Username]

を実行することで、デフォルトのユーザを変更することで開始ディレクトリを変更できた。ubuntu.exeは各自の実行ファイル名に書き換えること。
wsl上で、

wsl
whoami

と打ち、設定したユーザ名が出てくればOK。

2. SSHの設定

ノートPC (Mac) からWindows, WSLへSSH接続する際のメモ。
WSL2では、SSH接続(Mac等)からWSLを起動することができない。
Microsoft Store での Linux 用 Windows サブシステムのリリース ノート
そこで、MacからSSH接続でWindowsやWSLに入れるようにする。

2.1 Windowsの設定

  • WindowsにOpenSSHをインストール(GUIでもPowerShellでも好きなほうで)
  • コントロールパネルから「Windows Defender ファイアウォール」を検索
  • 「詳細設定」→「受信の規則」→「sshd」を選択
  • 「プロトコルとポート」タブを開き、ポート番号に「22, 2222」を指定(それぞれWSL用とWindows用)
  • Windowsのポート22に来たパケットをWSLのポート22へ転送
PowerShell(管理者)
netsh.exe interface portproxy add v4tov4 listenport=22 connectaddress=[WSLのIP]
sc.exe config iphlpsvc start=auto # ブート時の自動起動設定
sc.exe start  iphlpsvc            # サービスの起動
netsh.exe interface portproxy show v4tov4    # 設定結果確認

すると、以下のように出力される。

PowerShell(管理者)

Address         Port        Address         Port
--------------- ----------  --------------- ----------
*               22          xxx.xxx.xx.xxx  22
  • C:\ProgramData\ssh\sshd_configPortを2222に指定してコメントアウトを外す(私の場合はWSLを22にしたため)
  • 公開鍵認証を有効にする場合には、PubKeyAuthentication yesのコメントアウトを外す
sshd_config
...
Port 2222
...
PubKeyAuthentication yes
...
  • Restart-Service sshdでSSHを再起動
  • ipconfigでWindowsのIPアドレスを確認しておく

上の記事に書かれているように、.batスクリプトを書いてタスクスケジューラを設定することで、sshの再起動とポートフォワードの自動化が行えるようですが、現状うまくいっておらず、動作確認次第追記します。

2.2 Mac -> Windows

Mac
ssh [Username]@[WindowsのIP] -p 2222

でWindowsに接続できる。

2.3 Mac -> WSL

Mac
ssh [Username]@[WindowsのIP]

でWSLに接続できる(デフォルトでは22番で接続される)。

  • 注意点
    • WSL側のファイアウォールを設定し、使用するportを開放する
    • WSL上でpasswd [Username]でユーザとパスワードを確認する

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0