1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RasPiに外部ネットワークからSSH接続する方法

Posted at

概要

研究で使うRaspberry Pi,フィールドに置くことが多いんだけど,測定中にネットワーク越しに接続したい。
3台までならRealVNC(https://www.realvnc.com/en/)がお手軽でとても良いのだけれど,それを超えると結構な額の継続出費になる。
TeamViewerはなんだか安定動作しないし,そもそも個人利用でない場合はこれも有償。

そこで色々と探していった結果,Cloudflared Zero Trust Tunnelにたどり着いた。ドメインとかレンタルサーバーとか考えると有償なんだけれども,上記のサービスに比べるとだいぶリーズナブルな気がする。

なお,素人による備忘録なので,下記手順が最も効率的かどうかは保証しない。

ふわっとした理解

ドメインを取得し,DNSをCloudflaredのサーバーに設定する。
その上で,接続したい端末にてCloudflared Tunnelをホスト名(上記ドメインのサブドメイン)とともに設定しておくと,Cloudflared側で名前解決をしてくれて,外部ネットワークから接続できるようになる。

ただし,実際には,外部ネットワークから端末に向けて接続をしているのではなくて,端末から外部ネットワークに向けて接続しているので,ファイアウォール等を突破できる。このあたりの仕組みはTeamViewerと同じ。

ドメイン取得

ともかくドメインの取得。サーバーも必要。

素人の私は,業界最大手という名に負けてXServerでレンタルサーバーもドメインも合わせて契約。分けるのも面倒だし。10日間の無料期間があるので(時期によって違うかもしれない),その間に動作確認可能。無料期間が終了したらスタンダードプランで1000円/月程度。

ちなみに,jtagu.netというドメインを取得してみた。
目的としては,koguma.jtagu.netというアドレスで,Raspberry Piに接続したい。

Cloudflare アカウント取得/DNS設定

ここからサインアップ。

「ドメインを追加」で上記のドメインを選ぶと,DNSのアドレスが出てくるので,それをXServerのドメイン管理ページの「ネームサーバー設定」に打ち込む。

この設定が反映されるまで,数時間かかる。

Zero Trust 設定

Cloudflareのサイトのタブに「Zero Trust」というのがあるので,そこからアカウントを設定する。

ちなみにZero Trustに入るともはや日本語サイトは消え失せる。

とりあえずは無料の「Free」で良いと思われる。ただし,0円でも支払方法の登録(=クレジットカードの登録)が必要。

下の図はRaspberry Piを1台登録した後のスクショなので,もしかして,もしかしなくてもFreeで50台まで登録できるのだろうか…?ちなみにStandardプランだと$7/seat/month,となっている。(この価格ならRealVNCの方が良いと思う)

image.png

Tunnel 設定

Raspberry Pi本体で,下記手順を行う。

基本このままだけど,一応手順を書いておく。

Cloudflared をインストール

https://github.com/cloudflare/cloudflared/releasesを確認して,wgetapt install

wget https://github.com/cloudflare/cloudflared/releases/download/2023.3.1/cloudflared-linux-armhf.deb
sudo apt install ./cloudflared-linux-armhf.deb

ログイン認証

以下のコマンドでCloudflareにログインし,登録してあるドメインを選択する。

cloudflared tunnel login

トンネル作成

以下のコマンドでトンネルkumatunnelが作成される

cloudflared tunnel create kumatunnel

これを行うと,~/.cloudflared/hinna-hinna-uma-uma.jsonの様なファイルが生成される。これがトンネルの認証情報で,hinna-hinna-uma-umaの部分がトンネルのID。

そうしたら,~/.cloudflared/config.ymlという設定ファイルを作成する。

tunnel: kumatunnel
credentials-file: /home/hoge/.cloudflared/hinna-hinna-uma-uma.json

ingress:
        - hostname: koguma.jtagu.net
          service: ssh://localhost:22
        - service: http_status:404

で,tunnelとDNSを紐づけて,走らせる。

cloudflared tunnel route dns kumatunnel koguma.jtagu.net
cloudflared tunnel run kumatunnel

ブラウザからSSHできる様にする

これもまんまココのやり方を踏襲。

Access groups 設定

上記のサイトでは省略されているけど,先にアクセス可能なグループを定義しておかないといけない。

Cloudflare Zero Trust の Access -> Access groups から, Add a Group を押して,適当なグループを作成する。
とりあえず,メールアドレス定義で,自分だけ入ったグループを作成した。

Applications 設定

完全にここの通りなので省略

できた!

とりあえずできた!
あとは,Tunnelをサービス登録しておくことと,セキュリティ周りのアレコレを確認しておくこととかかな。

費用はレンタルサーバー・ドメインの分だけ!

SSHが出来るということはRDPもできるということなので,まあそれは今後考えましょう。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?