LoginSignup
9
8

More than 3 years have passed since last update.

[メモ](ラズパイ) ngrokを使って外からsshログイン

Posted at

概要

環境

  • Raspberry Pi 3B
  • 2019-04-08-raspbian-stretch ベース。
    apt-get update && apt-get upgrade -yでパッケージ更新済み(2019/5/16)

手順

  1. いつも通りにラズパイを準備する。

    • ラズパイのパスワード変更はしておいたほうがいいと思う。
  2. ngrokのサイトにサインアップして、Authのとこから、Your Tunnel Authtokenのトークンを取得しておく。
    image.png

  3. コンソールを開いて、以下を実行する. NGROK_TOKEN=~のところは、うまいように書き換える。

    # 取得したTOKENを下に書く
    NGROK_TOKEN=AaBbCcDdEeFfGgHhIiJj_KkLlMmNnOoPpQqRrSsTt
    #
    #以下コピペ
    sudo sh -c 'apt update && apt install -y jq git curl unzip' && \
    cd ${HOME} && \
    git clone https://github.com/vincenthsu/systemd-ngrok.git && \
    sed -i -e 's/amd64/arm/g' ./systemd-ngrok/install.sh && \
    sudo ./systemd-ngrok/install.sh ${NGROK_TOKEN}
    
  4. アクセスポートのチェック

    curl -s localhost:4040/api/tunnels | jq -r ".tunnels[].public_url"
    
    実行例-アクセスに使うポート番号が出てくるので、これを使う
    pi@raspberrypi:~ $ curl -s localhost:4040/api/tunnels | jq -r ".tunnels[].public_url"
    tcp://0.tcp.ngrok.io:16496
    
  5. 外からアクセス (ssh pi@0.tcp.ngrok.io -p 16496)

    実行例(初回接続時は、yesとタイプするとこがあるカモ)
    pi@raspberrypi2:~ $ ssh pi@0.tcp.ngrok.io -p 16496 ls /
    The authenticity of host '[0.tcp.ngrok.io]:16496 ([12.23.34.45]:16496)' can't be established.
    ECDSA key fingerprint is SHA256:xppMhi47bVQPIxZrB2OMT6cSdi9zHRVoJrxpkZ2NRjI.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '[0.tcp.ngrok.io]:16496,[3.17.202.129]:16496' (ECDSA) to the list of known hosts.
    pi@0.tcp.ngrok.io's password:
    bin
    boot
    dev
    etc
    home
    lib
    lost+found
    media
    mnt
    opt
    proc
    root
    run
    sbin
    srv
    sys
    tmp
    usr
    var
    pi@raspberrypi2:~ $ 
    

おまけ

  1. アンインストール

    アンインストール
    cd ${HOME} && \
    sudo ./systemd-ngrok/uninstall.sh && \
    rm -rfv ./systemd-ngrok
    
  2. 起動時や、アクセスするポート番号を監視して変更があったら、通知(Email?Slack?/Tweet?)すると便利かもしれない。

  3. /opt/ngrok/ngrok.ymlの設定を書き換えれば、Webサーバを公開できたりする

    authtoken: AaBbCcDdEeFfGgHhIiJj_KkLlMmNnOoPpQqRrSsTt
    tunnels:
      http:
       addr: 80
       proto: http
    
    (実行例)設定書き換え後、以下実行。
    pi@raspberrypi:~ $ cd ${HOME}
    pi@raspberrypi:~ $ sudo systemctl daemon-reload
    pi@raspberrypi:~ $ sudo systemctl restart ngrok.service
    pi@raspberrypi:~ $ curl -s localhost:4040/api/tunnels | jq -r ".tunnels[].public_url"
    https://33523460.ngrok.io
    http://33523460.ngrok.io
    pi@raspberrypi:~ $ mkdir -p ${HOME}/www && echo 'Hello World! Qiita!' > ${HOME}/www/index.html && cd ${HOME}/www && sudo python3 -m http.server 80
    Serving HTTP on 0.0.0.0 port 80 ...
    .
    . >>>> ブラウザを開いて、https://33523460.ngrok.io に接続 <<<<
    .
    127.0.0.1 - - [16/May/2019 14:40:48] "GET / HTTP/1.1" 200 -
    127.0.0.1 - - [16/May/2019 14:40:48] code 404, message File not found
    127.0.0.1 - - [16/May/2019 14:40:48] "GET /favicon.ico HTTP/1.1" 404 -
    .
    . >>>> テストが終わったら、CTRL-C <<<<
    .
    ^C
    Keyboard interrupt received, exiting.
    pi@raspberrypi:~/www $ cd ${HOME}
    pi@raspberrypi:~ $ rm -rfv www
    removed 'www/index.html'
    removed directory 'www'
    pi@raspberrypi:~ $ 
    

    image.png

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8