wslにsshサーバーを立ててプライベートネットワークの他のPCから入る
windows11のアプデでPCがまともに起動しなくなったので色々やり直した。
毎回やり方わからなくなるので、自分用にメモ。
・ホストマシンが起動したら自動でsshサーバ立ち上げてくれて、
・ローカルマシンはssh/config設定した内容&鍵認証で入るだけ、
を目指す。
途中までホスト側で作業、最後の鍵登録でクライアント側に移る。
やったことは以下
ホスト側
wslのインストール
docs.microsoft.com
いつから変わったのか、ここにあるようにコマンドプロンプトなどで "wsl --install" と入力するだけでwsl(Ubuntu)を入れてくれました。らくちん。
VScodeのインストール
azure.microsoft.com
(どのページから行ったか忘れたけど)公式ページから入れるだけ。
wsl側のshスクリプト作成(wslのIPアドレス取得、ポートフォワードの設定)
参考
wsl2でsshサーバを起動し、外部からそこに接続 #Linux - Qiita
#!/bin/bash IP=$(ifconfig eth0 | grep 'inet ' | awk '{print $2}') netsh.exe interface portproxy delete v4tov4 listenport=22 netsh.exe interface portproxy add v4tov4 listenport=22 connectaddress=$IP sc.exe config iphlpsvc start=auto sc.exe start iphlpsvc
ifconfigがないと言われたので入れる
wsl
Command 'ifconfig' not found, but can be installed with: sudo apt install net-tools
netsh.exe interface portproxy show v4tov4
windows側のbatファイル作成(上記shの呼び出し、sshサーバ起動を行う)
batファイル
wsl --exec bash /home/port_fowarding_22.sh wsl -u root --exec sudo service ssh restart
ルーターの設定
ポート開放。
使っている機器の説明を参照。
公開鍵の登録の準備
まずパスワード認証を許可する(あとで戻す)
wsl
sudo vi /etc/ssh/sshd_config
で
PasswordAuthentication no
にする。
viの操作は
・"i"で編集モード?に変更
・該当箇所を編集
・"Esc"で編集モードを抜ける
・":wq"で保存(w)と終了(q)
もしなければ mkdir ~/.ssh しておく
ここでクライアント側の操作に移る。
鍵の登録が終わったら、先ほどと同じ手順でパスワード認証をnoに戻す
サーバー起動
wsl
sudo service ssh restart
このときに(もしくは前の手順だったかも)、鍵のファイルのpermissionがどうのこうのとエラーが出たら、
それに従って設定を変更する。
chmod +x ~~~
で行けたはず。
クライアント側
鍵生成
https://linuxfan.info/ssh-ed25519
ssh-keygenコマンドで作成できる。
- t オプションで鍵の種類(暗号化のアルゴ)を指定できる。
指定しなくてもできるが、Ed25519が良いみたいな話をよく見るのでそれで作成した。
ssh-keygen -t ed25519
鍵登録
参考
qiita.com
色々方法はあるが、ssh-copy-idコマンドを使う
ssh-copy-id -i ($公開鍵のパス) ($接続先のアカウント名)@($接続先アドレス)
もしくはscpコマンド
SSHの鍵認証設定 #ssh公開鍵認証 - Qiita
scpでコピーしたあと、ホスト側でauthorized_keyに追加する必要がある。
追記 2023/10/31
いつからかPC起動時にsshサーバが自動起動しなくなっていた。
wslで
sudo service ssh restart
すれば起動するのでポートフォワードとかは生きているっぽい。
どこかのWindowsUpdateとかでタスクスケジューラが何か変になったとか?あとでなおす。