🔐

Windows の OpenSSH SSH Server と ConnectBot で鍵認証接続する

2025/03/11に公開

はじめに

この記事は、WindowsサービスのOpenSSH SSH ServerをSSHサーバーとして、AndroidアプリのConnectBotをSSHクライアントとして用いる場合の、公開鍵認証の設定手順についての備忘録です。

環境

  • SSHサーバー側
    • OS: Windows 11 Home
  • SSHクライアント側
    • OS: Android 10 以降
    • ソフトウェア: ConnectBot

WindowsにOpenSSHを追加する

Windows 11では、オプション機能としてOpenSSH サーバーを追加できます。以下に手順を示します。既に追加されている場合は次に進んで構いません。

  1. 設定を開いて [システム] > [オプション機能] の順に進む
  2. [オプション機能を追加する] の [機能を表示] ボタンをクリックする
  3. 「OpenSSH サーバー」のチェックボックスをアクティブにし、 [次へ] ボタンをクリックする

追加できたら、念の為にWindowsを再起動しておきましょう。

ConnectBotで鍵を作成する

ConnectBotで鍵を作成します。Android端末にあらかじめConnectBotをインストールしておいてください。

  1. ConnectBotを起動し、右上のメニューから [公開鍵管理] に進む
  2. 右上アイコン [新しい公開鍵を追加] をタップする
  3. 任意の鍵の名前とタイプ、パスワードを入力する
  4. 最下 [生成] ボタンをタップする
  5. 公開鍵の一覧に鍵が追加される

サーバーに公開鍵を追加する

ConnectBotで作成した公開鍵をサーバー側に追加します。

  1. ConnectBotを起動し、右上のメニューから [公開鍵管理] に進む
  2. 作成した鍵を長押ししてメニューを表示させる
  3. [公開鍵をコピー] をタップする
  4. クリップボードに公開鍵がコピーされる
  5. どうにかして、Windowsでコピペできるようにする

次にWindows上で操作します。

  1. 先に用意した公開鍵を任意のファイルに書き込む
    • ここでは、Cドライブ直下にmykeyというファイルを作成することにします
    • メモ帳などでファイルを開き、公開鍵を貼り付け(入力し)て保存します
  2. 鍵を追加する
    • 管理者権限を有したPowerShellで、次を実行します
      get-Content c:\mykey | Add-Content $env:programdata\ssh\administrators_authorized_keys
      
      これによって、C:\ProgramData\ssh\administrators_authorized_keysに公開鍵を追加します
  3. ファイルadministrators_authorized_keysのアクセス権限の変更
    1. C:\ProgramData\ssh\administrators_authorized_keysのプロパティを開き、[セキュリティ] > [詳細設定] と進む
    2. [アクセス許可] の [継承の無効化] をクリックし継承を無効化する
    3. Authenticated Usersのアクセス許可エントリを削除する
    4. 変更を適用する
  4. SSHの認証方法を指定する
    • C:\ProgramData\ssh\sshd_config管理者権限を有したメモ帳などで開き、
      PasswordAuthentication no
      PubkeyAuthentication yes
      
      のように追記または書き換えて保存します
  5. SSHサーバーを(再)起動する
    • 「タスクマネージャー」や「サービス」あるいはPowerShellのコマンドのいずれかでサービスを(再)起動します

ConnectBotのホストを追加する

  1. ConnectBotを起動して右下 [+] ボタンからホストを追加する
  2. ユーザ名やホスト名を適切に入力する
  3. [公開鍵認証を使用] で、作成した鍵を選択する
  4. 保存する

おまけ: 規定のシェルを指定する

今回はPowerShell 7を規定のシェルにしてみます。
コンピューター\HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSHに次の文字列値を設定します:

  • 名前: DefaultShell
  • 値: C:\Program Files\PowerShell\7\pwsh.exe

参考

Discussion