WindowsにSSHで接続できるようにする
Windows に SSH で接続できるようにするようにする方法
https://ricapitolare.vercel.app/svg?url=https://learn.microsoft.com/ja-jp/windows-server/administration/openssh/openssh_install_firstuse?tabs=gui&pivots=windows-11#.svg https://learn.microsoft.com/ja-jp/windows-server/administration/openssh/openssh_install_firstuse?tabs=gui&pivots=windows-11
SSHのインストール
コマンドラインからはうまくインストールできなかった
code:powershell
# サーバーをインストール
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
なので、設定>システム>オプション機能 から OpenSSH サーバー をインストールした
SSHを再起動後も利用できるようにするにはサービスの自動起動を設定しておく必要がある
code:powershell
# 自動起動を設定
Set-Service -Name sshd -StartupType Automatic
ツールをインストール
code:powershell
# Scoopをセットアップ
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
VInvoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
# vim をとりあえずインストール
scoop install vim
パスワード認証を無効化
code:powershell
vim C:\ProgramData\ssh\sshd_config
PasswordAuthentication no
公開鍵を登録
管理者ユーザーの場合は以下のファイルに書き込む
鍵は ssh-keygenや、SSH鍵の格納に対応しているBitwarden などのパスワードマネージャーなどを使うと良い
code:powershell
vim C:\ProgramData\ssh\administrators_authorized_keys
PowerShell をデフォルトシェルに設定
code:powershell
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Users\<USERNAME>\AppData\Local\Microsoft\WindowsApps\pwsh.exe" -PropertyType String -Force
Windowsファイアウォールの調整
「セキュリティが強化された Windows Defender ファイアウォール」を起動して 受信の規則>OpenSSH SSH Server (sshd) を探す
ルールを開いて スコープタブを表示の後、リモートIPアドレス を「これらのIPアドレス」に指定してルールを追加すると指定したリモートアクセスが許可される
Tailscale を利用している場合は、標準で設定されている Tailscale-in のルールが適用されるので、LAN内の設定を厳密に行いたい場合に必要
SSHD再起動
一旦設定を反映するために再起動
code:powershell
Restart-Service sshd
接続テスト
ホストの名前解決はWindows標準のネットワーク機能が利用できるので同一ネットワーク内であればホスト名を指定するだけで良い。
code:powershell
ssh USERNAME@HOSTNAME