2021年9月26日日曜日

ngrokとssh通信を経由してUbuntuからRaspberry Piにリモートデスクトップ接続


背景

Raspberry Piにリモートデスクトップを接続するにあたり、ngrokでファイヤウォールを越えつつsshで暗号化して通信する方法が分かったので、備忘録として記事に残します。

使ったもの

  • Raspberry Pi OSで動くRaspberry Pi
    今回は2021-05-07版のRaspberry Pi OSをRaspberry Pi 3bで動かしました。
  • Remmina
    Ubuntuに標準でインストールされています。
    利用したUbuntuは20.04です。

Raspberry Piの事前準備

ngrokでssh接続できるように設定

下記の記事に従って設定してください。

固定ipが無いmvno配下のraspberry piに、ngrokで割り振られるurlでsshログインする方法

パスワード無しでsshできるように設定

下記の記事に従って設定してください。

鍵を利用してパスワード無しで(Raspberry Piに)sshログイン

リモートデスクトップサーバーのプログラムをインストール

リモートデスクトップでログインできるように、Raspberry PiにxrdpというRDP形式でリモートデスクトップでのログインを可能にするプログラムをインストールします。

下記のコマンドをRaspberry Piで実行してください。
sudo apt install xrdp

上記コマンドでxrdpをインストールすればRDPでRaspberry Piに接続可能な状態になります。

試しにWiFi内でリモートデスクトップ接続

Raspberry Piと同じWiFiに接続したUbuntuのRemminaに下記のように情報を設定すれば、リモートデスクトップ接続できます。

Remminaで追加ボタンを押して設置画面を開きます。


Raspberry PiのWiFi内のIP、ユーザー名(pi)、パスワード(初期はraspberry)を入力し、「保存して接続」を押します。


設定が期待通りにできていればリモートデスクトップの通信によりRaspberryPiのデスクトップが表示されます。


ngrokのssh通信を介してリモートデスクトップ接続

さて、この記事の目的であるngrokのssh通信を通じたリモートデスクトップの接続を行います。

まず、ngrokでRaspberry Piのssh接続のためのアドレスを確認します。

https://dashboard.ngrok.com/endpoints/status


このアドレスはngrokの無料版だとRaspberry Piでのngrokコマンド実行の度にポート番号が変わります。
アドレスを変えたくない場合は、ngrokに課金すると固定できるようです。

この情報をRemminaの「SSHトンネル」のタブに入力します。


  1. 接続名に適当な名前を付けます。
  2. RDPを選びます。
  3. SSHトンネルのタブを選択します。
  4. 「SSHトンネルを有効にする」ボタンを押して黒く(選択状態に)します。
  5. SSHトンネルで「カスタム」を選びます。
  6. カスタムのurlとして、Remminaで確認したurlから「tcp://」を消したものをRemminaのSSHトンネルのカスタムに記述します。(コピペして「tcp://」を消してください。)
  7. SSH認証のユーザー名にRaspberry Piのユーザー名を入力します。標準はpiです。
  8. id_rsa.pubでRaspberry Piにログインできるようにしているなら、公開鍵(自動)を選択します。(それ以外のファイル名の鍵を利用している場合は、SSH identity fileを選び、鍵ファイルを指定してください。)
    まだ「保存して接続」は押さず、次の手順に進んでください。

SSHトンネルの情報を入力できたら、基本タブにも情報を入力します。


  1. 「基本設定」のタブを選びます。
  2. サーバー名はlocalhost、ユーザー名とパスワードはログインするRaspberry Piのものを入力します。
    SSHトンネルによりRaspberry Piのポートを手元のPCに展開(ポートフォワード)するため、サーバー名はlocalhost(もしくは127.0.0.1)にします。
  3. 基本設定とSSHトンネルの情報を入力できたら「保存して接続」を押します

成功するとngrokのssh経由でRaspberry Piにリモートデスクトップでログインできます。


まとめ

ngrokのsshでトンネルを作り、そのトンネルを通してRemminaでRaspberry Piに暗号化した通信の下でリモートデスクトップ接続できました。

参考

リモートデスクトップビューアー,Remminaを使用する

0 件のコメント :