🔐
Windows の OpenSSH SSH Server と ConnectBot で鍵認証接続する
はじめに
この記事は、WindowsサービスのOpenSSH SSH ServerをSSHサーバーとして、AndroidアプリのConnectBotをSSHクライアントとして用いる場合の、公開鍵認証の設定手順についての備忘録です。
環境
- SSHサーバー側
- OS: Windows 11 Home
- SSHクライアント側
- OS: Android 10 以降
- ソフトウェア: ConnectBot
WindowsにOpenSSHを追加する
Windows 11では、オプション機能としてOpenSSH サーバーを追加できます。以下に手順を示します。既に追加されている場合は次に進んで構いません。
- 設定を開いて [システム] > [オプション機能] の順に進む
- [オプション機能を追加する] の [機能を表示] ボタンをクリックする
- 「OpenSSH サーバー」のチェックボックスをアクティブにし、 [次へ] ボタンをクリックする
追加できたら、念の為にWindowsを再起動しておきましょう。
ConnectBotで鍵を作成する
ConnectBotで鍵を作成します。Android端末にあらかじめConnectBotをインストールしておいてください。
- ConnectBotを起動し、右上のメニューから [公開鍵管理] に進む
- 右上アイコン [新しい公開鍵を追加] をタップする
- 任意の鍵の名前とタイプ、パスワードを入力する
- 最下 [生成] ボタンをタップする
- 公開鍵の一覧に鍵が追加される
サーバーに公開鍵を追加する
ConnectBotで作成した公開鍵をサーバー側に追加します。
- ConnectBotを起動し、右上のメニューから [公開鍵管理] に進む
- 作成した鍵を長押ししてメニューを表示させる
- [公開鍵をコピー] をタップする
- クリップボードに公開鍵がコピーされる
- どうにかして、Windowsでコピペできるようにする
次にWindows上で操作します。
- 先に用意した公開鍵を任意のファイルに書き込む
- ここでは、Cドライブ直下に
mykey
というファイルを作成することにします - メモ帳などでファイルを開き、公開鍵を貼り付け(入力し)て保存します
- ここでは、Cドライブ直下に
- 鍵を追加する
-
管理者権限を有したPowerShellで、次を実行しますこれによって、
get-Content c:\mykey | Add-Content $env:programdata\ssh\administrators_authorized_keys
C:\ProgramData\ssh\administrators_authorized_keys
に公開鍵を追加します
-
管理者権限を有したPowerShellで、次を実行します
- ファイル
administrators_authorized_keys
のアクセス権限の変更-
C:\ProgramData\ssh\administrators_authorized_keys
のプロパティを開き、[セキュリティ] > [詳細設定] と進む - [アクセス許可] の [継承の無効化] をクリックし継承を無効化する
- Authenticated Usersのアクセス許可エントリを削除する
- 変更を適用する
-
- SSHの認証方法を指定する
-
C:\ProgramData\ssh\sshd_config
を管理者権限を有したメモ帳などで開き、のように追記または書き換えて保存しますPasswordAuthentication no PubkeyAuthentication yes
-
- SSHサーバーを(再)起動する
- 「タスクマネージャー」や「サービス」あるいはPowerShellのコマンドのいずれかでサービスを(再)起動します
ConnectBotのホストを追加する
- ConnectBotを起動して右下 [+] ボタンからホストを追加する
- ユーザ名やホスト名を適切に入力する
- [公開鍵認証を使用] で、作成した鍵を選択する
- 保存する
おまけ: 規定のシェルを指定する
今回はPowerShell 7を規定のシェルにしてみます。
コンピューター\HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH
に次の文字列値を設定します:
- 名前:
DefaultShell
- 値:
C:\Program Files\PowerShell\7\pwsh.exe
Discussion