2019年3月7日木曜日

TeraTermでRaspberryPiに公開鍵認証方式でSSH接続する


パスワード認証方式でSSH接続していましたが、ポート解放して外部回線から家のラズパイにアクセスするときにパスワード認証だとガバガバセキュリティなので公開鍵・秘密鍵を利用した認証にしました。


ラズパイのSSH有効化やIPアドレスを固定化などの設定が済んでおり、クライアント側PC(TeraTerm)からパスワード認証方式でSSH接続できているものとします。
また基本的にラズパイの操作はTeraTermSSH接続で行います。



まずはラズパイのホームディレクトリに.sshという名前のフォルダを作成します。今回の説明ではラズパイのユーザー名はpiとして説明します。適宜自分のユーザー名に置き換えてください。
$ mkdir /home/pi/.ssh/

名前に.が付くディレクトリは隠しディレクトリ扱いになるのでlsコマンドでチェックするときは-aのオプションをつけます。
$ ls -a /home/pi/

TeraTermの設定→SSH鍵生成をクリックします。

生成をクリックします。

数秒すると生成が終わるので、鍵のパスフレーズ、パスフレーズの確認を入力して秘密鍵の保存をクリックし適当な場所に保存します。コメントはそのままデフォルトでOKです。
このパスフレーズは忘れないように気を付けてください。セキュリティ的にお勧めしませんがパスフレーズは空でも大丈夫です。(警告が出ますが)
また不正アクセスを防ぐため保存した秘密鍵は外部に流失しないように気を付けてください。

次に公開鍵の保存をクリックし適当な場所に保存します。

保存した公開鍵をラズパイにSSH接続しているTeraTermのウィンドウにドラッグ&ドロップします。ファイル転送を行いますか?と聞かれるのでそのままOKをクリックします。(TeraTermのバージョンによっては表示が異なることがあります。その時はそのままで「SCP」というボタンをクリックしてください。)

lsでホームディレクトリを確認すると公開鍵が転送されているのが確認できます。

catコマンドで.ssh内にauthorized_keysというファイルを作成し、公開鍵の中身をauthorized_keysに追記します。(既にauthorized_keysファイルがある場合でもcat >>コマンドなら追記されます。)
$ cat /home/pi/id_rsa.pub >> /home/pi/.ssh/authorized_keys

authorized_keysのアクセス権を600に変更します。
$ chmod 600 /home/pi/.ssh/authorized_keys

.sshのアクセス権を700に変更します。
$ chmod 700 /home/pi/.ssh

これで設定は完了です。ラズパイのホームディレクトリに残った公開鍵のファイルはもうauthorized_keysに追記したので削除してしまってかまいません。

ためしに秘密鍵を使ってログインしてみましょう。
TeraTermSSH接続を行います。
いつもの以下の画面で、ユーザー名(ここではpi)を入力しパスフレーズには鍵保存時に設定したパスフレーズを入力します。またRSA/DSA/ECDSA/ED25519鍵を使うにチェックをし、秘密鍵をクリックし先ほど保存した秘密鍵ファイルを選択します。その後OKをクリックすると公開鍵認証方式でSSH接続することができます。


パスワード認証によるSSH接続を禁止する

せっかく鍵認証できるようにしたのにパスワード認証もできてしまう設定だとセキュリティはガバガバのままになってしまいます。そこでラズパイの設定をパスワード認証によるSSH接続を禁止するようにします。
sudo をつけてテキストエディタで/etc/ssh/sshd_config内の#PasswordAuthentication yesという記述をPasswordAuthentication noに変更します(#を取ってyesnoに変更する)ここはテキスト編集にnanoを使ってます。
$ sudo nano /etc/ssh/sshd_config

その後ラズパイを再起動すれば設定が反映されます。

ためしにパスワード認証で接続しようとしても接続できません。


0 件のコメント:

コメントを投稿