PowerShellでSSH接続する方法を徹底解説

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機能を活用してみてください。

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