「初心者のラズパイ勉強日記その4」公開鍵認証方式でSSH接続する

1,266views
初心者のラズパイ勉強日記その4アイキャッチ画像

最近は引きこもりでもなくなってきたZionです。

前回はメインパソコンからVNCでラズパイに接続する方法を勉強しました。今回はSSHという接続方法を利用してラズパイに接続してみようと思います。

前回の最後に外出先から接続したいと書いたのですがそれはまだ少し先になりそう。。。

「SSHとは」「ラズパイの設定」「メインPCの設定」「SSHの設定」「SSH接続の入力を楽にする」の順番で書いていきたいと思います。

SSHとは

冒頭で「SSHという接続方法を利用してラズパイに接続する」と紹介しましたが、前回勉強したVNCとはまた違うのでまずはSSHとは何か、VNCとの違い、鍵について説明していきます。

SSHとは

SSH(secure shell)

sshとは、主にUNIXコンピュータで利用される、ネットワークを介して別のコンピュータにログインして操作するためのソフトウェアの一つ。通信経路が暗号化されるため、インターネットなどを経由しても安全にアクセスすることができる。

出典:IT用語辞典e-words

上の文章を見ると、VNCと同じようにPCを他のPCから操作するように読めますね。

VNCとSSHの違い(GUIとCUIの違い)

では、VNCとは何が違うのでしょうか。一番の違いは、UI (ユーザーインターフェイス)の違いだと思います。というか、他の違いは僕にはわかりません。

GUI(Graphical User Interface)

GUIとは、コンピュータの表示・操作体系の分類の一つで、情報の提示に画像や図形を多用し、基礎的な操作の大半をマウスやタッチスクリーンなどによる画面上の位置の指示により行うことができるもの。

出典:IT用語辞典e-words

CUI(Character-based User Interface)

CUIとは、コンピュータやソフトウェアが利用者に情報を提示したり操作を受け付けたりする方法の類型の一つで、すべてのやり取りを文字によって行う方式。

出典:IT用語辞典e-words

なんか難しく書いてありますが、GUIは普段見ているようなデスクトップ画面のあるPCを操作する時に利用しているやつ(画像左)。CUIはなんかわからん文字がいっぱいあるハッカーとかがやってそうなやつ(画像右)です。

GUIとCUIの違い

鍵について

前回のVNC記事ではuser名とパスワードを知っていればラズパイにアクセスできてましたね。この認証方法を『パスワード認証方式』と呼びます。

同様にしてSSHを利用できるのですが、今回は安全性の高い『公開鍵認証方式』といわれる方法を試してみます。

鍵説明画像

  1. メインPCの方で公開鍵・秘密鍵を作成します。
  2. 公開鍵だけをラズパイ側に送信・保存します。
  3. 接続するときそのPCにペアの秘密鍵があるかチェックをする。

無事合っていることが確認できたらアクセスできるという仕組みらしいです。ちなみに秘密鍵を他のPCにコピペしたら同じようにラズパイ に接続できるらしいです。

ラズパイのSSHを有効に設定する。

SSHがなんとなーく理解できたところでラズパイ側でSSHを有効にしておきます。

デスクトップ左上のラズパイアイコンをクリックして、「設定」から「Raspberry Piの設定」をクリックしてください。

ラズパイ設定クリック画像

「インターフェイス」を選択しSSHの有効にチェックしてOKを押してください。

ラズパイSSH有効画像

これで一旦の設定が終わりました。

前回の記事で「IPアドレスの固定」を行っているので今回は説明していませんが、IPアドレスの固定は行っておいてください。

メインPC側の設定

初めてsshを使うパソコンなので、まずはssh用のフォルダを作っていきます。左下の検索で「cmd」と入力して管理者として実行をしましょう。

cmd実行画像

ターミナルが開いたら、

mkdir ~/.ssh

と打ち込んでSSHのフォルダを作ります。

次にsshのフォルダに公開鍵と秘密鍵を作成します。

ssh-keygen -t rsa

と入力しましょう。

キーを保存する場所を聞かれますが、そのままEnterを押して次に行きます。次にパスフレーズを聞かれるので適当に入力します。

今回はなしでEnter。

パスフレーズをもう一度入力してくださいと言われるので同じものを入力して次に行きましょう。

鍵作成画像

上のようなブワーッとよくわからんものが出てきましたがこれで成功です。

鍵の生成と保存ができたので確認してみます。

ls ~/.ssh

で保存された鍵を確認します。

  • id-rsa
  • id-rsa.pub

という2つのファイルができています。"id-rsaが秘密鍵" "id-rsa.pubが公開鍵"です。

ということで公開鍵である"id-rsa.pub"をラズパイに送りつけます。

scp ~/.ssh/id_rsa.pub pi@192.168.x.x:

scpは指定したパソコンに指定したファイルを送れという命令です。

xの部分はラズパイのipによって変わります。僕は前回の記事で1.101に設定しておいたのでそれを入力します。(:をつけ忘れしがちだから注意。)

初めてsshでアクセスすると

"The authenticity of host '192.168.x.x' can't be established.Are you sure you want to continue connecting (yes/no)"(こいつ大丈夫か?ほんとに続ける?)

的なことを言われるので yes と打ち込んで先に進みます。

ラズパイのパスワードを聞かれるので入力します。

これでラズパイに公開鍵を送ることができました。メインのパソコンでやることは終わり一旦終了です!

ラズパイの設定

次にラズパイで設定を行います。前回設定したVNCを利用してラズパイを操作します。先ほど送ったid_rsa.pubはhome/piの中に保存されています。

まずはラズパイのターミナルを開き、下のやつを打ち込みます。

cat id_rsa.pub >> .ssh/authorized_keys

catは書き換えとかに使うやつです。さっき送った公開鍵をsshのフォルダの中のauthorized_keysに書き写します。

次に権限を設定します。

chmod 700 .ssh
chmod 600 .ssh/authorized_keys

これは指定したフォルダなどにアクセスすることができる人の権限を設定しています。

次にsshの設定を行います。

sudo nano /etc/ssh/sshd_config

でsshd_configの編集を行います。

以下の項目を編集していきます。初期時点だと、#の後に書かれているので#を消して書き直していきます。

  • Port xxxxxx ポート変更
  • PermitRootLogin no Rootでのログインを不可能にする
  • PubkeyAuthentication yes 公開鍵認証での接続を許可する
  • AuthorizedKeysFile 公開鍵ファイルの場所
  • PasswordAuthentication no パスワード認証方式を不可能にする
#Port 22

#PermitRootLogin no

#PubkeyAuthentication yes

#AuthorizedKeyFile .ssh/authorized_keys

#PasswordAuthentication no



Port 10022
PermitRootLogin no
pubkeyAuthentication yes
AuthorizedKeyFile .ssh/authorized_keys
PasswordAuthentication no

と書き直しておきます。

Port番号は適当につけましたが、wiki(リンクはこちら)を見ながら空いている番号を適当に入力します。そのままでも問題ありませんがセキュリティー向上のためにやっておきます。

(また、古いの記事でRSAAuthenticationという項目をyesに設定するという内容のものをいくつか見ましたが、現在RSAAuthenticationは入っておらず設定する必要はないです。)

入力が終わったらContrl Xで入力を終わらせYで保存しておきます。

保存した設定で利用するためにsshを再起動します。

sudo /etc/init.d/ssh restart

これでsshの設定は終わり!

メインパソコンの方ターミナルを開き

ssh -i .ssh/id_rsa -p 10022 pi@192.168.1.101

と入力すると接続できるようになっているはずです。

SSH接続の入力を楽にする

sshの設定は完了なのですが、現在のままだとssh接続するときにport番号やipなどをいちいちい入力しなくてはいけません。

それはめんどくさい、、、なので、これらを省くための設定を行います。

メインパソコンの方に移動します。ターミナルから

sudo nano .ssh/config

でconfigファイルを作ります。

書き込む内容は以下の通り

Host rpi-server(ssh接続するときに入力する名前)
  Hostname 192.168.1.101(ラズパイのip)
  Port 10022(設定したポート)
  User pi(ラズパイのユーザー名)
  IdentityFile ~/.ssh/id_rsa(メインパソコンに保存してある秘密鍵の場所)

書き込めたらcontrl Xで保存しておきます。

では改めてssh接続をしてみます。

ssh rpi-server

これだけでできるようになりました。

まとめ

今回は、公開鍵認証方式でssh接続する方法について記事にしていきました。

SSHについて
  • 他のコンピューターにログインして操作するためのソフト
  • VNCとSSHの大きな違いは、GUIかCUI(文字のみで行う)
公開鍵認証について
  • sshでログインする時の認証方式の一つ。
  • 公開鍵をサーバーに保存している時、ペアになる秘密鍵を持っているPCだけがログインできる。

パスワード認証方式だと外出先からSSH接続できるようにした時、明らかにセキュリティがばがばだなと思い"公開鍵認証方式"を取り入れてみました。調べていると古くなってしまった情報などもあり、迷ったところもありましたが、基本サクサクと進めたのでほっとしております。

次回は、ラズパイを放っておくとssh接続できなくなる問題について記事にしていきます。

カテゴリー