Termuxを起動させるたびに手動でsshdを立ち上げていたのですが、面倒になってきたので自動実行させることにしました。
環境
サーバ機(携帯電話 Galaxy S24)
Android 14
ホストOS Termux
OpenSSH 9.9p2
クライアント機(Windows11 Home)
クライアントアプリ PowerShell
※サーバ機とクライアント機は同じWi-Fiに接続している必要があります
通常のSSH接続確認
Termux側で次のコマンドを入力し、ssh接続の準備を行います。
# Termux SSH接続準備
# sshサーバを起動
$ > sshd
# パスワードの設定(設定されていれば飛ばしてください)
$ > passwd
New password:[新しいパスワードを作成]
# ユーザ名の確認
$ > id
udi=10445(u0_a445) gid=10445(u0_a445) groups=10445…
# [u0_a445]がユーザ名
# サーバのIP確認
$ > ifconfig
:
inet 192.168.0.244 …
# [192.168.0.244]がサーバのIP
クライアント機から次のコマンドを入力し接続します。
今回はPowershellを使用しました。
# Windows PowerShell
PS C:\Users\username> ssh -p 8022 u0_a445@192.168.0.244
u0_a445@192.168.0.244's password: ********
Welcome to Termux
:
# 接続が成功
自動実行設定
現在の状態では、Termuxを起動するたびに
sshd
と入力してサービスを起動させる必要がありますので、次のコマンドを使ってこの作業を自動化させます。
# Termux起動後
# SSHがインストールされていることを確認
$ sshd -v
OpenSSH_9.9p2,OpenSSl
# .bashに起動コマンドを追加
$ > nano ~/.bashrc
sshd
# この行を追加
# Ctrl + s, Ctrl + x を忘れずに

後はTermuxを再起動させて、sshdが自動実行されているか確認します。
再起動後、何も入力していない状態でクライアント機から次のコマンドを入力し、SSH接続ができれば自動起動しています。
確認
Termuxのコンソール上に
exit
と入力し、終了させたあと再起動します。
このままサーバ機には何も入力しないで、クライアント機のPoewerShellから、同じコマンドでSSH接続ができれば成功しています。
# Windows Powershell を再起動後
Copyright (C) Microsoft Corporation. All rights reserved.
PS C:\Users\username> ssh -p 8022 u0_a445@192.168.0.244
u0_a445@192.168.0.244's password: ******
Welcome to Termux
:
# 接続が成功
注意点
今まではsshdコマンドで明示的にSSHサーバを起動させていましたが、今後はTermuxを起動するだけで自動的にSSHサーバが起動することになります。
Termuxを起動したままにする = SSHサーバが常にオープンしている
ということを忘れないようにしなければならないですね。
バッテリー消費とか気にしないといけないのでしょうか?
スマートフォン上にSSHサーバが起動しているとは誰も思わないですよね。