Raspberry PiにSSH接続する際に二要素認証システムを導入する。

概要

RaspberryPi4が発売されて、性能がアップし、USB3.0にも対応したので、ファイルサーバや、メディアサーバとして使うことができるようになった。

使い方として、普段は、モニタやキーボードなど接続せず、家のどこか隅の方において、SSH等でリモートアクセスするという使い方になるとおもいます。

 

インターネットバンキングや、仮想通貨その他のアカウントでは、2要素認証システムを導入するのが当たり前になっているので、ラズベリーパイにも2要素認証システムを導入しようと思います。

 前提

raspberry piには、SSHサーバがインストールされているものとします。

SSHの認証方式は、パスワード方式です。公開鍵方式では試していません。

必要なもの

スマフォとRaspberryPi4。

認証アプリは、

f:id:zar185919:20200518094502p:plain

アンドロイドをお使いの場合は、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アプリを検索し、インストールしてください。

 

f:id:zar185919:20200518104225j:plain

GoogleAuthenticator

 

Google Authenticator PAMモジュールをインストールする

コマンドラインから、下記コマンド実行する

  ~$ sudo apt install libpam-google-authenticator

 

GoogleAuthenticatorアプリへの登録

スマフォから、インストールしたGoogleAuthenticatorアプリを起動し 「+」マークをタップし、カメラを起動する。

 

続いて、ターミナル画面から

 ~ $ google-authenticator

を実行する。

 

ターミナル画面に、QRコードが表示されるので、スマフォでそのQRコードを読み取ります。

スマフォにコードが表示されます。

 QRコードの下にEmergency Codeが表示されます。これをメモっておいてください。

スマフォをなくしたり、接続できなくなったときに必要となります。

2要素認証を有効にします

SSHに2要素認証システムを設定します。

設定ファイルは

適当なテキストエディタで設定ファイルを開きます。

設定ファイルの一番上に、

@include common-auth とあるので、その上か下に下記の設定を追加します。

  • auth required pam_google_authenticator.so

この設定を上に記述すると、SSH接続する際に6桁のコード(Verification code)を先に、聞かれパスワードをその後に入力します。

f:id:zar185919:20200518112519p:plain

先に認証コードを入力する

下に記述すると、パスワードを先に聞かれ、6桁のコードをあとに聞かれます。

f:id:zar185919:20200518112641p:plain

先にパスワードを入力