autossh と systemd でリモートデスクトップ用のトンネルを永続化
公開:
更新:
外出先から家の PC を触りたいことがそこそこの頻度であり、autossh と systemd を使って SSH トンネルを永続化しました。インターネットに公開されている VPS に対して、自宅 LAN 内のラズパイから Windows PC へリモートデスクトップ用のトンネルを引き込み、外から PC を使えるようにしました。
環境
- Raspberry Pi 3 Model B+
- Raspberry Pi OS
autossh をインストール
apt
でインストールしました。
sudo apt update
sudo apt install autossh
手動実行で接続
SSH の初回接続では接続先の確認プロンプトが出てしまい自動化の妨げになるので、先に一回繋いでおきます1。
autossh <HOSTNAME>
サービスユニットを書く
CentOS と違い、autossh インストール時に Debian 系ディストリビューションではユニットファイルはついてこないようなので、自前で書く必要があります。
sudo nano /etc/systemd/system/autossh.service
通常のログインユーザー pi
で実行し、VPS サーバーの 8089 番ポートで待ち受け2て、自宅 LAN 内の Windows リモートデスクトップ 10.10.10.10:3389
へ転送しています。
autossh の終了シグナルは SIGQUIT
であるようなので、そのように設定します。
[Unit]
Description=AutoSSH for remote connect home
After=network.target
[Service]
User=pi
Group=pi
Type=simple
ExecStart=/usr/bin/autossh <HOSTNAME> -N -R 0.0.0.0:8089:10.10.10.10:3389
KillSignal=SIGQUIT
Restart=always
RestartSec=10s
SuccessExitStatus=SIGQUIT
[Install]
WantedBy=multi-user.target
サービスを有効化します。
sudo systemctl daemon-reload
sudo systemctl start autossh
sudo systemctl enable autossh
これでいつでも自宅 PC へアクセスできるようになりました。