WindowsでSSHコマンド完全マスター!標準機能から便利ツールまで接続方法のすべて

Windows

「WindowsでSSH使うにはPuTTY必要でしょ?」 「コマンドプロンプトでsshって打ったらエラーが…」 「PowerShellとコマンドプロンプト、どっち使えばいいの?」

実は、Windows 10以降はSSHクライアントが標準搭載されています!

もうPuTTYをダウンロードする必要はありません。 (もちろん、PuTTYも便利ですけどね)

この記事を読めば、 WindowsでLinuxサーバーにスマートに接続できるようになります!


スポンサーリンク

【最速】Windows標準SSHを今すぐ使う方法

方法1:PowerShellで接続(推奨)

最も簡単な方法:

  1. PowerShellを起動
    • Windowsキー + X → 「Windows PowerShell」
    • または検索バーで「PowerShell」
  2. SSHコマンドを実行 ssh ユーザー名@サーバーアドレス 例: ssh admin@192.168.1.100 ssh root@example.com ssh -p 2222 user@server.com
  3. 初回接続時の確認 The authenticity of host 'example.com' can't be established. Are you sure you want to continue connecting (yes/no)?yes と入力

これだけ!簡単でしょ?

方法2:コマンドプロンプトで接続

従来のcmdでも使える:

  1. コマンドプロンプトを起動
    • Windowsキー + R → 「cmd」
    • または検索バーで「cmd」
  2. 同じくSSHコマンド ssh user@hostname

方法3:Windows Terminal(最新・最強)

Microsoft Store からインストール:

  1. Windows Terminalをインストール
    • Microsoft Store で「Windows Terminal」検索
    • 無料でインストール
  2. 複数タブで管理
    • Ctrl + Shift + T:新規タブ
    • 複数サーバーを同時管理

Windows Terminalのメリット:

  • タブ機能
  • 画面分割
  • テーマカスタマイズ
  • フォント変更可能

WindowsでSSHが使えない場合の対処法

OpenSSHクライアントの有効化

Windows 10/11で有効化する手順:

  1. 設定を開く
    • Windowsキー + I
    • または歯車アイコン
  2. オプション機能を開く
    • アプリ → オプション機能
    • または「Windowsの機能の有効化」を検索
  3. OpenSSHクライアントを追加 オプション機能の追加 → 「OpenSSH クライアント」を探す → インストール
  4. 確認コマンド ssh -V バージョンが表示されればOK!

古いWindowsの場合(Windows 7/8)

選択肢:

  1. PuTTYをインストール(後述)
  2. Git Bashをインストール
  3. WSL(Windows Subsystem for Linux)を使用

SSHコマンドの基本と応用

基本的な接続コマンド

標準的な接続:

# 基本形
ssh username@hostname

# ポート指定
ssh -p 2222 username@hostname

# IPv6アドレス
ssh username@[2001:db8::1]

# 詳細表示(デバッグ)
ssh -v username@hostname

よく使うオプション

オプション説明使用例
-pポート番号指定ssh -p 2222 user@host
-i秘密鍵ファイル指定ssh -i ~/.ssh/id_rsa user@host
-Lローカルフォワードssh -L 8080:localhost:80 user@host
-Rリモートフォワードssh -R 9090:localhost:3000 user@host
-Nコマンド実行なしssh -N -L 3306:localhost:3306 user@host
-XX11転送(GUI)ssh -X user@host
-v詳細表示ssh -v user@host

便利な使い方

コマンド実行して切断:

ssh user@host "ls -la"
ssh user@host "df -h"
ssh user@host "sudo systemctl restart nginx"

ファイル転送(SCP):

# ファイルをアップロード
scp file.txt user@host:/home/user/

# ファイルをダウンロード
scp user@host:/var/log/app.log ./

# ディレクトリごと転送
scp -r folder/ user@host:/home/user/

複数ホスト経由(踏み台):

# ProxyJump使用(OpenSSH 7.3以降)
ssh -J bastion@jump.server user@target.server

# 古い方法
ssh -o ProxyCommand="ssh bastion@jump.server -W %h:%p" user@target.server

SSH鍵認証の設定(パスワード不要)

Windows で SSH鍵を生成

PowerShellで実行:

# 鍵ペアの生成(推奨:Ed25519)
ssh-keygen -t ed25519 -C "your_email@example.com"

# RSA鍵(互換性重視)
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

保存場所(デフォルト):

C:\Users\ユーザー名\.ssh\id_ed25519      # 秘密鍵
C:\Users\ユーザー名\.ssh\id_ed25519.pub  # 公開鍵

公開鍵をサーバーに登録

方法1:ssh-copy-id(Windows 10 以降)

# 公開鍵を自動コピー
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh user@host "cat >> ~/.ssh/authorized_keys"

方法2:手動コピー

  1. 公開鍵の内容をコピー cat ~/.ssh/id_ed25519.pub
  2. サーバー側で登録 mkdir -p ~/.ssh echo "公開鍵の内容" >> ~/.ssh/authorized_keys chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys

SSH設定ファイル(config)の活用

設定ファイルの場所:

C:\Users\ユーザー名\.ssh\config

設定例:

# 本番サーバー
Host production
    HostName prod.example.com
    User admin
    Port 22
    IdentityFile ~/.ssh/prod_key

# 開発サーバー
Host dev
    HostName 192.168.1.100
    User developer
    Port 2222
    IdentityFile ~/.ssh/dev_key

# 踏み台経由
Host internal
    HostName 10.0.0.50
    User root
    ProxyJump bastion
    
Host bastion
    HostName bastion.example.com
    User jump-user

使い方:

# 長いコマンドが...
ssh -i ~/.ssh/prod_key -p 22 admin@prod.example.com

# これだけに!
ssh production

Windows専用SSHツール比較

PuTTY(定番)

特徴:

  • 無料
  • 日本語版あり
  • セッション保存機能
  • PuTTYgen(鍵生成)付属

インストール:

# Chocolateyを使う場合
choco install putty

# またはダウンロード
# https://www.putty.org/

MobaXterm(多機能)

特徴:

  • SSH + X11 + SFTP統合
  • タブ機能
  • マクロ機能
  • 無料版でも高機能

Tera Term(日本製)

特徴:

  • 日本語完全対応
  • マクロ言語搭載
  • シンプルで軽い

WinSCP(ファイル転送特化)

特徴:

  • GUIでファイル管理
  • PuTTYと連携
  • 同期機能

トラブルシューティング

問題1:「ssh」コマンドが認識されない

解決方法:

  1. OpenSSHクライアントをインストール
    • 設定 → オプション機能 → OpenSSHクライアント
  2. 環境変数PATHを確認 $env:Path -split ';' | Select-String ssh
  3. PowerShellを再起動

問題2:Permission denied (publickey)

原因と対策:

  1. 鍵の権限を確認 icacls $env:USERPROFILE\.ssh\id_ed25519
  2. 正しい鍵を指定 ssh -i C:\Users\ユーザー名\.ssh\correct_key user@host

問題3:接続がタイムアウトする

対策:

  1. ファイアウォール確認
    • Windows Defender ファイアウォール
    • 送信規則でSSH(22番ポート)許可
  2. Keep-Alive設定 # ~/.ssh/config に追加 Host * ServerAliveInterval 60 ServerAliveCountMax 3

問題4:文字化けする

解決方法:

# PowerShellの文字コード変更
chcp 65001

# または環境変数設定
$env:LANG = "ja_JP.UTF-8"

セキュリティ強化設定

Windows側のセキュリティ

SSH鍵の保護:

# 秘密鍵のアクセス権限を制限
icacls $env:USERPROFILE\.ssh\id_ed25519 /inheritance:r /grant:r "$env:USERNAME:(R)"

ssh-agentの使用:

# ssh-agentサービスを開始
Start-Service ssh-agent

# 自動起動設定
Set-Service -Name ssh-agent -StartupType Automatic

# 鍵を追加
ssh-add ~/.ssh/id_ed25519

推奨セキュリティ設定

~/.ssh/config に追加:

Host *
    # パスワード認証を無効化
    PasswordAuthentication no
    
    # 強い暗号化のみ使用
    Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
    
    # ハッシュアルゴリズム
    MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com
    
    # 鍵交換アルゴリズム
    KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org

便利なツールとスクリプト

PowerShellスクリプトで自動化

複数サーバー一括コマンド実行:

# servers.ps1
$servers = @("server1", "server2", "server3")
$command = "uptime"

foreach ($server in $servers) {
    Write-Host "=== $server ===" -ForegroundColor Green
    ssh $server $command
}

バッチファイルで定型作業

backup.bat:

@echo off
echo バックアップ開始...
scp user@server:/var/backup/db.sql C:\Backups\db_%date%.sql
echo バックアップ完了!
pause

まとめ:Windows SSH接続チートシート

基本接続:

ssh user@host

鍵生成:

ssh-keygen -t ed25519

ファイル転送:

scp file.txt user@host:/path/

設定ファイル活用:

~/.ssh/config で接続を簡略化

トラブル時:

ssh -v user@host  # 詳細表示でデバッグ

WindowsでもSSHは簡単に使えるようになりました!

標準機能を使いこなせば、 LinuxやMacに負けない快適な環境が作れます。

まずはPowerShellでSSH接続から始めてみましょう!


WindowsでのSSH活用法、他にもあったら教えてください。みんなで便利な使い方を共有しましょう!

コメント

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