3
3

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.

外部サーバーを経由してポート開放していない自宅Raspberry Piにssh接続

Last updated at Posted at 2019-06-23

使用環境

外部サーバー:Ubuntu16.04
自宅サーバー:Raspbian Stretch Lite (on Raspberry Pi 3 Model B)

対象PCから外部サーバーへリモートポートフォワード

リモートポートフォワーディングとは、外部サーバのポートに送られたパケットをローカルサーバのポートに転送する機能のことです。Raspberry Pi側から次のコマンドを実行するとsshトンネルを作成できます。

$ ssh -R [外部サーバー側の空いているポート]:localhost:[Raspberry Piのsshポート] -i [秘密鍵の場所] -p [外部サーバーのsshポート] [ユーザー名]@[外部サーバーIPアドレス]
(例)$ ssh -R 10001:localhost:22 -i /home/user/.ssh/id_rsa -p 10000 user@serverip

(例)で説明すると、serverip:10001からlocalhost:22へのトンネルが出来上がりました。sshでserverip:10001に接続すればRaspbery Piにつながります。コマンドについては「ssh リモートポートフォワード」などで検索すると良いページがたくさん出てくると思います。

autosshを使えば接続が切れても自動再接続

上で使ったsshコマンドは接続が切れた場合手動で再接続する必要があります。これを自動化してくれるautosshを使えば便利です。aptでインストール出来ます。

$ sudo apt install autossh

コマンドをsshからautosshに変えるだけで使えます。

$ autossh -R 10001:localhost:22 -i /home/user/.ssh/id_rsa -p 10000 user@serverip

crontabで起動時にsshトンネル作成

最後にcrontabを使って起動時に自動でトンネルを作成するようにします。次のコマンドで編集モードで起動します。

$ crontab -e

最後の行に次を追加すれば設定完了です。

@reboot /usr/bin/autossh -fN -R 10001:localhost:22 -i /home/user/.ssh/id_rsa -p 10000 user@serverip

追加した-fNはシェルを使用せずにバックグラウンドで実行するコマンドです。Rapsberry Piを再起動して外部サーバー経由でssh接続できれば成功です。

3
3
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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?