ubuntuにSSHサーバをセットアップする

ubuntuにSSHサーバをセットアップするし、公開鍵認証を設定する

UbuntuにSSHサーバをセットアップする

sudo apt install ssh
systemctl start sshd

この状態でWindowsなどから以下のコマンドで接続するとパスワード認証でlog inできる。
(TeraTermなどでも可)

ssh «ユーザ名»@«IPアドレス»
«ユーザ名»@«IPアドレス»'s password: «パスワードを入力»  

リモート接続でshellを使うだけならこれでも良いが、 VScodeでリモートデバッグをしたりするときなどはパスワード入力を何回も行う必要があったりして面倒。
そこで、公開鍵認証を設定してパスワード入力を不要にする。

秘密鍵と公開鍵の生成と公開鍵ファイルの設置

Windowsマシンで以下のコマンドを実行して秘密鍵ファイルと公開鍵ファイルを生成する

ssh-keygen.exe -t rsa
(リターン3回)
※ 本当はpassphase入れないといけないけど、ローカルお試し環境なので省略

実行すると以下のファイルが出来る

このうち、id_rsa.pubをUbuntuマシンの ~/.sshauthorized_keysというファイル名でコピー(既に存在する場合は追記)する。

[!NOTE] やり方検索するとscpコマンドでコピーする方法が紹介されているが、 家の中だけなのでネットワークドライブ経由でのコピーや ファイル自体はテキストファイルなので、SSH接続したshellからエディタを起動して コピペするのでも良い。

コピーが完了したらファイルのパーミッションを変更する。

chmod 600 ~/.ssh/authorized_keys

接続テスト

この状態でWindowsマシンから以下のコマンドで接続するとパスワード認証なしでlog inできる。
(TeraTermなどでも可)

ssh «ユーザ名»@«IPアドレス»
«パスワード入力なしで接続»

Windows側のユーザディレクトリ/.ssh/config の設定もやっておくと便利
参考: https://qiita.com/passol78/items/2ad123e39efeb1a5286b