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」が出てくるので,こいつを起動させる。
鍵作成のコマンドは,
<追記>
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にコピーすればよい。