「WindowsからLinuxサーバーにSSH接続したい」 「Windows 11にSSHでリモート接続できるの?」 「PuTTYは必要?それとも標準機能で十分?」
こんな疑問を持っていませんか?
実は、Windows 10以降はOpenSSHが標準搭載されており、追加ソフトなしでSSH接続ができるんです。 しかも、WindowsをSSHサーバーにすることも可能!
この記事では、WindowsからのSSH接続、WindowsへのSSH接続、両方の設定方法を実例付きで徹底解説します。 もうSSH接続で悩むことはありません!
WindowsからSSH接続する(クライアント)

方法1:Windows標準のOpenSSH(推奨)
Windows 10(1809以降)とWindows 11にはOpenSSHクライアントが標準搭載されています!
確認方法:
# コマンドプロンプトまたはPowerShellで
ssh -V
# 結果例
OpenSSH_for_Windows_8.6p1, LibreSSL 3.4.3
基本的な接続方法:
# 基本形式
ssh ユーザー名@ホスト名
# 例:IPアドレスで接続
ssh user@192.168.1.100
# ポート番号を指定
ssh -p 2222 user@example.com
# 秘密鍵を指定
ssh -i C:\Users\username\.ssh\id_rsa user@server.com
OpenSSHクライアントのインストール(もし入っていない場合)
Windows 11/10での有効化:
方法1:設定アプリから
1. 設定 → アプリ → オプション機能
2. 「オプション機能を追加」をクリック
3. 「OpenSSH クライアント」を検索
4. 「インストール」をクリック
方法2:PowerShellから(管理者として実行)
# インストール状況を確認
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
# OpenSSHクライアントをインストール
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
# 確認
ssh -V
SSH設定ファイルの作成
設定ファイルの場所:
C:\Users\%USERNAME%\.ssh\config
設定例(config):
# よく使うサーバーの設定
Host myserver
HostName 192.168.1.100
User admin
Port 22
IdentityFile ~/.ssh/id_rsa
Host webserver
HostName web.example.com
User deploy
Port 2222
ForwardAgent yes
# すべての接続に適用
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
使い方:
# 設定した名前で簡単接続
ssh myserver
ssh webserver
方法2:PuTTYを使う(GUI派向け)
PuTTYのインストール
ダウンロード:
1. 公式サイト:https://www.putty.org/
2. Windows用インストーラーをダウンロード
3. インストール(デフォルト設定でOK)
PuTTYでの接続設定
基本接続:
1. PuTTYを起動
2. Session カテゴリで設定:
- Host Name: サーバーのIPアドレスまたはホスト名
- Port: 22(またはカスタムポート)
- Connection type: SSH
3. 「Open」をクリック
4. 初回接続時はホストキーの確認 → 「Accept」
5. ユーザー名とパスワードを入力
セッションの保存:
1. 設定を入力後、Session カテゴリに戻る
2. Saved Sessions に名前を入力
3. 「Save」をクリック
4. 次回から選択して「Load」→「Open」で接続
PuTTYでの鍵認証設定
PuTTYgenで鍵を作成:
1. PuTTYgenを起動
2. 「Generate」をクリック
3. マウスをランダムに動かす
4. パスフレーズを設定(推奨)
5. 「Save public key」で公開鍵を保存
6. 「Save private key」で秘密鍵を保存(.ppk形式)
OpenSSH形式の鍵を変換:
1. PuTTYgenを起動
2. 「Load」でOpenSSH形式の秘密鍵を選択
3. 「Save private key」でPuTTY形式(.ppk)に保存
PuTTYで鍵認証:
1. PuTTYを起動
2. Connection → SSH → Auth → Credentials
3. 「Private key file」で.ppkファイルを選択
4. Sessionに戻って接続
方法3:Windows Terminal(モダンな選択)
Windows Terminalの設定
インストール:
Microsoft Storeから「Windows Terminal」をインストール
または
winget install Microsoft.WindowsTerminal
SSH接続用プロファイルの追加:
設定(Ctrl + ,)→ JSONファイルを開く:
{
"profiles": {
"list": [
{
"guid": "{新しいGUID}",
"name": "SSH - MyServer",
"commandline": "ssh user@192.168.1.100",
"icon": "🖥️",
"colorScheme": "Campbell"
},
{
"guid": "{別のGUID}",
"name": "SSH - WebServer",
"commandline": "ssh -i C:/Users/user/.ssh/id_rsa deploy@web.example.com",
"startingDirectory": "C:/projects"
}
]
}
}
WindowsにSSH接続する(サーバー設定)

OpenSSHサーバーの有効化
Windows 11/10 Pro/Enterprise:
方法1:設定アプリから
1. 設定 → アプリ → オプション機能
2. 「オプション機能を追加」
3. 「OpenSSH サーバー」を検索してインストール
方法2:PowerShell(管理者)
# OpenSSHサーバーをインストール
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
# サービスを開始
Start-Service sshd
# 自動起動を設定
Set-Service -Name sshd -StartupType 'Automatic'
# ファイアウォールルールを確認
Get-NetFirewallRule -Name *ssh*
# ファイアウォールルールを追加(必要な場合)
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
SSHサーバーの設定
設定ファイルの場所:
C:\ProgramData\ssh\sshd_config
重要な設定項目(sshd_config):
# ポート番号(セキュリティのため変更推奨)
Port 2222
# rootログインを無効化
PermitRootLogin no
# パスワード認証(鍵認証推奨)
PasswordAuthentication yes
PubkeyAuthentication yes
# 特定ユーザーのみ許可
AllowUsers user1 user2
# 特定グループのみ許可
AllowGroups administrators
# X11転送
X11Forwarding no
設定変更後の再起動:
Restart-Service sshd
SSH鍵の管理
WindowsでSSH鍵を生成
PowerShell/コマンドプロンプト:
# RSA 4096ビット(推奨)
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# Ed25519(より安全で高速)
ssh-keygen -t ed25519 -C "your_email@example.com"
# 保存場所(デフォルト)
C:\Users\%USERNAME%\.ssh\id_rsa (秘密鍵)
C:\Users\%USERNAME%\.ssh\id_rsa.pub (公開鍵)
公開鍵をサーバーに登録
方法1:ssh-copy-id(Windows 10/11)
# PowerShellで実行
type $env:USERPROFILE\.ssh\id_rsa.pub | ssh user@server "cat >> ~/.ssh/authorized_keys"
方法2:手動でコピー
# 公開鍵の内容を表示
type C:\Users\%USERNAME%\.ssh\id_rsa.pub
# サーバー側で
mkdir ~/.ssh
chmod 700 ~/.ssh
echo "公開鍵の内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
SSH-Agentの設定
Windows版SSH-Agent:
# サービスを開始(管理者権限)
Get-Service ssh-agent | Set-Service -StartupType Automatic
Start-Service ssh-agent
# 鍵を追加
ssh-add C:\Users\%USERNAME%\.ssh\id_rsa
# 登録された鍵を確認
ssh-add -l
セキュリティ強化
Windowsファイアウォールの設定
# 特定IPからのみSSH接続を許可
New-NetFirewallRule -Name 'SSH-Restrict' -DisplayName 'SSH Restricted' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22 -RemoteAddress 192.168.1.0/24
# 既存ルールを確認
Get-NetFirewallRule -DisplayName *SSH*
# ルールを削除
Remove-NetFirewallRule -Name 'SSH-Restrict'
fail2ban相当の設定(Windows)
PowerShellスクリプトで実装:
# SSHログイン失敗を監視
$LogPath = "C:\ProgramData\ssh\logs\sshd.log"
$FailedAttempts = @{}
$MaxAttempts = 3
$BanDuration = 3600 # 秒
Get-Content $LogPath -Wait | ForEach-Object {
if ($_ -match "Failed password for .* from (\d+\.\d+\.\d+\.\d+)") {
$IP = $Matches[1]
$FailedAttempts[$IP]++
if ($FailedAttempts[$IP] -ge $MaxAttempts) {
# IPをブロック
New-NetFirewallRule -Name "BlockSSH_$IP" -DisplayName "Block SSH $IP" -Direction Inbound -Protocol TCP -LocalPort 22 -RemoteAddress $IP -Action Block
Write-Host "Blocked IP: $IP"
}
}
}
トラブルシューティング
接続できない時のチェックリスト
# 1. SSHサービスの状態確認
Get-Service sshd
# 2. ポートが開いているか確認
Test-NetConnection -ComputerName localhost -Port 22
# 3. ファイアウォールの確認
Get-NetFirewallRule | Where-Object {$_.DisplayName -like "*SSH*"}
# 4. SSHDのログを確認
Get-Content C:\ProgramData\ssh\logs\sshd.log -Tail 50
# 5. イベントログを確認
Get-EventLog -LogName Application -Source sshd -Newest 20
よくあるエラーと解決法
「Permission denied (publickey)」
# 権限を確認(Windows側)
icacls C:\Users\%USERNAME%\.ssh\id_rsa
# Inheritanceを無効にして、自分だけに権限を設定
# PowerShellで権限修正
$path = "$env:USERPROFILE\.ssh\id_rsa"
icacls $path /inheritance:r /grant:r "$env:USERNAME:(R)"
「Connection refused」
# サービスが起動しているか
Start-Service sshd
# ポートが正しいか
netstat -an | findstr :22
「Host key verification failed」
# known_hostsから該当ホストを削除
ssh-keygen -R hostname
WSLを使った方法

WSL2でLinux環境を利用
# WSL2をインストール
wsl --install
# Ubuntu等をインストール後
wsl
# WSL内でSSH接続
ssh user@server.com
メリット:
- 完全なLinux環境
- bashスクリプトがそのまま使える
- Linux用ツールが使える
よくある質問(FAQ)
Q1:PuTTYとOpenSSHどちらを使うべき?
A:用途によります
- OpenSSH:コマンドライン派、スクリプト化したい
- PuTTY:GUI派、セッション管理を重視
- 両方:状況に応じて使い分け
Q2:Windowsサーバーに鍵認証で接続できない
A:administrators_authorized_keysを確認
管理者の場合:
C:\ProgramData\ssh\administrators_authorized_keys
一般ユーザーの場合:
C:\Users\username\.ssh\authorized_keys
Q3:パスワード入力を省略したい
A:鍵認証を設定するか、SSH-Agentを使用
# SSH-Agentに鍵を登録
ssh-add C:\Users\%USERNAME%\.ssh\id_rsa
Q4:複数のGitHubアカウントを使い分けたい
A:~/.ssh/configで設定
Host github.com-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_personal
Host github.com-work
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_work
まとめ:WindowsでのSSH完全マスター
WindowsでのSSH接続について、重要なポイントをまとめます:
WindowsからSSH接続(クライアント):
- 🖥️ 標準OpenSSHが最も簡単(Windows 10/11)
- 🎨 PuTTYはGUIで管理しやすい
- 💻 Windows Terminalでモダンな環境
WindowsへSSH接続(サーバー):
# 簡単3ステップ
Add-WindowsCapability -Online -Name OpenSSH.Server
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
セキュリティ対策:
- 鍵認証を使用
- ポート番号を変更
- ファイアウォールで制限
- 定期的なログ確認
便利な設定:
- ~/.ssh/configで接続情報を管理
- SSH-Agentで鍵を管理
- Windows Terminalでプロファイル化
WindowsでもLinuxと同様に快適なSSH環境を構築できます。 この記事の設定を活用して、セキュアで効率的なリモート接続を実現しましょう!
コメント