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. エラー一覧
  4. ssh-keygenによる鍵生成
同階層のページ
  1. HTTP
  2. HTTPS
  3. DNS
  4. FTP
  5. TFTP
  6. DHCP
  7. SMTP
  8. SNMP
  9. POP3
  10. Telnet
  11. NTP
  12. SSH