Windows SSH接続完全ガイド|標準OpenSSHからPuTTYまで設定と接続方法を徹底解説

Windows

「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接続(クライアント):

  1. 🖥️ 標準OpenSSHが最も簡単(Windows 10/11)
  2. 🎨 PuTTYはGUIで管理しやすい
  3. 💻 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環境を構築できます。 この記事の設定を活用して、セキュアで効率的なリモート接続を実現しましょう!

コメント

タイトルとURLをコピーしました