概要
ホストOS |(ssh 接続) ゲストOS(wsl2,ubuntu20.04)
通常はホストOS側でwsl2がインストール完了していれば、wsl -d Ubuntu20.04
のようにコマンドを叩けば、一般的なsshと同様な感覚でログインシェルに接続できる。
なので本来この作業は意味がない(ゲスト-ホスト間のファイル転送もwslからみると/mnt/c/
以下にホストOSのシステムドライブがマウントされているため、容易にアクセスができるため)
今後wsl2のUbuntuサーバーにホストOSが所属するLAN内のPCから直接wsl2のゲストサーバーに接続することを目指して、まずは前段階の準備として一般的なssh接続導入の準備をする。 なお以降ゲストOSのことはwsl2サーバーと記載する。
wsl2サーバーへログイン
Windows Powershell からwsl2コマンドを実行してログインする。
わからない場合は--list
オプションをつけてインストール済みのディストーションを探す。
$ wsl --list Linux 用 Windows サブシステム ディストリビューション: Ubuntu (既定) docker-desktop docker-desktop-data $ wsl -d Ubuntu // ログインシェルへ
wsl2サーバーでのsshサーバーの導入
$ sudo apt install -y openssh-server
自分の場合は導入済みだった。(おそらくwslコマンド自体がssh接続のラッパーだからだと思う、調べてはいない)
sshd_configの編集
以下の記述を編集(コメントアウトをはずす)
$ sudo vi /etc/ssh/sshd_config //sshd_config PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 PasswordAuthentication no
編集が終わったら、sshサーバーを再起動する。
$ sudo service ssh restart $ sudo service ssh status * sshd is running
statusを確認してrunningとなっていればsshサーバーの準備は完了
ホスト側公開鍵の仕込み
おそらく以下でいけるはず
// wslサーバ側で操作 $ cat /mnt/c/Users/t-kod/.ssh/ssh_key.pub > .ssh/authorized_keys $ chmod 600 .ssh/authorized_keys
これでゲストOS側の準備は整った。
$exit
で切断して、ホストOSで操作をする。
ssh_config作成
wsl2ではPC(wsl2)の再起動のたびにIPアドレスが動的に変化する。 これについてはスクリプトで動的にconfigを編集したいが、今回はとりあえず接続だけの確認をする。
// wslのIPアドレスを確認 $ wsl -d Ubuntu --exec ip address // eth0のinetを確認 $ touch .ssh/config
Host wsl-ubuntu Hostname <今確認したIPアドレス> User ubuntu Port 22 IdentityFile ~/.ssh/ssh_key IdentitiesOnly yes
これで準備完了。
$ ssh wsl-ubuntu // wslサーバへ接続
その他
近いうちにほかサーバとのssh接続については別途試して記事化予定