SSHポートフォワーディングの設定2(鍵の設定)

さて,ユーザIDとパスワードで誰でもSSHにログインできる・・・となると,いささか心許ない。そこで,鍵による認証も設定することにする。

 

1,鍵の作成・・・の準備

Windows機でSSHサーバにログインするのだから,Windows機に秘密鍵SSHサーバに公開鍵を設置して認証を行うことになる。となれば,Windows機でペアとなる鍵を作成し,SSHサーバに公開鍵を送付するのが筋だ。SSHサーバで鍵を作成するのでは,秘密鍵をどうやってWindows機に安全に送付するのか,という問題が出てくる。

ところが,Windows 10にはペアとなる鍵を一発で作成するコマンドがない(linuxにはある)。そこで,linuxコマンドをWindowsでも使えるようにする,Git for Windowsというツールをインストールすることになる。

検索してダウンロードして,全部初期設定のままEnter連打でOKであった。

 

2,いよいよ鍵の作成

cortanaさんに"git"と入力すると,「Git Bash」が出てくるので,こいつを起動させる。

鍵作成のコマンドは,

$ssh-keygen -t rsa

<追記>

ubuntu 22.04 LTSで採用されているOpenSSH 8.9p1のひとつ前,OpenSSH 8.8から,デフォルトではSHA-1 RSAが無効化されたとのこと。ssh-keygen -t rsaで生成される鍵はSHA-1 RSA方式による鍵なので,こいつは使えない。(面倒くさがらずにログをきちんと調べればよかった。ログの場所は,/var/log/auth.log)

$ssh-keygen -t ecdsa -b 521

で,ecdsa-sha2-nistp521という強い暗号方式による鍵を作れるそうだ。楕円曲線だとかいうらしい。

鍵の出力先についてこれでいいかフルパスで聞かれるので,OKする。確かデフォルトでは,"C:\Users\(ユーザ名)\.ssh"フォルダのはずである。

パスフレーズを入れてくれと言われるので,入力する(2回)。これで,鍵とパスフレーズの双方がないとログインできなくなる。

これで,公開鍵(id_rsa.pub)と秘密鍵(id_rsa)のペアが作成された。

あとは,適当な方法で,公開鍵をSSHサーバに放り込む。

 

3,sshdの設定(1)

次はssh daemonの設定を行う。設定ファイルは,/etc/ssh/sshd_config なので,viとか適当なエディタで編集する。編集するところは,

#PubkeyAuthentication yes

#AuthorizedKeysFile   .ssh/authorized_keys

の2行について,コメントアウトを外す。これで鍵による認証が行われることになる。

なお,ubuntu 18.04 LTS では,公開鍵ファイルが2箇所に格納されているが,使うのは上記の home/(ユーザ名)/.ssh/authorized_keys だけにする。

 

4,sshdの設定(2)

さて,sshdが参照する公開鍵の場所が分かったので,放り込まれた公開鍵の内容を,.ssh/authorized_keys に差し込む。コマンドは,"cat"コマンドを使う。

$cat id_rsa.pub >> home/(ユーザ名)/.ssh/authorized_keys

 

準備を終えたら,sshd_configに間違いがないかどうかテスト。

$/usr/sbin/sshd -t  ※フルパスで指定する

$ ※間違いが無ければ何も表示されない

 

問題がなければ,sshdを再起動。

$sudo systemctl restart sshd

 

5,接続テスト

tera termで接続する際,ユーザ名,パスフレーズ秘密鍵ファイルの指定を行って接続すると,うまくいく・・・はず。

うまくいかなかったら,もういっかい戻る。

 

6,ユーザ名とパスワードだけのログインを拒否

さて,もう一度SSHサーバに戻り,sshd_configの次の行を編集する。

#PasswordAuthentication yes

コメントアウトを外して,"yes"を"no"にする。で,sshd再起動。

これで,ユーザ名とパスワードだけではログインできなくなる。

 

7,秘密鍵のコピー

別のPCからもSSHサーバにログインするようなときは,先ほどつくった秘密鍵を,別のPCにコピーすればよい。