wheezy向けの旧ページはこちら

3.SSHのセットアップ (OpenSSH) - RaspberryPiで各種サーバー作り! - ある阪大生の物置小屋

ディスプレイとキーボードを繋げた状態でRaspberryPiを操作するのもいいですが、
調べ物しながら操作するには、ディスプレイ・キーボードレスでほかのPCから操作した方が楽でしょう。
ここでは、SSHを用いてリモートからコンソールを操作する方法について説明します。

SSHの設定

Raspbianには「OpenSSH」がデフォルトでインストールされているので、設定の説明から入ります。

  1. SSHの設定ファイル「/etc/ssh/sshd_config」を以下のように編集する。
    (変更)
    Port 22
    ↓
    Port (49152〜65535の任意のポート番号)
    
    PermitRootLogin without-password
    ↓
    PermitRootLogin no
    
    RSAAuthentication yes
    ↓
    RSAAuthentication no
    
    PasswordAuthentication yes
    ↓
    PasswordAuthentication no
    
    UsePAM yes
    ↓
    UsePAM no
    
    (追加)
    AllowUsers pi
    
    内容としては、「パスワード認証」を無効にし、強固な「公開鍵認証」を有効にしています。
    (ポート番号を変える理由はセキュリティを向上するため)
    (ポート番号は他のプログラムが利用しないなら1024〜49152のポート番号を利用しても良い)
  2. 以下のコマンドで公開鍵・秘密鍵を生成する。
    ssh-keygen
    
    「Enter file in which to save the key」というのは鍵の保存場所を聞いていますが、デフォルトでOKなので何も入力せずに「Enter」を押しましょう。
    「passphrase(パスフレーズ)」は設定してもしなくてもどちらでもOK
    公開鍵・秘密鍵は対になっており、片方を無くすともう一方も無駄になります
    生成した公開鍵・秘密鍵は誰にも見せないように!
    ネットワークを通して転送するときは暗号化を忘れずに!
  3. 以下のコマンドで公開鍵ファイル「id_rsa.pub」を「authorized_keys」にリネームする。
    cd .ssh
    mv id_rsa.pub authorized_keys
    
  4. 秘密鍵ファイル「id_rsa」をUSBメモリで操作するPCに移動する。
    (移動の方法は暗号化されていればネットワーク上でも構いません)
    USBメモリに「id_rsa」をコピーするには、まずUSBメモリをFAT32でフォーマットしておき、RaspberryPiに差し込みます。
    そして、以下のコマンドでUSBメモリのデバイス名を確認します。
    sudo fdisk -l
    
    大体は、「sda1」・「sdb1」といった名前になっていると思います。
    次に、以下のコマンドでUSBメモリをマウント・コピーします。
    #マウントポイント作成
    sudo mkdir /mnt/usbmem
    
    #USBメモリーをマウント
    sudo mount /dev/(デバイス名) /mnt/usbmem
    
    #秘密鍵をUSBメモリーに移動
    sudo mv id_rsa /mnt/usbmem
    
    #USBメモリーをアンマウント
    sudo umount /dev/(デバイス名)
    
    そしてUSBメモリーをRaspberryPiから取り出し、操作するPCに移動させてください。
  5. 以下のコマンドで「.ssh」フォルダ・「authorized_keys」ファイルのパーミッションを変更する。
    chmod 600 authorized_keys
    cd
    chmod 700 .ssh
    
    暗号鍵が入ったファイルは他のユーザーに見られては困るので、パーミッションを変更しておきます。
    (OpenSSHの方でもパーミッションのチェックがあり、変更していない場合は利用できないようになっています。)
  6. Raspi-Configを用いて、SSHを有効にする。
    Raspi-Configを起動するコマンドは、1.2.で説明した通り、
    sudo raspi-config
    
    です。
    Raspi-Configを起動したら、「Advanced Options」→「A4 SSH」→「Enable」を選択します。
    デフォルトで有効になってると思いますが念のため。
  7. 以下のコマンドで、SSHデーモンに設定を読み直しさせます。
    sudo systemctl reload ssh
    
  8. 以下のコマンドで、iptablesの設定を書き換え、SSHの通信が通るようにする。
    sudo iptables -A INPUT -j ACCEPT -s (SSHで接続するネットワークアドレス)/(サブネットマスク) --protocol tcp --destination-port (設定したポート番号)
    
    2.5.の通り、iptablesの設定の変更後は以下のコマンドで設定を記録しておくこと。
    sudo iptables-save | sudo tee /etc/iptables/rules.v4
    
  9. 外部からログインする。
    取り出した暗号鍵ファイル「id_rsa」を用いてSSHでログインしてみましょう。
    個人的には、Windowsの場合は「Tera Term」がおすすめです。
    Macは詳しくないので、ネット等で「SSHクライアント」を調べてください。(^-^;
    各ソフトでのログイン方法はそれぞれのマニュアルを参照してください。

製品紹介(Amazonアフィリエイト)