Raspberry PiにSSH接続する際に二要素認証システムを導入する。
概要
RaspberryPi4が発売されて、性能がアップし、USB3.0にも対応したので、ファイルサーバや、メディアサーバとして使うことができるようになった。
使い方として、普段は、モニタやキーボードなど接続せず、家のどこか隅の方において、SSH等でリモートアクセスするという使い方になるとおもいます。
インターネットバンキングや、仮想通貨その他のアカウントでは、2要素認証システムを導入するのが当たり前になっているので、ラズベリーパイにも2要素認証システムを導入しようと思います。
前提
raspberry piには、SSHサーバがインストールされているものとします。
SSHの認証方式は、パスワード方式です。公開鍵方式では試していません。
必要なもの
スマフォとRaspberryPi4。
認証アプリは、
アンドロイドをお使いの場合は、google playからダウンロードしてください。
OSをアップデートする
Raspbianを最新のもとのします。コマンドラインか
~$ sudo apt update
~$ sudo apt upgrade
を実行します。
challenge-response passwoardを有効にする
sshdの設定ファイル /etc/ssh/sshd_configの設定を変更します。
テキストエディタ(vi、nano、emacsなど)でsshd_configを開いて
ChallengeResponseAuthentication をyesにします。デフォルトはnoとなっています。
- ChallengeResponseAuthentication yes
sshdを再起動する
ターミナル画面から、systemctlコマンドで再起動します。
~$ sudo systemctl restart ssh
現時点では、まだ、今までどおりパスワードのみで接続できます。
スマフォにgoogle認証アプリをインストールする。
GooglePlay又は、AppStoreからGoogle Authenticatorアプリを検索し、インストールしてください。
Google Authenticator PAMモジュールをインストールする
コマンドラインから、下記コマンド実行する
~$ sudo apt install libpam-google-authenticator
GoogleAuthenticatorアプリへの登録
スマフォから、インストールしたGoogleAuthenticatorアプリを起動し 「+」マークをタップし、カメラを起動する。
続いて、ターミナル画面から
~ $ google-authenticator
を実行する。
ターミナル画面に、QRコードが表示されるので、スマフォでそのQRコードを読み取ります。
スマフォにコードが表示されます。
QRコードの下にEmergency Codeが表示されます。これをメモっておいてください。
スマフォをなくしたり、接続できなくなったときに必要となります。
2要素認証を有効にします
SSHに2要素認証システムを設定します。
設定ファイルは
- /etc/pam.d/sshd
適当なテキストエディタで設定ファイルを開きます。
設定ファイルの一番上に、
@include common-auth とあるので、その上か下に下記の設定を追加します。
- auth required pam_google_authenticator.so
この設定を上に記述すると、SSH接続する際に6桁のコード(Verification code)を先に、聞かれパスワードをその後に入力します。
下に記述すると、パスワードを先に聞かれ、6桁のコードをあとに聞かれます。