Raspberry Pi(以下、RP)をサーバーとして運用する場合、他のPCや外部ネットワークから遠隔操作できると便利です。
遠隔操作で使用する際はディスプレイやキーボード、マウスの接続は不要で、必要なのは電源とLANケーブルのみになります。 (無線LAN接続時はLANケーブルも不要)
今回は「SSH」によるRPの遠隔操作方法について、はじめての方にもわかりやすいように、できるだけ丁寧にまとめました。
本記事ではクライアントPCはMacを対象としますが、Windows版の記事も用意しております。 作業の分岐点にリンクを記載していますので、Windowsユーザーの方もこのまま読み進めていただければと思います。
- 環境
- 「SSH」とは?「Telnet」との違い
- Raspberry Pi(サーバー)の設定確認
- Mac(クライアント)からのSSH接続
- SSHの切断
- まとめ
- Raspberry Pi関連のおすすめ記事
環境
本記事は以下の環境で動作確認しています。 同一の環境でなくても大丈夫だと思いますが、出力メッセージなどは異なる可能性があります。
Raspberry Pi(サーバー)
モデル: Raspberry Pi 2 Type B(element14版)
OS: Raspbian 8.0(Jessie)
(NOOBS Ver.1.9.0で導入)
有線LAN接続
Mac(クライアント)
モデル: MacBook Pro Mid 2015
OS: OS X El Capitan 10.11.4
「SSH」とは?「Telnet」との違い
サーバーをコマンドベースで遠隔操作するための手段としては、主に「SSH」と「Telnet」があります。
使用方法はどちらも似ており、SSHやTelnetに対応するアプリケーションをクライアントPCにインストールし、サーバーに接続します。 接続後はPCと同じように、離れた場所にあるサーバーに対してコマンドを入力したり、出力結果を確認することができます。
SSHとTelnetの大きな違いは、通信データの暗号化の有無です。
Telnetでは、データが暗号化されずにそのままネットワーク上を流れます。この中にはログイン時のパスワードも含みます。
データが途中で傍受される可能性を考慮すると、暗号化なし(平文)での通信は危険です。
SSHは通信が暗号化されるため、Telnetと比べて安全性は高いです。そのため「Secure Shell」略してSSHという名前がついています。
ですが、Telnetにもメリットがあります。 プロトコル(通信手順)が単純なため、TCP/IPの通信機能さえあればTelnetの機能は比較的簡単に実装できます。
例えば、Excel VBAでWindows Socket APIを使用してTelnet機能を作成すれば、Excelシートの入力内容からコマンドを組み立ててサーバーに送ることも可能です。(実際に業務で使用しています)
LAN内や安全なネットワーク内では、Telnetにも利用価値があると思います。
Raspberry Pi(サーバー)の設定確認
RaspbianにはSSHサーバー「OpenSSH」が最初から導入されており、クライアントPCからすぐに接続できます。
ここでは、接続に必要なRPのIPアドレスを確認します。
RPのターミナルを起動し、次のコマンドを入力します。
$ ifconfig
上記のように行頭を「$」(ダラー)で記載している場合は、それより後の文字列をコマンドとして入力します。今回は「ifconfig」と入力後、[Enter]キーを押します。
この場合の「$」を「プロンプト」といい、コマンドの入力準備ができたことをユーザーに伝えるために表示されます。 複数のコマンドを続けて入力する際は、前のコマンドが終了してプロンプトが表示されてから次のコマンドを入力します。
プロンプトの文字はユーザーの権限によって変わります。 一般ユーザーは「$」、管理者ユーザー(root)は「#」と表記するのが一般的です。
今回のコマンドの出力結果は次の通りです。
eth0 Link encap:イーサネット ハードウェアアドレス xx:xx:xx:xx:xx:xx inetアドレス:192.168.xxx.xxx ブロードキャスト:192.168.1.255 マスク:255.255.255.0 以下省略
[inetアドレス]に続く「192.168.xxx.xxx」がRPのIPアドレスです。(xには数字が入ります)
Mac(クライアント)からのSSH接続
Macは標準でSSHクライアントが搭載されているため、アプリケーションの追加は不要です。
WindowsにはSSHクライアントが含まれていないため、「Tera Term」を導入して接続する方法を次の記事で紹介しています。
ターミナルを起動し、sshコマンドでRPに接続します。 「192.168.xxx.xxx」には先ほど確認したRPのIPアドレスを入力します。
$ ssh pi@192.168.xxx.xxx
初回接続時は次のメッセージが表示されますので、「yes」と入力後に[Enter]を押します。
The authenticity of host '192.168.xxx.xxx (192.168.xxx.xxx)' can't be established. ECDSA key fingerprint is SHA256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa. Are you sure you want to continue connecting (yes/no)?
これは、接続先サーバーの識別情報(公開鍵の指紋、finger print)を保存しておき、2回目以降の接続時に照合するためです。 同一サーバーに対する2回目以降のSSH接続では、このメッセージは表示されません。
しかし、何者かの手によって悪の「ダークベリーパイ」にすり替えられた場合、「指紋」が異なるためIPアドレスが同じでも次のような警告メッセージが表示されます。 結果、「いつものRP」でないことに気づくことができます。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ECDSA key sent by the remote host is SHA256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb. Please contact your system administrator. Add correct host key in /Users/STDIO/.ssh/known_hosts to get rid of this message. Offending ECDSA key in /Users/STDIO/.ssh/known_hosts:2 ECDSA host key for 192.168.xxx.xxx has changed and you have requested strict checking. Host key verification failed.
RPの買い替えやOSの再インストールを自身で行った場合は問題ありません。 その際は次のコマンドで古い鍵を削除します。
$ ssh-keygen -R 192.168.xxx.xxx
SSH接続の手順に戻ります。 ユーザー「pi」のパスワードを要求されますので、入力後に[Enter]を押します。 (初期パスワードは「raspberry」です。)
pi@192.168.xxx.xxx's password:
ログインに成功してプロンプト「$」が表示されました。 これで、MacからRPにコマンド入力できます。
pi@raspberrypi:~ $
試しにRPのOSバージョンを確認してみます。
$ lsb_release -a
No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 8.0 (jessie) Release: 8.0 Codename: jessie
SSHの切断
切断時は次のコマンドを入力します。
$ exit
SSH接続を切断するだけなので、RPは稼働状態のままです。
シャットダウンする場合は、SSH接続状態で次のコマンドを入力します。
$ sudo halt
※「exit」でSSHを切断した状態で入力すると、Macがシャットダウンされます。
まとめ
MacからRaspberry PiへのSSH接続は、ほとんど準備が必要ないくらい簡単です。 なので今回は関連する話題を交えながら進めてみました。
Raspberry Piをはじめたばかりで「SSHって何?」という方にとって参考になれば幸いです。