Windows環境でサーバーにSSH接続したいとき、PuTTYなどの専用ツールを使う人が多いかもしれません。
しかし実は、Windows PowerShellを使って、コマンド一つでSSH接続ができるのをご存じでしょうか?
特にWindows 10以降では、OpenSSHクライアントが標準で搭載されており、追加インストール不要で利用可能です。
本記事では、PowerShellからSSH接続する方法をわかりやすく解説します。初期設定、接続方法、鍵認証の使い方まで、実践的な内容を盛り込んでいるので、サーバー管理や開発に携わる方はぜひ参考にしてください。
PowerShellでSSH接続するための準備
PowerShellからSSHを使うには、まず「OpenSSHクライアント」が利用できる状態である必要があります。
Windows 10・11では標準搭載
Windows 10(1809以降)やWindows 11では、OpenSSHクライアントがあらかじめインストールされています。
確認するには以下のコマンドを実行します。
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Client*'
State : Installed
と表示されていればOKです。
もし NotPresent
になっていたら、以下のコマンドでインストールできます。
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
インストール後は、PowerShellを再起動して反映させましょう。
SSH接続の基本コマンド
準備が整ったら、実際にSSHで接続してみましょう。
基本的なSSH接続コマンドは以下の通りです。
ssh ユーザー名@ホスト名またはIPアドレス
たとえば、example.com
というサーバーにuser
というアカウントで接続する場合:
ssh user@example.com
初回接続時には、ホストキーの確認メッセージが表示されるので、yes
と入力して信頼します。
その後、パスワード入力を求められ、正しく入力すれば接続完了です。
ポート番号を指定して接続する
SSHサーバーが標準のポート22以外を使っている場合は、-p
オプションでポート番号を指定します。
ssh -p 2222 user@example.com
このように、簡単にポート番号を変更して接続可能です。
鍵認証での接続設定
セキュリティを高めたい場合は、パスワードではなく「公開鍵認証」での接続が推奨されます。
以下は鍵認証の基本的な手順です。
1. 秘密鍵と公開鍵の作成
以下のコマンドで、鍵ペアを作成します。
ssh-keygen
途中で保存場所を聞かれますが、基本はデフォルト(C:\Users\ユーザー名\.ssh\id_rsa
)で問題ありません。
パスフレーズの入力も任意です。
2. 公開鍵をサーバーに配置
生成された公開鍵(id_rsa.pub
)を接続先サーバーの~/.ssh/authorized_keys
に登録します。
# サーバー側(Linux)での操作例
mkdir -p ~/.ssh
cat id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
3. 鍵を使って接続
秘密鍵を指定してSSH接続するには、以下のようにします。
ssh -i C:\Users\ユーザー名\.ssh\id_rsa user@example.com
パスワード入力なしで安全にログインできるようになります。
ホストの設定ファイルを使って接続を簡略化する
毎回長いコマンドを打つのが面倒な場合は、~/.ssh/config
ファイルに接続設定を保存できます。
WindowsではC:\Users\ユーザー名\.ssh\config
に以下のような内容を書きます。
Host myserver
HostName example.com
User user
Port 22
IdentityFile C:\Users\ユーザー名\.ssh\id_rsa
これにより、以下のように短いコマンドで接続できます。
ssh myserver
この方法は複数のサーバーを扱うときに非常に便利です。
SSH接続でよくあるエラーと対処法
SSH接続時に以下のようなエラーが出ることがあります。
パーミッションエラー
Permissions 0644 for 'id_rsa' are too open.
これは秘密鍵のファイルの権限が緩すぎるためです。
以下のように変更してください。
icacls C:\Users\ユーザー名\.ssh\id_rsa /inheritance:r
icacls C:\Users\ユーザー名\.ssh\id_rsa /grant:r ユーザー名:F
ホストが見つからない/タイムアウト
ファイアウォール、ポート番号の誤り、ネットワーク接続を確認してください。
また、ホスト名に誤りがないかも見直しましょう。
TIPS:PowerShellスクリプトでSSH自動接続を行う
SSH接続をスクリプトに組み込むことも可能です。
たとえば、以下のようなスクリプトを書いておけば、定期接続や自動バックアップ処理に活用できます。
$host = "example.com"
$user = "user"
$keyPath = "$env:USERPROFILE\.ssh\id_rsa"
ssh -i $keyPath "$user@$host"
これを.ps1
ファイルとして保存し、定期実行タスクに組み込むことも可能です。
まとめ
PowerShellを使えば、SSH接続も簡単に、しかもスクリプトや自動化と組み合わせて柔軟に運用できます。
Windows 10以降では標準機能として利用できるので、PuTTYなどのツールを使わなくても、コマンド一発でサーバーに接続できるのは非常に便利です。
サーバー管理やリモート操作を効率化したい方は、ぜひPowerShellのSSH機能を活用してみてください。