Windows 標準の OpenSSH サーバーで建てた SSH サーバーに対してアクセスしようとしたらいろいろ詰まったのでメモしておきます。
Windows 標準の OpenSSH サーバー自体は、設定から可能なのでそれをやった後の話。
前提条件:
- Windows 11 もしくはそれと同等の OS に対して接続する
まずは、 sshd_config
をコピーして編集する。
$ cp C:\Windows\System32\OpenSSH\sshd_config_default "$Env:ProgramData\ssh\sshd_config" $ notepad "$Env:ProgramData\ssh\sshd_config"
以下の項目を追加して:
PubkeyAuthentication yes PasswordAuthentication no
一番最後にあるであろう以下の項目をコメントアウトする:
# Match Group administrators # AuthorizedKeyFile __PROGRAMDATA__/ssh/administrators_authorized_keys
これは Administrator グループに入っているユーザーの場合は上記ファイルを見るようにする、っていう設定だけどややこしいので無効にしておいた方が良いと思う。
その後、保存するが文字コードは ANSI にしておく。デフォルトだと UTF-8 か UTF-16 になってしまって、苦しみます。
保存できたら OpenSSH サーバーを起動しておきます。
$ Start-Service sshd
次に authorized_keys
を設置します。
これは鍵を使い分けないのなら GitHub に登録している公開鍵を引っぱってくるのが一番楽。
$ curl https://github.com/mika-f.keys > ~/.ssh/authorized_keys
保存したら権限設定をしておく。ついでにちゃんと文字コードが ANSI になっているかも確認しておく。
デフォルトだと PowerShell のリダイレクトでファイルを作成すると、 UTF-16 になるので、絶対に確認しておく (苦しみます)。
$ icacls "$Env:UserProfile\.ssh\authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
これで GitHub に繋いでいる鍵でアクセスできるようになります。お疲れさまでした。
$ ssh shiroko Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. 新機能と改善のために最新の PowerShell をインストールしてください!https://aka.ms/PSWindows PS C:\users\cat>
めんどうなのは、 PowerShell のリダイレクト時のデフォルト文字コードと、メモ帳でいじったときの文字コードで、それ以外は基本的に Linux マシンと同じ。
文字コード周りほんといろいろ罠が多いですね (Tailscale SSH が使えればこんな苦労はなかったのに......)。