[Raspberry Pi] ssh の設定 (サーバ : ラズパイ、クライアント : MacBook Pro)

ssh サーバを ON にする設定

ラズパイはデフォルトでは ssh サーバ (ssh デーモン) が動いていないので、ここからです。

以下のように、ラズベリーマーク –> 設定 –> Raspberry Pi の設定 と進みます。

そうすると以下の画面が立ち上がってきます。

インターフェイス タブをクリックして、

SSH のところを 有効 にポチをつけて OK をクリックします。

ここで ps コマンドなどで sshd が動いていることが確認できない場合、ラズパイを再起動してください。以上で SSH サーバが起動するようになる設定が終わりました。

root の ssh ログインとパスワード認証を禁止する

ssh でラズパイにログインする時、ユーザー名とパスワードの組み合わせで認証する仕組み = パスワード認証、をできなくする設定に変更します。

ラズパイの /etc/ssh/sshd_config ファイルを vi エディタで修正します。

まずは以下のようにして sshd_config ファイルのバックアップを作ります。

ここで sudo vi sshd_config コマンドで修正します。

修正が終わった後の分を diff コマンドで表示してみると、

となります。

  • PermitRootLogin no は、root による ssh ログインを禁止する設定です。
  • PasswordAuthentication no は、パスワード認証を禁止する設定です。
  • PermitEmptyPasswords no は、空のパスワードを認めなくする設定です。

ここで以下のように ssh サーバを再起動し、

$ sudo systemctl restart ssh.service

MacBook Pro からラズパイへの ssh 接続を実施してみると以下のような結果になった。

ラズパイ側でパスワード認証を禁止したわけなので、パスワード入力を求めてくることがなくなって、ssh 接続が拒絶されている様子です。想定どおりです。

ここから次の公開鍵認証の設定をしていきます。

クライアント側で鍵のペアーを作る

鍵のペアーとは、公開鍵と秘密鍵のことであり、その実態はどちらの鍵も単なるファイルである。

まずクライアント側 (我が家の環境では MacBook Pro) で公開鍵と秘密鍵を作ります。

以下のように、

$ ssh-keygen -t rsa -b 4096

を実施して鍵のペアを作った。4096 ビットの RSA 暗号の鍵ペアである。

保存場所を聞いてくるが、そのままエンターを押すと表示されたパスに鍵が保存される。パスフレーズも聞いてくるが、これはパスワードのようなもので自分だけが知っている文字列を入力する。

上記 Your identification has been saved in /Users/nobi/.ssh/id_rsaidentification とは秘密鍵のことであり、秘密鍵のファイル名は id_rsa だ。

上記 Your public key has been saved in /Users/nobi/.ssh/id_rsa.pubpublic key とは公開鍵のことであり、公開鍵のファイル名は id_rsa.pub だ。

では出来上がった鍵ファイルを ls と file コマンドで表示させてみる。

クライアント側 (MacBook Pro) で秘密鍵と公開鍵がこれでできた。

ラズパイ側で公開鍵を保存するディレクトリを作る

以下のようにホームディレクトリに .ssh ディレクトリを作成し、パーミッションを 700 に変更している。

.ssh ディレクトリにクライアントの公開鍵ファイルを保存する。クライアント側から scp コマンドで送信する。

が、少し上の方でラズパイの /etc/ssh/sshd_config の修正をしたときに、パスワード認証を禁止にしてしまったので、ここで一時的に sshd_config 内の PasswordAuthentication パラメータを

PasswordAuthentication yes

に修正して、sudo systemctl restart ssh.service コマンドで ssh サーバを再起動する。

クライアント側から公開鍵ファイルを scp でラズパイに送る

以下のように公開鍵ファイル = id_rsa.pub を scp でコピーしてラズパイに送っている。

これで MacBook Pro からラズパイに公開鍵ファイルが届く。以下のようにサーバ側 = ラズパイで確認した。

公開鍵ファイルがラズパイに届いていることを確認後、cat コマンドを使って同じディレクトリ内に authorized_keys というファイルを作っている。

この authorized_keys を見て、ssh サーバは ssh クライアントからの接続可否 = 認証を行っている。

再度ラズパイの /etc/ssh/sshd_config 内の PasswordAuthentication パラメータを

PasswordAuthentication no

に修正して、sudo systemctl restart ssh.service コマンドで ssh サーバを再起動する。

クライアント側からの ssh ログイン確認

MacBook Pro からラズパイに ssh 接続して成功したところ。↓

同じ MacBook Pro から root ユーザー、pi ユーザーで ssh 接続しようとしても認証で弾かれる。

もう 1 台、別のクライアント (MacBook) から、僕のユーザー名 (nobi) で ssh 接続しようとしても認証が通らずログインすることはできない。

ラズパイが持っているのは MacBook Pro で作った公開鍵だ。そして、その公開鍵にマッチする秘密鍵を持っているのは MacBook Pro だ。

だから、この MacBook Pro 以外からは ssh ログインできない。ここまで動作確認できれば良いでしょう。

後処理

クライアント側 (僕の場合 MacBook Pro) に id_rsa.pub ファイル = 公開鍵が残っていたら削除しておきましょう。

ラズパイのホームディレクトリの .ssh ディレクトリに id_rsa.pub ファイル が残っていたら、こっちでも削除しておきましょう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください