ssh コマンドとは
ssh(Secure Shell)は、リモートサーバーへ暗号化された通信で安全に接続するLinuxコマンドです。Linuxサーバーの管理・運用において最もよく使うコマンドのひとつで、パスワード認証または公開鍵認証によって ssh接続 を確立します。本記事では、ssh コマンドの基本構文から主要オプション、接続できないときの対処法までを実際のコマンド例とあわせて解説します。
構文(Syntax)
ssh [オプション] [ユーザー名@]ホスト名 [コマンド]
- ユーザー名:省略するとローカルのログインユーザー名が使われる
- ホスト名:IPアドレスまたはホスト名・FQDNを指定
- コマンド:省略するとリモートのシェルに入る。指定するとそのコマンドだけ実行して終了
ssh接続の基本例
例1: 最もシンプルなSSH接続
ssh example.com
ローカルのユーザー名でリモートの example.com に接続します。初回接続時は fingerprint の確認が表示されます。
The authenticity of host 'example.com (203.0.113.1)' can't be established.
ED25519 key fingerprint is SHA256:abc123...
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'example.com' (ED25519) to the list of known hosts.
user@example.com's password:
例2: ユーザー名を指定してSSH接続
ssh admin@192.168.1.10
admin というユーザーで IP アドレス 192.168.1.10 のサーバーに接続します。ユーザー名@ホスト名 の形式が基本です。
例3: ポートを指定してSSH接続(-p)
ssh -p 2222 user@example.com
デフォルトのSSHポートは 22 ですが、セキュリティのためにポートを変更しているサーバーに接続する場合は -p で ssh ポート を指定します。サーバー側でポート番号を変更する手順や疎通確認の方法は SSH ポートの変更方法|デフォルト22番から変更する手順と接続・確認方法 にまとめています。
例4: 秘密鍵を指定してSSH接続(-i)
ssh -i ~/.ssh/my_key user@example.com
AWS EC2 など公開鍵認証が必要なサーバーに接続するとき、-i で秘密鍵ファイルのパスを指定します。パーミッションは 600 にしておく必要があります。
# 秘密鍵のパーミッション設定
chmod 600 ~/.ssh/my_key
ssh -i ~/.ssh/my_key ec2-user@54.123.45.67
例5: ポートと秘密鍵を両方指定
ssh -p 2222 -i ~/.ssh/my_key user@example.com
例6: リモートでコマンドを実行して終了
ssh user@example.com "ls -la /var/log"
コマンドを引数に渡すと、そのコマンドを実行して ssh接続を終了します。ログの確認やワンライナーのバッチ処理に便利です。
例7: 詳細ログ付きで接続(-v / -vv / -vvv)
ssh -v user@example.com
接続に失敗する場合のデバッグに使います。-vv や -vvv でさらに詳細なログを出力できます。
主要オプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
-p PORT | 接続先の ssh ポート を指定(デフォルト: 22) | ssh -p 2222 user@host |
-i FILE | 認証に使う秘密鍵ファイルを指定 | ssh -i ~/.ssh/id_rsa user@host |
-l USER | ログインユーザー名を指定(user@host と同義) | ssh -l admin host |
-v | 詳細ログ出力(デバッグ用)。-vvv で最大詳細 | ssh -vv user@host |
-L PORT:HOST:PORT | ローカルポートフォワーディング | ssh -L 8080:localhost:80 user@host |
-R PORT:HOST:PORT | リモートポートフォワーディング | ssh -R 9090:localhost:3000 user@host |
-N | リモートコマンドを実行しない(ポートフォワード専用) | ssh -N -L 8080:localhost:80 user@host |
-f | バックグラウンドで実行 | ssh -f -N -L 8080:localhost:80 user@host |
-T | 擬似端末(tty)を割り当てない | ssh -T git@github.com |
-C | 通信を圧縮する(低速回線で有効) | ssh -C user@host |
-X | X11 フォワーディングを有効にする | ssh -X user@host |
-o OPTION | ssh_config の設定オプションをコマンドラインで指定 | ssh -o StrictHostKeyChecking=no user@host |
~/.ssh/config で接続設定を管理する
毎回 -p や -i を書くのは手間がかかります。~/.ssh/config にHostごとの設定を書いておくと、ssh myserver のような短いエイリアスで接続できるようになります。
# ~/.ssh/config
Host myserver
HostName example.com
User admin
Port 2222
IdentityFile ~/.ssh/my_key
複数サーバーの使い分け、踏み台サーバー経由の接続(ProxyJump)、設定の優先順位の注意点など詳しい書き方は SSH configの書き方|~/.ssh/configで接続設定をまとめる方法 にまとめています。
SSH接続できないときの確認項目
ssh コマンド で接続できない場合、以下を順番に確認します。
- ホスト名・IPアドレスが正しいか(
pingで疎通確認) - ssh ポートが開いているか(
nc -zv example.com 22やtelnet example.com 22) - ファイアウォールでSSHポートが許可されているか
- 秘密鍵のパーミッションが
600になっているか(chmod 600 ~/.ssh/id_rsa) - known_hosts の不一致(サーバー再構築後によく起こる。該当行を
ssh-keygen -R hostnameで削除) - ユーザー名・パスワードが正しいか
詳しいトラブルシューティング手順は SSH接続できないときのチェックリスト を参照してください。
関連コマンド
scp
SSH経由でファイルをコピーするコマンド。scp ファイル user@host:/path/の形式で使用。ssh-copy-id
公開鍵をリモートサーバーのauthorized_keysに自動登録するコマンド。パスワードなしログインの設定に使う。- SSH ポートの変更方法
サーバー側でSSHの待受ポートを22番から変更する手順と、変更後の接続・疎通確認方法。 ssh-keygen
SSH鍵ペア(秘密鍵・公開鍵)を生成するコマンド。ssh-keygen -t ed25519で Ed25519 鍵を生成できる。ssh-agent/ssh-add
秘密鍵をメモリに保持してパスフレーズの繰り返し入力を省略するエージェント。
よくある質問
Windowsでもssh コマンドは使えますか?
Windows 10/11には標準でOpenSSHクライアントが搭載されているため、コマンドプロンプトやPowerShellから同じsshコマンドで接続できます。macOS・LinuxのターミナルでもオプションやSSH configの書式は共通です。
1回だけコマンドを実行してすぐログアウトするには?
ssh user@host "コマンド" のようにコマンドを引数で渡すと、リモートでそのコマンドだけ実行してsshセッションを終了します(例6を参照)。定期実行したい場合はcronやスクリプトからこの形式で呼び出すのが一般的です。
よく使うssh コマンドのオプションだけ知りたい
-p(ポート指定)、-i(秘密鍵指定)、-v(詳細ログ)の3つが最も使用頻度が高いオプションです。詳細は上記の「主要オプション一覧」表を参照してください。
参考
- manページ
https://man7.org/linux/man-pages/man1/ssh.1.html - OpenSSH 公式ドキュメント
https://www.openssh.com/

コメント