なんかwingetとか色々なルートがあってややこしいんだが、今回は「Get started with OpenSSH Server for Windows | Microsoft Learn」のルートに従う。GUIでやろうとしたけど、SSHクライアントはあるのにSSHサーバが見つからなかったのでCUI経由でいく。
環境
- サーバ: Windows 11 Home
- クライアント: macOS 14.8.3
SSHの鍵認証のやり方(秘密鍵・公開鍵・aurhorized_keysの関係)は知っているものとする。つまりLinux/Mac/UNIXでは普通に鍵認証でSSHやっている人向け。
手順
Powershellを管理者権限で起動する。
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'これでClientとServerでNotPresentになってるのがあったらインストールする。
# Install the OpenSSH Client
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
# Install the OpenSSH Server
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0けっこう時間かかった。なんでなん。
終わったら以下が表示される。
Path :
Online : True
RestartNeeded : Falseそしたら起動設定する。
# Start the sshd service
Start-Service sshd
# OPTIONAL but recommended:
Set-Service -Name sshd -StartupType 'Automatic'
# Confirm the Firewall rule is configured. It should be created automatically by setup. Run the following to verify
if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue)) {
Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."
New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
} else {
Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."
}最後のクソ長コマンドは要はポート22を開けている。
そんでここからが面倒なのだが、C:\ProgramData\sshにsshd_configがあるのだが、以下のような記述がある。
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keysなにこれ?と思ったけど管理者がログインしてきたときのaurhorized_keysの場所を指定しているらしい。個人ユーザなら普通は管理者であろう。権限的に面倒臭いので、コメントアウトして無視する。ただし書き換えるには管理者権限が必要であるため、メモ帳を管理者権限で開き、メモ帳からファイルを開いて、#をつけてコメントアウト。
そうしたら、C:\Users\ユーザ名\.sshにaurhorized_keysを作って、公開鍵を登録する。
そしたらMacから以下を実行。
ssh ユーザ名@IPアドレスログインできたらOK。
scpの試験。
touch test.txt
scp test.txt ユーザ名@IPアドレス:ホームディレクトリに出来たらOK。
所感
例によってエラい苦労した。まぁでもSSH環境構築の面倒くささはWindowsで嫌になるポイントの一つではあったので、いつのまにか公式でちゃんと対応していたのはよかったと思う。めんどくさかったけど。
コメント