本稿はSSH (Secure Shell)に関する記事です。暗号化された通信でネットワーク越しに別のサーバーへリモートログインしたり、ファイル転送やトンネリングを行うためのプロトコルです。
子ページから具体的な接続方法やトラブルシュートを選択してください。
本ページの子ページ
SSHの基本
| 項目 | 内容 |
| 正式名 | Secure Shell |
| 役割 | 暗号化された遠隔ログイン・ファイル転送・ポート転送 |
| 標準ポート | 22 (TCP) |
| 主なRFC | RFC 4250〜4254 (SSH-2) |
| 後継/置換 | telnet・rsh などの平文プロトコルを置換 |
SSHでできる主な操作
| 操作 | コマンド例 | 用途 |
| リモートログイン | ssh user@host | シェルを取って遠隔操作 |
| コマンド単発実行 | ssh user@host 'uptime' | ログイン後すぐコマンドを実行して終了 |
| ファイル転送 | scp file user@host:/path | SSH 上で SCP コピー |
| 同期 | rsync -e ssh ... | 差分転送 |
| ポート転送 | ssh -L 8080:localhost:80 user@host | ローカル→リモートのトンネル |
| リモートポート転送 | ssh -R 9000:localhost:3000 user@host | リモート→ローカルのトンネル |
| SOCKSプロキシ | ssh -D 1080 user@host | ブラウザ等を SSH 経由に |
| 多段ログイン | ssh -J bastion target | 踏み台経由 |
パスワード認証と公開鍵認証
| 方式 | 特徴 |
| パスワード認証 | 簡単だが総当たり攻撃に弱い。本番では無効化が推奨 |
| 公開鍵認証 | クライアントの秘密鍵と、サーバー側の ~/.ssh/authorized_keys の公開鍵を照合。安全で自動化しやすい |
| 2要素 (TOTP等) | PAM 連携で Google Authenticator 等と組合せ可 |
| SSO/証明書 | 大規模環境では SSH 証明書 (CA署名) で運用 |
公開鍵認証のセットアップ概要
- クライアントで鍵ペア生成:
ssh-keygen -t ed25519 (古い rsa より ed25519 が推奨)
- 公開鍵をサーバーへ転送:
ssh-copy-id user@host もしくは ~/.ssh/authorized_keys に追記
- パーミッション: ホームは 700、
.ssh は 700、authorized_keys は 600
- サーバー設定
/etc/ssh/sshd_config で PasswordAuthentication no に変更
sudo systemctl reload sshd で反映
~/.ssh/config による接続ショートカット
|
Host prod
HostName 203.0.113.10
User deploy
Port 22
IdentityFile ~/.ssh/id_ed25519
Host bastion-target
HostName 10.0.0.5
User ops
ProxyJump bastion
|
これで ssh prod だけで接続できるようになります。
主なSSH実装
| 実装 | 用途 |
| OpenSSH | Linux/Mac/Windows の事実上の標準。サーバー (sshd) とクライアント (ssh) を含む |
| PuTTY | Windows 向け GUI クライアント。.ppk 鍵形式 |
| Tera Term | 日本で広く使われる Windows ターミナル |
| WinSCP | Windows GUI のファイル転送 (SCP/SFTP) |
| MobaXterm | Windows 向け統合ターミナル |
セキュリティ上の注意
- パスワード認証は無効化し、公開鍵認証を基本とする
- root直接ログインは禁止 (
PermitRootLogin no)
- ポート22 を狙うブルートフォースが常時行われている。
fail2ban や WAF で対策
- 秘密鍵はパスフレーズ付きで生成し、
ssh-agent でキャッシュ
- 古い鍵タイプ (DSA / RSA1024) は廃止。
ed25519 または RSA4096 を使う
- ポート変更はあくまで雑音減らし。セキュリティの本質ではない
よくあるエラーと一般的な対処
| エラー | 主な原因 |
| Permission denied (publickey) | 公開鍵が authorized_keys にない/パーミッション不正 |
| Connection refused | sshd 未起動/ポート違い/ファイアウォール |
| Connection timed out | ネットワーク不通/セキュリティグループ閉鎖 |
| Host key verification failed | サーバー鍵が変わった。~/.ssh/known_hosts から該当行を削除 |
具体的なエラーと解決手順は エラー一覧 を参照してください。
関連