スマホのテザリング機能を使ってRaspberryPiをスマホにつなげて、SSH接続とリモートデスクトップ接続を目指す。
前提としてすでに家のWifiなどに繋がっていて、今回新たにAndroidとの接続設定をする状況を想定する。
概要
テザリングでスマホとRaspberryPiがつながれば同じLANネットワークに繋がっているようなものなので、IP特定して、固定化して、後はPCと同じようにして繋げばいいだけ。SSH、RDP、VNC等のAndroid用アプリもそろっているのでそれを使えばPCと同じことができるよって話。
iPhoneは持っていないので知りません。大体同じ?
スマホのテザリングをONにし、RaspberryPiをつなぐ
スマホのテザリングON。やり方はスマホによって違うのでおググりください。
RaspberryPiの設定もデスクトップのタスクバーからWifi設定をONにしてスマホのテザリングに繋ぎに行くだけ。ヘッドレス(モニター無し)の場合はこの作業は不要(というかできない)。
Wifiの優先度設定
家のWifiとスマホのテザリングといったように複数のWifiに接続すると、何を優先するのかが不明になったりするので、ちゃんとコントロールできるようにする。スマホのテザリングに接続後、RaspberryPiのターミナルから
$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
と打ち、以下のようにpriority
を追加し保存する。
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 (家のwifi) network={ ssid="XXXXXXXX" psk="xxxxxxx" key_mgmt=WPA-PSK priority=0 } (スマホのテザリング) network={ ssid="YYYYYYYY" psk="yyyyyyyy" key_mgmt=WPA-PSK priority=1 }
ヘッドレスでやっている場合は「スマホのテザリング」が丸々抜けているはずなので、抜けている部分を全部手動で入力する。
ssid
はその通りSSID、psk
はパスワードになっている。priority
の項目を自分で追記。数字が大きい方が優先されるので、スマホのSSIDを優先度高にしておけば、普段は家のWifiにつなぐけど、スマホのテザリングをONにしているときはスマホに繋ぎに行く、というような挙動になる。
RaspberryPiのIP固定化
次に、スマホにつないだ時もIPを固定されるようにする。
テザリングで繋がっている今はスマホがルーター代わりになっており、スマホ自身のIPを確認する必要がある。GoogleストアからTermux(ターミナルエミュレーター)をインストールして
$ ifconfig wlan0
と打てば、どこかにinet 192.168.43.xxx
と表示されていると思う。これがスマホの(無線LANデバイスが持つ)IPアドレス。43
は別の数字になっているかもしれない。
次に、RaspberryPiのターミナルから
$ sudo nano /etc/dhcpcd.conf
と打ち、以下を追記する。ssid XXXXXXXX
はPCのSSIDを想定していて、すでに記述されているものとする。
interface wlan0 ssid XXXXXXXX static ip_address=192.168.1.xxx/24 static routers=192.168.1.1 static domain_name_servers=192.168.1.1 (以下を追記) ssid YYYYYYYY static ip_address=192.168.43.yyy/24 static routers=192.168.43.xxx static domain_name_servers=192.168.43.xxx
yyy
は自分で決める。AndoroidテザリングのDHCPサーバー機能(簡単に言えば、IPの自動割り振り機能)のアドレス範囲は設定変更不可らしい。何か別の機器とIPが衝突したときは南無ということで。
dhcpcd.conf
が更新されたら自動的にネットワーク接続も更新するみたい。確認のためにRaspberryPiのターミナル上でifconfig wlan0
と打って設定した通りの表示になったらOK。
SSH接続
AndroidのSSHクライアントをインストールして、PCの時と同じようにログインすればよい。自分はこれを使っている。
リモートデスクトップ:RDPで接続
前回の記事からの流れで、RaspberryPiにxrdp
を入れている人は、スマホにRDPクライアントを入れるだけでOK。新しい接続先の設定時に「固定したRaspberryPiのIP」「ユーザー名(初期設定のままならpiユーザー)」「ログインパスワード」を入れればよい。Googleストアで「rdp」と検索すればRDPクライアントソフトが色々出てくるけど、ダウンロード数の多さと評価の高さでMicrosoftのやつでいいんじゃないですか?
リモートデスクトップ:RaspberryPiのVNC有効化して、VNC Viewerで接続
xrdp
を入れればいいだけなんだけど、一応別の方法として紹介。
RaspberryPiの設定からVNCをEnableにしておく。SSHの有効/無効のすぐ下にある。
後はこれをインストールして、接続先を追加する。設定項目としては「固定したRaspberryPiのIP」「接続先を識別するための名前(ユーザー名とは別)」「ユーザー名(初期設定のままならpiユーザー)」「ログインパスワード」を然るべき場所に入れる。
接続
お疲れ様でした。
追記:wpa_supplicant.conf
に記述するパスワードの暗号化
記事中に示した書き方だと、パスワードが平文のままなので、暗号化しておく。
$ wpa_passphrase "XXXXXXXX"
XXXXXXXX
はSSID名。ダブルクォーテーション必要。上のコマンドを打つと
# reading passphrase from stdin
と表示されるので、そのままWifiに接続するためのパスワードを打つ。stdin
は標準入力のことで、ここではコンソール画面のことを指す。
パスワードを打つと
network={ ssid="XXXXXXXX" #psk="xxxxxxxx" psk=(いかにも暗号化されたような文字列) }
と表示されるが、これは表示されるだけで設定まではしてくれないので、psk=(いかにも暗号化されたような文字列)
の部分を手動でwpa_supplicant.conf
にコピペする。
>>
の意味が分かる人は、root
ユーザーに昇格してから
# wpa_passphrase "testing" >> /etc/wpa_supplicant/wpa_supplicant.conf
と打てば、パスワードを入力したときに自動でwpa_supplicant.conf
に追記してくれるので、後は適当にwpa_supplicant.conf
を開いて中身を整形する。