これはなに

Windows 11に対して、スマートフォン(iPhone)からSSH接続できるようにしたときの設定したことのメモ。
環境

サーバーの環境は以下のとおり。WindowsはProでなくても問題ないはず。
- Windows 11 Pro 24H2 (26100.4652)
- PowerShell 5.1.26100.4652
クライアントの環境は以下のとおり。AndroidでもSSHクライアントアプリを使えば同様の手順で接続できる。
- iPhone 13 Pro
- iOS 18.5
- TermiusのiOSアプリ 6.2.0
ちなみにTermiusはAndroid版もある。
設定手順

1. SSHサーバーのインストール

WindowsマシンにSSHサーバーをインストールする。 Windows 11では、OpenSSH Serverを標準でインストールできる。
まず、PowerShellを管理者権限で開き、PowerShellのバージョンを確認する。
$PSVersionTable.PSVersion実行すると以下のような出力が得られる。
> $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
5 1 26100 4652Majorバージョンが5以上、Minorバージョンが1以上であればOK。
次に、管理者権限を確認する。
(New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)実行すると以下のような出力が得られる。
> (New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
TrueTrueが返ってくればOK。Falseの場合は、PowerShellを管理者権限で実行していないので、管理者権限で実行しなおす。
続いて、OpenSSH Serverがインストールされているか確認する。
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Server*'実行すると以下のような出力が得られる。
> Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Server*'
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresentInstalledと表示されるならインストールされている。NotPresentと表示されるならインストールされていない。
インストールされていない場合は、以下のコマンドでインストールする。
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0下図のようなダイアログが出るので、完了まで待機する。

インストールが完了すると以下の出力が得られる。
> Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Path :
Online : True
RestartNeeded : False2. SSHサーバーの起動

OpenSSH Serverをインストールしたら、次にSSHサーバーを起動する。
まず、SSHサーバーのサービスがインストールされているか確認する。
Get-Service -Name sshd実行すると以下のような出力が得られる。
> Get-Service -Name sshd
Status Name DisplayName
------ ---- -----------
Stopped sshd OpenSSH SSH ServerStoppedと表示されているので、SSHサーバーは停止している。
停止している場合は、以下のコマンドでSSHサーバーを起動する。
Start-Service sshd実行しても何もログが表示されないが、サービスは起動している。もう一度、サービスの状態を確認する。
Get-Service -Name sshd以下のように、状態がRunningに変わっていればOK。
> Get-Service -Name sshd
Status Name DisplayName
------ ---- -----------
Running sshd OpenSSH SSH Server3. SSHサーバーの自動起動設定

今の状態では、SSHサーバーは手動で起動しなければならない。これを、OS起動時に自動で起動するように設定する。 現在の起動の設定は以下のコマンドで確認できる。
(Get-Service -Name "sshd").StartType実行すると以下のような出力が得られる。
> (Get-Service -Name "sshd").StartType
ManualManualと表示されている場合、手動起動の設定になっている。
これをOS起動時に自動で起動するように設定する。以下のコマンドを実行する。
Set-Service -Name sshd -StartupType 'Automatic'実行しても何もログが表示されないが、設定は変更されている。もう一度設定を確認する。
(Get-Service -Name "sshd").StartType実行すると以下のような出力が得られるはずである。
> (Get-Service -Name "sshd").StartType
AutomaticこのようにAutomaticと表示されていれば、OS起動時に自動で起動するようになった。
4. ファイアウォールの設定

SSHサーバーはデフォルトで22番ポートを使用する。ファイアウォールで22番ポートが開いているか確認する。
Get-NetTCPConnection -LocalPort 22実行すると以下のような出力が得られる。
> Get-NetTCPConnection -LocalPort 22
LocalAddress LocalPort RemoteAddress RemotePort State AppliedSetting OwningPro
cess
------------ --------- ------------- ---------- ----- -------------- ---------
:: 22 :: 0 Listen 40100
0.0.0.0 22 0.0.0.0 0 Listen 40100Listenと表示されれば、22番ポートは開いている。
5. SSH鍵の生成と登録

スマートフォンで、SSH接続するためのSSH鍵を生成する。 筆者はTermiusのiOSアプリを使用している。鍵を生成してSSH接続するだけなら無料で使える。 鍵を生成できるなら任意のSSHクライアントで問題ない。
鍵を生成したら、公開鍵をWindowsマシンに登録する。公開鍵はメールで送るなどの方法1でWindows側に転送する。
Windowsマシンに渡した公開鍵をC:\Users\<ユーザー名>\.ssh\authorized_keysに登録する。authorized_keysファイルがない場合は新規に作成する。
例を以下に示す。
ssh-ed25519 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX6. SSH接続の確認

ここまでの設定が完了したら、SSH接続を確認する。 スマートフォンのSSHクライアントアプリから、先ほど登録した公開鍵を使用して接続する。
接続先のホスト名はWindowsマシンのIPアドレス、ポートは22を指定する。ユーザー名とパスワードは、Windowsのユーザー名とパスワードを指定する。 初回のみフィンガープリント確認が求められるので、確認して接続する。
参考文献・URL

筆者はGmailの下書きに保存して渡している。 ↩︎
