家に設置したラズベリーパイに外部からSSHでアクセスする方法

この記事は約4分で読めます。

デフォルトでは、家のネット環境に接続しているデバイスに外部からアクセスすることはできません。今回は今回はラズベリーパイを使って、外部から家のラズパイにSSHアクセスする方法を紹介します。

目的

家に設置したラズベリーパイにルータを通して、SSHアクセスします。

接続方法の概要

  1. ラズパイにプライベットネットーワークアドレスを固定
  2. ラズパイ側のポート解放
  3. ルータで特定のポート解放&解放したポートへのアクセスを特定のプライベートIPアドレスに渡す

注意

今回は有線でルータとラズパイ接続させています. ルータはAtermを用いています

接続方法

ラズパイにプライベットネットーワークアドレスを固定

  1. ラズパイにログイン
  2. sudo vi /etc/dhcpcd.confで編集->一番最後に以下の文章(コメントアウト以外)を追記
  3. Raspberry Pi に固定IPアドレスを割り当てる方法を参照
  4. sudo rebootで再起動
...
#無線の場合はwlan0等
interface eth0
#固定したいプライベートIPアドレス
#後々,Atermの場合はポート解放の際,プライベートIPアドレス192.168.10.XXのXXは機種によって,DHCPの自動割り当て範囲外に設定する必要があるため確認してください
#ex)http://www.aterm.jp/support/guide/category/enjoy/port/005/main.html
static ip_address=192.168.10.XX/24
#ゲートウェイ
static routers=192.168.XX.XX
# (ルータの設定ページにて)情報->現在の状態->拡張表示でDNSサーバを取得
static domain_name_servers=192.168.XX.XX

 

ラズパイ側のポート解放

SSHでアクセスする時のポートを解放する
今回はufwを用います(iptablesのラッパらしい)

  1. sudo apt-get ufwでインストール
  2. sudo ufw enableでufw起動
  3. sudo ufw allow sshでssh通信を起動(他のポートの許可の場合sudo ufw allow <port>)
  4. sudo ufw status でポートが解放されているか確認

ルータで特定のポート解放&解放したポートへのアクセスを特定のプライベートIPアドレスに渡す

ルータによっては設定の仕方が違うので注意してください

  1. 192.168.10.1にブラウザでアクセスしルータの設定ページを開く
  2. 詳細設定->ポートマッピング設定
  3. 先ほど設定したプライベートIPアドレスを指定して,開けるポートを書いて保存
  4. このポートを確認するサイトでポートが空いているか確認

アクセスしてみる

ssh pi@(グローバルIP)

最後に

これからの課題

契約しているブロードバンドが動的にグローバルIPアドレスを割り当てている事

  • DDNS設定
  • 定期的に現状のグローバルIPアドレスを通知する

今回は面倒だったので後者を選択しました.僕の場合大体2〜3週間に一回更新されました。

#!/bin/sh
ip_adress=`curl -s ifconfig.me`
curl -X POST -H 'Authorization:Bearer <トークン>' -F "message=$ip_adress" https://notify-api.line.me/api/notify

これをcrontabで定期実行し,Linenotifyに自動通知するようにしました.

おまけ

sshのポートをデフォルトの22で開けていると変なアクセスが多数来るため,変更しておいた方が良いです。なので

 

SSHのポート番号を変更 – SSHサーバーの設定

を参考にしたらできました。パスワードログイン禁止にするなども必要だと思います。

これから

NextCloud(Dropboxみたいなの)を導入して、家にサーバ立てようと思います。

それでは。

タイトルとURLをコピーしました