9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 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. アクセスポートのチェック

    ```bash
curl -s localhost:4040/api/tunnels | jq -r ".tunnels[].public_url"
```shell-session:実行例-アクセスに使うポート番号が出てくるので、これを使う

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`)

	```shell-session:実行例(初回接続時は、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. アンインストール

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

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

    例:/opt/ngrok/ngrok.yml
    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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?