なつねこメモ

主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ 書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。

SSH で Windows マシンにアクセスしたい

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 が使えればこんな苦労はなかったのに......)。