GCP を中継サーバーとして Raspberry Pi を公開する(失敗)
Raspberry Pi を自宅サーバーとして公開することに挑戦してみた。Google Cloud Platform(GCP)を中継サーバーとして使う。
環境:Raspberry Pi Zero W(Jessie)、Raspberry Pi OS Jessie、GCP(Ubuntu; Ubuntu 16.04 LTS、fi-micro、us-west1 Region)
(0)Raspberry Pi をセットアップし、使える状態にする。GCP は Pleroma 用にセットアップしたものをそのまま使う。
GCP で Pleroma をスタートアップスクリプトで構築する(失敗) – with a Christian Wife
https://wacw.cf/2021/05/24/gcp-pleroma-with-a-startup-script/
(1)Raspberry Pi で .ssh フォルダを作成、公開鍵を登録する。途中ファイル名を聞かれるので forward_server_key とし、次に聞かれるパスフレーズは空欄にした。
1pi@raspberrypi $ mkdir .ssh
2pi@raspberrypi $ cd ~/.ssh
3pi@raspberrypi $ ssh-keygen -t ed25519
4Generating public/private ed25519 key pair.
5Enter file in which to save the key (/home/pi/.ssh/id_ed25519): forward_server_key
6Enter passphrase (empty for no passphrase):
7Enter same passphrase again:
8[いろいろ表示される]
これで、.ssh フォルダ内に、秘密鍵の forward_server_key と公開鍵の forward_server_key.pub が生成される。
(2)forward_server_key.pub を開き、中身のテキストをコピー。
pi@raspberrypi $ sudo nano forward_server_key.pub
(3)Google Cloud Platform で「COMPUTE>Compute Engine>VM instances」で作成済みのインスタンス名をクリック。トップの EDIT ボタンをクリック。
"You have 0 SSH keys" の下の "Show and edit" をクリック。2のテキストをペースト。"Save" をクリック。
(4)Raspberry Pi から GCP インスタンスへ SSH 接続してみる。
pi@raspberrypi $ ssh -i ~/.ssh/forward_server_key [GCP インスタンスの外部 IP アドレス]
これでログインできた。
(5)このまま GCP でポートフォワードの許可をしよう。
$ sudo nano /etc/ssh/sshd_config
以下のように変更。項目がなければ追記する。保存。
GatewayPorts yes
SSH サーバーを再起動。
$ sudo systemctl restart sshd.service<
ログアウトして Raspberry Pi に戻ろう。
$ exit
(6)テスト用に以下のコマンドで Raspberry Pi に簡易ウェブサーバーを立ち上げよう。
$ python3 -m http.server [ポート番号]
ポート番号を指定しなければ、8000 番ポートとなるので、今回は 8000 番ポートということにしよう。
これで http://[Raspberry Pi のアドレス]:8000
にブラウザでアクセスできるようになる。これを全世界に公開してみる。
(7)ルーターで Raspberry Pi の 8000 ポートを解放する。Raspberry Pi の IP アドレスも固定しておいたほうがいいだろう。
(8)私は Mac から操作をしているが、6の簡易ウェブサーバーの立ち上げで Terminal を使用中だ。なので、Terminal の新規ウィンドウを開き、新規に Raspberry Pi に SSH 接続する。
以下のコマンドで、Raspberry Pi の 8000 番ポートを GCP のポートフォワードする。
pi@raspberrypi $ ssh -i ~/.ssh/forward_server_key -T -N -g -R 8000:localhost:22 [GCP インスタンスの外部 IP アドレス]
これで以下のアドレスにクライアント・マシンからアクセスできるはずなのに、なぜか接続できない。
http://[GCP インスタンスの外部 IP アドレス]:8000
参考:
VPSを経由して安全に自宅サーバを公開する – Qiita
https://qiita.com/fealone/items/98d7bdc940e57cfc1555
自宅のRaspberry Piに外出先からアクセスする~中継サーバーを使おう – みかんのゆるふわ技術ブログ
https://www.mikan-tech.net/entry/2020/05/01/170819
SSHと踏み台サーバーを用いてサーバーを立てるのが困難な場所にVPNサーバーを立てる – Qiita
https://qiita.com/hiro2do/items/d8d0317447eb81e70151
GCPにUbuntuサーバを構築 : TerminalからのSSH接続+GUI接続設定編 – Qiita
https://qiita.com/Q-Yeah/items/362b71393f763e37397a
Raspberry Piに公開鍵認証を使ってssh接続する│ツール・ラボ
https://tool-lab.com/raspi-key-authentication-over-ssh/
SSH は (RSA 鍵より) ED25519 鍵の方が強固で速い – らくがきちょう
https://sig9.hatenablog.com/entry/2020/01/11/000000
GCPに自分のPCからssh接続する方法[秘密鍵/公開鍵] | Darablog
https://dara-blog.com/conect-ssh-gcp
Python3 : 簡易 WEB サーバーを立ち上げる | R-Y-O の IT 備忘録 Ver.2.0
https://raspi.ryo.sc/python3-simple-webserver/
Pythonの標準モジュールを使って、コマンドラインからHTTPサーバーを起動する – CLOVER
https://kazuhira-r.hatenablog.com/entry/20180828/1535479659