かつをメモ

自分が書いたプログラムなど色々投稿していきます。

Raspberry Piにsshで接続する② 同一LAN内からssh接続〜外部からssh接続

こんばんは、かつをです。
以下の記事の続きです。前回まで (Raspberry Piにsshで接続する① ssh接続の有効化〜IPアドレス固定 - かつをメモ) でローカルIPの固定までやったので今回は実際に接続してみます。

過去記事

katsuwoo.hatenablog.com

参考

qiita.com

機材

同一LAN内からssh接続

自端末のターミナルから以下を入力して接続できるか試します。

$ ssh pi@192.168.10.x -p 22

ちなみにRaspberry Piのデフォルトアカウント情報は以下となります。

ID: pi
PASSWORD: raspberry

公開鍵認証方式の設定

1. 秘密鍵と公開鍵の生成

公開鍵認証方式で接続するために、秘密鍵と公開鍵を作成します。
アクセスするPC(今回はMacBook Air)で以下のコマンドを実行します。

$ ssh-keygen -t rsa

上記ではRSA暗号方式を採用しています。上記コマンドを実行すると秘密鍵と公開鍵の保存先を聞かれます。 デフォルトで問題ないようであればそのまま何も入力せずEnterを押下してください。

Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):

保存先を決定した後、パスワードの入力が求められます。

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

パスワードの入力が完了したら、秘密鍵と公開鍵が生成されます。

2. Raspberry Piに公開鍵を配置する。

Raspberry Piにpiユーザーでアクセスして、以下のコマンドを実行します。

$ mkdir ~/.ssh/

公開鍵をRaspberry Piに転送するために、アクセス側のPCから以下のコマンドを実行します。

$ cd ~/.ssh
$ scp -P 22 id_rsa.pub pi@192.168.10.*:~

パスワード入力が求められるので入力してください。デフォルトはraspberryです。
Raspberry Piのターミナルで以下のコマンドを実行します。

$ cd ~
$ cat id_rsa.pub >> ~/.ssh/authorized_keys

以上のコマンドを入力することで、公開鍵(id_rsa.pub)の内容をauthorized_keysに追記することができます。 秘密鍵と公開鍵を生成するたび、公開鍵の内容を追記する必要があります。 authorized_keysを消したり上書きしたりしないよう気をつけてください。

authorized_keysのパーミッションを変更します。
以下のコマンドを実行します。

$ chmod 600 ~/.ssh/authorized_keys

パーミッションの範囲については、以下をご参照ください。

【 chmod 】コマンド――ファイル/ディレクトリのパーミッション(許可属性)を変更する:Linux基本コマンドTips(14) - @IT

id_rsa.pubはもう必要ないので削除します。

$ rm ~/.ssh/id_rsa.pub

以上で設定完了です。アクセスできるか確認しましょう。
アクセス側のPCから以下のコマンドを実行します。

$ ssh pi@192.168.10.x -p 22
Enter passphrase for key '/home/username/.ssh/id_rsa':

パスワード認証でのssh接続の無効化

公開鍵認証方式でアクセスするので、パスワードでの接続を無効化します。
Raspberry Pi側でターミナルを立ち上げて、以下のコマンドを実行します。 sshd_configを何かしらのエディタで開き、中のPasswordAuthenticationをnoにします。

$ sudo vim /etc/ssh/sshd_config
#PasswordAuthentication yes
PasswordAuthentication no

設定の変更が完了したら再起動してください。

$ sudo reboot

ルーター(Aterm WG1200HS)でPort解放の設定

以下のようにRaspberry PiIPアドレスとPortの紐付けを行います。

f:id:katsuwoo:20180924140448p:plain

外部からのssh接続確認

実際に設定ができるか確認してみます。そのためにはグローバルIPの情報が必要となります。 グローバルIP(WAN側のIP)のポート22(ラズパイのIPに紐付けされている)にssh接続するといったことを行います。
グローバルIPの確認は以下のコマンドを叩けばできます。

$ curl ifconfig.io

他にも以下のサイトにアクセスすれば確認可能です。
アクセス情報【使用中のIPアドレス確認】

グローバルIPを確認したら、以下のコマンドを叩きます。
接続できたら確認完了です。

$ ssh pi@x.x.x.x -p 22