Windows 10以降では、OpenSSHクライアントが標準搭載されており、TeraTermやRLoginといった外部クライアントを使わなくても、高度なSSH接続、ポートフォワーディング、そして踏み台(ジャンプホスト)経由の接続が可能です。本記事では、その設定方法と実践的な活用法を徹底解説します。
🔧 1. 基本的なSSH接続とオプション
WindowsのコマンドプロンプトやPowerShellで、以下のようにSSH接続が可能です。
ssh [ユーザー名]@[ホスト名またはIPアドレス] [-p ポート番号] [オプション]
例:
ssh user-dev@10.0.1.10
よく使うオプション:
| オプション | 説明 |
-p | ポート番号を指定(デフォルトは22) |
-i | 秘密鍵ファイルを指定(例:-i ~/.ssh/id_rsa) |
-v | 詳細な接続ログを表示(トラブルシュートに便利) |
-J | 踏み台サーバーを経由(ProxyJump) |
-L | ローカルポートフォワーディング |
-R | リモートポートフォワーディング |
-D | ダイナミックフォワーディング(SOCKSプロキシ) |
📁 2. SSH設定ファイル(config)の活用
毎回長いコマンドを入力する手間を省くため、configファイルに接続設定を記述します。Windowsでの場所は以下の通りです。
C:\Users\<ユーザー名>\.ssh\config
設定例:
Host webserver-test
HostName 10.0.1.20
User user-dev
Port 22
IdentityFile ~/.ssh/id_rsa
この設定により、接続は以下のように簡略化されます。
ssh webserver-test
複数のサーバーを管理する場合にも非常に便利です。
🧭 3. ポートフォワーディングの種類と活用例
SSHを使って、あるポートへの通信を別の場所に安全に転送する機能です。ファイアウォールで閉ざされた内部サービスへのアクセスや、通信の暗号化に利用されます。
① ローカルフォワーディング (-L)
ローカルのポートをリモートに転送します。
ssh -L 3307:localhost:3306 user-dev@db.alpha-corp.net
→ ローカルの localhost:3307 にアクセスすると、リモートサーバーのMySQL(3306)に接続されます。
② リモートフォワーディング (-R)
リモートのポートをローカルに転送します。
ssh -R 8080:localhost:3000 user-dev@web.alpha-corp.net
→ リモートサーバーの localhost:8080 にアクセスすると、ローカルPCのポート3000に接続されます。
③ ダイナミックフォワーディング (-D:SOCKSプロキシ)
SSHを使ってローカルにSOCKSプロキシを立てる機能です。Webブラウザなどがこのプロキシを経由して、踏み台サーバーを通じて外部にアクセスできます。
ssh -D 1080 user-dev@proxy.alpha-corp.net
使用方法:
ブラウザのネットワーク設定でSOCKS5プロキシを localhost:1080 に設定します。
用途:
公衆Wi-Fiなどで通信を暗号化したいとき、IP制限のあるサービスに踏み台経由でアクセスしたいときなど。
🛡️ 4. SSH踏み台(ジャンプホスト)経由の多段接続
直接アクセスできない内部サーバーに、踏み台サーバー(Jump Host)を経由して接続する方法です。セキュリティ上、非常に有効な構成です。
接続構成例(鍵認証):
ローカルPC (秘密鍵: id_rsa_jump)
→ 踏み台サーバー (IP: 203.0.113.5 / User: user1)
→ 内部サーバー (IP: 10.0.1.30 / User: user2)
※この時、内部サーバーに接続するための秘密鍵 (id_rsa_internal) は踏み台サーバー上に配置されているものとします。
① ローカルPCのSSH設定(~/.ssh/config):
Host bastion
HostName 203.0.113.5
User user1
IdentityFile ~/.ssh/id_rsa_jump
Host internal
HostName 10.0.1.30
User user2
ProxyJump bastion
→ これで、ローカルPCから以下のコマンドで内部サーバーに接続できます。
ssh internal
※補足: Host はSSH設定ファイル内でのニックネームであり、実際の接続先は HostName によって決まります。ローカルPCと踏み台サーバーで同じ Host 名を使う必要はありませんが、統一しておくと管理がしやすくなります。
② 踏み台サーバーのSSH設定(~/.ssh/config):
踏み台サーバー上で内部サーバーへの接続を簡略化するためにも設定します。
Host internal
HostName 10.0.1.30
User user2
IdentityFile ~/.ssh/id_rsa_internal
→ 踏み台サーバーにログイン後、以下のコマンドで内部サーバーに接続できます。
ssh internal
✅ 5. TeraTermやRLoginとの比較
Windows標準SSHクライアントはCLI操作に特化しており、configファイルによる設定管理が強力です。GUIやマクロ機能が必要な場合は外部クライアントが有利ですが、設定管理の効率化においては標準SSHに軍配が上がります。
| 比較項目 | Windows SSH | TeraTerm/RLogin |
| GUI | ❌(CLIのみ) | ✅(GUIあり) |
| 設定管理 | configで一括管理 | GUIで個別設定 |
| マクロ機能 | ❌ | ✅(TeraTermマクロなど) |
| 多段接続 | ProxyJumpで簡単 | 設定が複雑な場合あり |
📝 6. まとめとセキュリティの注意点
Windows標準SSHクライアントは、CLIでの運用に慣れている技術者やサーバー管理者にとって非常に強力なツールです。踏み台経由の接続やポートフォワーディングも容易に設定でき、セキュリティと利便性を両立できます。
セキュリティ上の注意点:
- 踏み台サーバーに配置する秘密鍵(例:
id_rsa_internal)は、必ずchmod 600で適切なパーミッションを設定してください。 - 内部サーバーの
~/.ssh/authorized_keysに対応する公開鍵が正しく登録されていることを確認してください。 - 踏み台サーバーのアクセス権限を厳格に管理し、不要なユーザーが鍵ファイルにアクセスできないようにしましょう。
ぜひこのガイドが、ご自身の環境に応じた安全で効率的なSSH接続設定のお役に立てれば幸いです。