12.

SSH とは?暗号化リモート接続・鍵認証・実装一覧

編集

本稿はSSH (Secure Shell)に関する記事です。暗号化された通信でネットワーク越しに別のサーバーへリモートログインしたり、ファイル転送やトンネリングを行うためのプロトコルです。

子ページから具体的な接続方法やトラブルシュートを選択してください。

本ページの子ページ

SSHの基本

項目内容
正式名Secure Shell
役割暗号化された遠隔ログイン・ファイル転送・ポート転送
標準ポート22 (TCP)
主なRFCRFC 4250〜4254 (SSH-2)
後継/置換telnet・rsh などの平文プロトコルを置換

SSHでできる主な操作

操作コマンド例用途
リモートログインssh user@hostシェルを取って遠隔操作
コマンド単発実行ssh user@host 'uptime'ログイン後すぐコマンドを実行して終了
ファイル転送scp file user@host:/pathSSH 上で 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署名) で運用

公開鍵認証のセットアップ概要

  1. クライアントで鍵ペア生成: ssh-keygen -t ed25519 (古い rsa より ed25519 が推奨)
  2. 公開鍵をサーバーへ転送: ssh-copy-id user@host もしくは ~/.ssh/authorized_keys に追記
  3. パーミッション: ホームは 700、.ssh は 700、authorized_keys は 600
  4. サーバー設定 /etc/ssh/sshd_configPasswordAuthentication no に変更
  5. 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実装

実装用途
OpenSSHLinux/Mac/Windows の事実上の標準。サーバー (sshd) とクライアント (ssh) を含む
PuTTYWindows 向け GUI クライアント。.ppk 鍵形式
Tera Term日本で広く使われる Windows ターミナル
WinSCPWindows GUI のファイル転送 (SCP/SFTP)
MobaXtermWindows 向け統合ターミナル

セキュリティ上の注意

  • パスワード認証は無効化し、公開鍵認証を基本とする
  • root直接ログインは禁止 (PermitRootLogin no)
  • ポート22 を狙うブルートフォースが常時行われている。fail2ban や WAF で対策
  • 秘密鍵はパスフレーズ付きで生成し、ssh-agent でキャッシュ
  • 古い鍵タイプ (DSA / RSA1024) は廃止。ed25519 または RSA4096 を使う
  • ポート変更はあくまで雑音減らし。セキュリティの本質ではない

よくあるエラーと一般的な対処

エラー主な原因
Permission denied (publickey)公開鍵が authorized_keys にない/パーミッション不正
Connection refusedsshd 未起動/ポート違い/ファイアウォール
Connection timed outネットワーク不通/セキュリティグループ閉鎖
Host key verification failedサーバー鍵が変わった。~/.ssh/known_hosts から該当行を削除

具体的なエラーと解決手順は エラー一覧 を参照してください。

関連

編集
Post Share
子ページ
  1. Linux(Mac)クライアントからLinuxサーバーへのSSH鍵接続
  2. Cygwinを使用したSSH接続方法
  3. エラー一覧
同階層のページ
  1. HTTP
  2. HTTPS
  3. DNS
  4. FTP
  5. TFTP
  6. DHCP
  7. SMTP
  8. SNMP
  9. POP3
  10. Telnet
  11. NTP
  12. SSH