この記事は最終更新日から1年以上が経過しています。
@iot
投稿日 2020/10/28
更新日 2020/10/28 ✏
ラズパイゼロにBluetooth経由でSSH接続
ラズパイ側に Bluetooth PAN (パーソナル・エリア・ネットワーク) の設定を行い、PC側からラズパイへBluetooth経由でssh接続を実現するためのメモです。
Bluetooth PAN 接続できるようにしておけば、WiFiやモバイルネットワークが無い環境でラズパイに接続してちょっとした作業をしたいときに非常に助かります。
目次:
前提
- PC側OS: Ubuntu 16.04.6 LTS
- ラズパイ端末:Bluetooth搭載のラズパイゼロ (Raspberry Pi Zero WH)
- ラズパイOS:Raspbian Stretch Lite
- ラズパイのMACアドレス:
aa:bb:cc:dd:ee:ff
- Bluetooth PAN 上でラズパイに割り当てるプライベートIPアドレス:
172.20.1.1
ラズパイ側で Bluetooth PAN 設定
まずはラズパイにPAN設定を行います。 ラズパイにsshログイン後(※初回だけは既にsshログインできる環境で設定を行う必要があります!)、以下のコマンドを実行していきます:
# bluez-toolsのインストール:
pi@raspberrypi:~ $ sudo apt install bluez-tools
#
# 以下のnetwork設定ファイルを新規作成
# - /etc/systemd/network/pan0.netdev
# - /etc/systemd/network/pan0.network
#
pi@raspberrypi:~ $ sudo nano /etc/systemd/network/pan0.netdev
[NetDev]
Name=pan0
Kind=bridge
pi@raspberrypi:~ $ sudo nano /etc/systemd/network/pan0.network
[Match]
Name=pan0
[Network]
Address=172.20.1.1/24 # 任意のプライベートIPアドレス
DHCPServer=yes
#
# 以下のサービス設定ファイルを新規作成
# - /etc/systemd/system/bt-agent.service
# - /etc/systemd/system/bt-network.service
#
pi@raspberrypi:~ $ sudo nano /etc/systemd/system/bt-agent.service
[Unit]
Description=Bluetooth Auth Agent
[Service]
ExecStart=/usr/bin/bt-agent -c NoInputNoOutput
Type=simple
[Install]
WantedBy=multi-user.target
pi@raspberrypi:~ $ sudo nano /etc/systemd/system/bt-network.service
[Unit]
Description=Bluetooth NEP PAN
After=pan0.network
[Service]
ExecStart=/usr/bin/bt-network -s nap pan0
Type=simple
[Install]
WantedBy=multi-user.target
#
# 作成したサービスを有効化&起動
#
pi@raspberrypi:~ $ sudo systemctl enable systemd-networkd
pi@raspberrypi:~ $ sudo systemctl enable bt-agent
pi@raspberrypi:~ $ sudo systemctl enable bt-network
pi@raspberrypi:~ $ sudo systemctl start systemd-networkd
pi@raspberrypi:~ $ sudo systemctl start bt-agent
pi@raspberrypi:~ $ sudo systemctl start bt-network
# 仮想IFの pan0 が生えたことを確認:
pi@raspberrypi:~ $ ifconfig
...
pan0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.20.1.1 netmask 255.255.255.0 broadcast 172.20.1.255
ether d2:d3:88:e3:63:1b txqueuelen 1000 (イーサネット)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# Bluetoothの電波をPC側に発見してもらえるようにする:
pi@raspberrypi:~ $ sudo bluetoothctl
[bluetooth]# discoverable on
PC側からラズパイにBluetooth経由でSSH接続
PC側でラズパイとのペアリングを行った上で(参考:bluetoothctlを使ったペアリング方法)、NetworkManagerのnmcliを使ってネットワークへ接続します:
# PC側での操作
# ラズパイ(MACアドレス aa:bb:cc:dd:ee:ff)の Bluetooth PAN に接続
$ nmcli dev connect aa:bb:cc:dd:ee:ff
# 接続確認:
$ nmcli dev status
デバイス タイプ 状態 接続
aa:bb:cc:dd:ee:ff bt 接続済み raspberrypi # <== 接続成功!
Bluetooth経由でのPAN接続に成功しました!
TIP:ペアリング方法やネットワーク接続方法は他にもありますが、上記のようにbluetoothctl
やnmcli
を使うのが個人的には一番簡単かと思います。
PANに接続されたのでプライベートIPアドレス(172.20.1.1)を指定してラズパイにssh接続できます:
$ ssh -i .ssh/rpi/id_rsa pi@172.20.1.1
pi@raspberrypi:~ $ ## SSH接続成功!
以上です。