Piに固定IPアドレスを割り当てて、Macのターミナルからssh接続できるようにしました。今回は、もうちょっと安全&簡単に接続できるように設定してみます。Piに固定IPアドレスを割り当て、Macのターミナルアプリからssh接続できるようにしました。ssh接続するときはパスワード認証をして接続していました。このパスワード認証ですが、接続の度にパスワードを入力する必要があってちょっと面倒です。Piを外出先などの外部からアクセスできるようにしたいと考えていますので、パスワードが破られたりしたら困ります。“raspberry”のユーザアカウントが生成されています。うっかりこのままにしておくと第三者にアクセスされる危険性もあります。そこで、sshに用意されているもうひとつの認証方法の設定をしようと思います。その認証方法とは、公開鍵を使用して認証する方法です。言葉で説明してもわかりづらいので、図で説明してみますね。パスワード認証の方から手順の確認です。Piに接続要求します。Piのsshサーバからパスワード要求があります。ここでユーザはパスワードを入力、リターンキーを押すと、(3)パスワードが送信されます。Piのsshサーバは指定されたユーザIDのパスワードを認証して、正しければ接続を確立します。次に、公開鍵を使った接続の手順です。Piに予め設定をしておく必要があります。鍵となるファイルをMacで生成します。この段階で、公開鍵と秘密鍵ができます。Piのsshサーバ設定を変更します。このように一度設定しておくと、あとはパスワード入力せずに接続できるようになります。この鍵ファイルに使用する公開鍵暗号方式はとてもすぐれたアルゴリズムで、仕組みに興味のある方は、「世界でもっとも強力な9のアルゴリズム」という本にとてもわかりやすく解説されていますので、是非読んでみて下さい!よくこんなものが思いついたなぁ、と関心しますよ!ということで、設定部分は文章でわかりづらいかもしれませんので、以下に図解します。はじめに、(1)Mac上で鍵ペアを作成します。具体的にはターミナルアプリ上で、”ssh-keygen”というコマンドで作成します。このコマンドにより公開鍵と秘密鍵が作成されます。Piのsshサーバ設定ファイルを、鍵認証するように設定します。この設定を行っておけば、以降はssh接続する場合パスワードの入力は必要なくなります。(1)ssh接続すると、あとは自動的に(2)鍵認証されて、問題なければ(3)接続されます。この方式の場合、気づかれたかもしれませんが、接続元のコンピュータに秘密鍵ファイルがないと接続できないわけです。いうことで、パスワード認証より安全に接続できます。そのかわり、秘密鍵は厳重に管理する必要があります。sshの鍵ファイル認証のイメージはつかめたでしょうか。それでは具体的に設定に入る前に、作業の流れを確認します。作業の流れ作業の手順は以下のようになります。Mac上で鍵ペア(公開鍵と秘密鍵)ファイルを作成します。Piに送信して保存します。Piのsshサーバ設定ファイルに以下の変更を加えます。セキュリティを上げるために、rootログインを禁止するそれでは、これからこれらの作業を順番に行っていきます。自分が何をしているか分からなくならないようにこの作業手順を頭に入れておいてください。Piに接続するMac上で鍵ファイルを作成します。いうコマンドを使用します。それでは早速生成してみます。ターミナルを開きます。ターミナル上で以下のように入力します。rsa”を指定していますが、これは鍵の種類をRSA鍵、というものに指定することになります。このコマンドを入力すると、鍵の保存場所とパスフレーズをどうするか聞いてきます。鍵の保存場所はデフォルトのままで問題ありません。よくないかもしれませんが、パスフレーズは設定しなくても問題ありません。鍵の保存場所については以下のように聞いてきますので、そのままリターンキーを押します。(/Users/tool-lab/.ssh/id_rsa):次に、パスフレーズを着ていきますので、そのままリターンキーを押します。passphrase):確認のため、もう一度入力するように要求してきます。そのままリターンキーを押します。again:この後、以下のような情報が表示され、鍵ペアが生成されます。.+.o|+-----------------+鍵ファイルが作成された場所はこのメッセージに書かれています。最初の1行目は秘密鍵ファイルの格納場所とファイル名です。いうファイル名で秘密鍵が生成された、とかかれています。いうファイル名で生成された、と書かれいます。念のためファイルがあるか確認してみましょう。ターミナルで以下のコマンドを入力します。.ssh先ほど生成した2つのファイルがあればOKです。これで公開鍵と秘密鍵のファイルが生成できました。Piに送信するには、”scp”コマンドを使用します。copyの略で、コンピュータ間のファイル転送をセキュアな状態で行うコマンドです(scp用の独自のセキュア通信方法があるわけではなく、sshを使用してファイル転送しています)。書き方は以下のようになります。PiのIPアドレス]:私の環境の例では以下のようになります。pi@192.168.1.101:このコマンドを入力するとパスワードを聞いてきます。“pi”ユーザのパスワードになりますので気をつけて下さい。Piに接続して、sshを使ってファイル転送します。そのため、scpコマンドを実行するとssh接続する必要があるため、ssh接続先のパスワードを聞かれる、というわけです。“pi”ユーザのホームフォルダに置かれます。Pi上での作業になります。Mac上での作業ではありませんので注意してください。Piに接続して作業を行いますが、注意点があります。Pi接続するのにsshを使います。接続したら、sshの設定を変更します。設定が有効になったか確認するために、一旦sshを抜けて、再度sshで接続して確認します。お気づきかもしれませんが、sshの設定変更を間違うと、設定確認のためsshを抜けて、再度sshで接続するとき、接続できない、ということになってしまいます。Piにキーボード、マウス、ディスプレイを接続して、ローカル環境で立ち上げる必要があります。Piに限らず、何度もあります。゙〜」ってなりますので注意してください。そこで、このsshサーバ設定の変更は、ちょっと工夫をします。具体的には、Macのターミナルアプリのウインドウを2つ開きます。Piの設定変更専用のウインドウにします。Piにssh接続したり、切ったり(exitしたり)して動作確認をします。設定が間違ったまま1つ目のウインドウを閉じてしまうと、ローカル環境を作って作業することになるので注意してください。それでは、Macのターミナルアプリを立ち上げて、ウインドウを2つ開いて下さい。新規ウインドウを選択するとウインドウがひとつ開きますので、2回繰り返します。Piのsshサーバ設定の変更作業を行うウインドウを作業ウインドウ、ssh接続を確認するウインドウを確認ウインドウ、と呼ぶことにします。