このページの目次
SSH 操作マニュアル
接続と設定
~/.ssh/config は SSH で最も重要な設定ファイルであり、各 Host ブロックは接続パラメータのセットを定義します:
Host myserver
HostName 1.2.3.4 # 実際の IP アドレスまたはドメイン名
Port 2222 # デフォルトは 22
User root # ログインユーザー
IdentityFile ~/.ssh/id_ed25519 # 秘密鍵のパス
ServerAliveInterval 60 # 60 秒ごとに keepalive を送信 (NAT/ファイアウォールによる接続切断を防ぐ)
ServerAliveCountMax 3 # 3 回連続で失敗した場合に切断
# 鍵認証が設定済み → ssh myserver で直接ログイン可能
Host github.com
HostName github.com
IdentityFile ~/.ssh/id_ed25519_github # 複数の鍵がある場合に異なる鍵を指定
IdentitiesOnly yes # この鍵のみを使用し、エージェント内の他の鍵を試さない
Host jump-*
ProxyJump jumphost # ジャンプホスト経由で接続
鍵管理
# ED25519 鍵を生成 (推奨。RSA より高速で安全)
# 公開鍵をリモートに配置 (パスワード → 鍵による認証の無効化)
# 同等のコマンド: cat ~/.ssh/id_ed25519.pub | ssh user@host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
# エージェント内の鍵を一覧表示
# 既知のホスト一覧 (known_hosts) から古い鍵を削除 (OS 再インストール後など)
ポートフォワーディング
# ローカルフォワーディング: localhost:8080 にアクセス = リモートからアクセス可能な internal:80 にアクセス
# 用途: リモート内のサービス (例: データベース) をローカルのポートにマッピング
# リモートフォワーディング: remote:3000 にアクセス = localhost:22 にアクセス
# 用途: ローカルの SSH を外部に公開 (homessh の原理)
# 注意: デフォルトではリモートの localhost のみにバインドされます。0.0.0.0 にバインドするには GatewayPorts yes が必要です
# ダイナミックフォワーディング (SOCKS5 プロキシ): ブラウザのプロキシ設定を localhost:1080 に設定
# 用途: SSH サーバーをプロキシとして使用 (HTTP CONNECT より汎用的)
ファイル転送
# rsync は増分転送と再開に対応
# -a: アーカイブ (権限/タイムスタンプ/シンボリックリンクを保持)
# -v: 詳細表示
# -z: 圧縮
# --progress: 進行状況を表示
# 注意: dir/ (末尾にスラッシュあり) = ディレクトリの内容を転送, dir (スラッシュなし) = ディレクトリ自体を転送
トラブルシューティング
# 詳細なデバッグ出力 (鍵交換、認証プロセスの確認、問題が発生したステップの特定)
# Permission denied (publickey)
# → ローカルの鍵にパスフレーズが設定されているがアンロックしていないか確認
# → リモートの ~/.ssh/authorized_keys に正しい公開鍵が含まれているか確認
# → リモートの ~/.ssh の権限を確認: chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys
# → リモートの /etc/ssh/sshd_config を確認: PubkeyAuthentication yes
# Connection refused
# → リモートの sshd は実行されていますか? systemctl status sshd
# → リモートのファイアウォールでポート 22 が許可されていますか? iptables -L -n -v | grep 22
# Host key verification failed (OS 再インストール後)
# 接続確立後にハングアップ (DNS 逆引きが遅い可能性がある)
# → リモートの /etc/ssh/sshd_config で UseDNS no を設定