SSHチート集
基本接続・鍵管理・ポートフォワード・ssh-agent・多段SSH・sshd_config・トラブルシューティングを網羅。
- 更新日
- 2026-05-29
- 参照範囲
- 公式ドキュメント / man page / 主要ベンダーCLI
- 対象実装
- 主要 Linux / BSD / ネットワーク機器 CLI の一般的な実装
- 免責
- OS とバージョン差分は実環境で確認してください。
このチートシートの使いどころ
SSH チートシートは、OpenSSH 系の接続、鍵生成、ssh-agent、ポートフォワード、多段接続、sshd_config、トラブルシュートを日本語で整理した一覧です。対象は現行の OpenSSH クライアント/サーバーを前提にしつつ、ディストリビューション差分は実環境で確認します。踏み台経由の接続設計、鍵更新、接続失敗時の原因切り分けに使います。
58 / 58
ssh user@hostユーザー名指定でホストに接続
ssh deploy@example.comssh -p PORT user@hostポート番号を指定して接続
ssh -p 2222 deploy@example.comssh -i KEY user@host秘密鍵ファイルを指定して接続
ssh -i ~/.ssh/id_ed25519 deploy@example.comssh -v user@host詳細ログ出力で接続(-vv, -vvv でさらに詳細)
ssh -vvv deploy@example.comssh -o option=valuessh_config の項目をコマンドラインから上書き
ssh -o StrictHostKeyChecking=accept-new hostssh user@host COMMAND接続せずにリモートでコマンドを実行
ssh deploy@host 'uptime'ssh -t user@host強制的に擬似端末を割り当てて接続(sudo 等で必要)
ssh -t deploy@host 'sudo systemctl status nginx'ssh -N -fコマンド実行なし・バックグラウンドで接続のみ確立(トンネル用)
ssh -N -f -L 8080:localhost:80 hostssh-keygen -t ed25519Ed25519 形式の鍵ペアを生成(推奨)
ssh-keygen -t ed25519 -C 'me@example.com'ssh-keygen -t rsa -b 40964096bit RSA 鍵ペアを生成
ssh-keygen -t rsa -b 4096 -C 'me@example.com'ssh-keygen -p -f KEY既存鍵のパスフレーズを変更
ssh-keygen -p -f ~/.ssh/id_ed25519ssh-keygen -y -f KEY秘密鍵から公開鍵を再出力
ssh-keygen -y -f ~/.ssh/id_ed25519 > id_ed25519.pubssh-keygen -lf KEY鍵のフィンガープリントを表示
ssh-keygen -lf ~/.ssh/id_ed25519.pubssh-copy-id user@hostローカル公開鍵をリモートの authorized_keys に追加
ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@host~/.ssh/authorized_keysサーバー側で許可する公開鍵を列挙するファイル(パーミッション 600)
echo 'ssh-ed25519 AAAA...' >> ~/.ssh/authorized_keys~/.ssh/configホスト別の接続設定(HostName/User/Port/IdentityFile 等)
Host prod\n HostName 203.0.113.10\n User deploy\n IdentityFile ~/.ssh/id_ed25519ssh-keygen -R hostknown_hosts から指定ホストのエントリを削除
ssh-keygen -R example.comssh -L LPORT:HOST:RPORT user@gwローカルポート転送(ローカル→リモート方向のトンネル)
ssh -L 5432:db.internal:5432 bastionssh -R RPORT:HOST:LPORT user@gwリモートポート転送(リモート→ローカル方向のトンネル)
ssh -R 8080:localhost:3000 jumpssh -D PORT user@gwダイナミックポート転送(SOCKSプロキシ)
ssh -D 1080 bastionssh -fN -L ...対話シェルを開かずバックグラウンドでトンネルだけ確立
ssh -fN -L 5432:db:5432 bastionGatewayPorts yessshd_config 設定。-R で他ホストからの接続を許可する
GatewayPorts yeseval $(ssh-agent -s)ssh-agent を起動して環境変数を読み込み
eval $(ssh-agent -s)ssh-add KEYagent に秘密鍵を登録
ssh-add ~/.ssh/id_ed25519ssh-add -lagent に登録済みの鍵を一覧表示
ssh-add -lssh-add -Dagent から全ての鍵を削除
ssh-add -Dssh -A user@hostssh-agent forwarding を有効にして接続(多段先で同じ鍵を使える)
ssh -A deploy@bastionAddKeysToAgent yesssh_config 設定。接続時に鍵を agent に自動追加
AddKeysToAgent yesscp file user@host:DESTローカルファイルをリモートへコピー
scp ./app.tar.gz deploy@host:/tmp/scp -r DIR user@host:DESTディレクトリを再帰的にコピー
scp -r ./dist deploy@host:/var/www/scp user@host:SRC LOCALリモートファイルをローカルへ取得
scp deploy@host:/var/log/app.log .scp -P PORTscp でポート指定(大文字 P)
scp -P 2222 file host:/tmp/sftp user@host対話的なファイル転送セッションを開始
sftp deploy@hostrsync -avz SRC user@host:DEST圧縮・属性保持で差分同期
rsync -avz ./dist/ deploy@host:/var/www/rsync -e 'ssh -p PORT'rsync で SSH のポートやオプションを指定
rsync -avz -e 'ssh -p 2222' src/ host:/tmp/rsync --delete送信側にないファイルを受信側からも削除(完全ミラー)
rsync -avz --delete src/ host:/var/www/ssh -J jump user@hostProxyJump で踏み台経由接続
ssh -J bastion deploy@10.0.0.5ProxyJump jump~/.ssh/config に書く多段SSH指定
Host internal\n HostName 10.0.0.5\n ProxyJump bastionProxyCommand ssh -W %h:%p jumpProxyCommand を使った多段SSH(古い書式)
ProxyCommand ssh -W %h:%p bastionssh -J u1@gw1,u2@gw2 hostProxyJump を複数指定して三段以上の踏み台経由
ssh -J ops@gw1,ops@gw2 deploy@target/etc/ssh/sshd_configsshd の設定ファイル本体
sudo vi /etc/ssh/sshd_configPort 22sshd が待ち受けるポート番号
Port 2222PermitRootLogin noroot の直接ログインを禁止(推奨)
PermitRootLogin noPasswordAuthentication noパスワード認証を無効化(鍵認証のみ)
PasswordAuthentication noPubkeyAuthentication yes公開鍵認証を有効化
PubkeyAuthentication yesAllowUsers user1 user2ログイン可能なユーザーをホワイトリスト指定
AllowUsers deploy opsClientAliveInterval 60アイドルクライアントへの keepalive 間隔(秒)
ClientAliveInterval 60MaxAuthTries 3認証失敗の最大試行回数
MaxAuthTries 3sudo sshd -tsshd_config の構文チェック
sudo sshd -tsudo systemctl reload sshdsshd を無停止リロード
sudo systemctl reload sshdssh -vvv user@host最大詳細のデバッグログを出力
ssh -vvv deploy@hostssh -G user@host実際に適用される ssh_config を表示
ssh -G deploy@hostssh -Q cipherクライアントが対応する暗号一覧を表示
ssh -Q cipherchmod 600 ~/.ssh/id_*秘密鍵のパーミッションを 600 に修正(緩いと拒否される)
chmod 600 ~/.ssh/id_ed25519chmod 700 ~/.ssh~/.ssh ディレクトリのパーミッションを 700 に修正
chmod 700 ~/.sshsudo journalctl -u sshd -esshd のログを末尾から表示
sudo journalctl -u sshd -e --since '1 hour ago'tail -f /var/log/auth.log認証ログを追跡(Debian/Ubuntu)
sudo tail -f /var/log/auth.logtail -f /var/log/secure認証ログを追跡(RHEL/CentOS)
sudo tail -f /var/log/secure| Command | Description | Example | Copy |
|---|---|---|---|
ssh user@host | ユーザー名指定でホストに接続 | ssh deploy@example.com | |
ssh -p PORT user@host | ポート番号を指定して接続 | ssh -p 2222 deploy@example.com | |
ssh -i KEY user@host | 秘密鍵ファイルを指定して接続 | ssh -i ~/.ssh/id_ed25519 deploy@example.com | |
ssh -v user@host | 詳細ログ出力で接続(-vv, -vvv でさらに詳細) | ssh -vvv deploy@example.com | |
ssh -o option=value | ssh_config の項目をコマンドラインから上書き | ssh -o StrictHostKeyChecking=accept-new host | |
ssh user@host COMMAND | 接続せずにリモートでコマンドを実行 | ssh deploy@host 'uptime' | |
ssh -t user@host | 強制的に擬似端末を割り当てて接続(sudo 等で必要) | ssh -t deploy@host 'sudo systemctl status nginx' | |
ssh -N -f | コマンド実行なし・バックグラウンドで接続のみ確立(トンネル用) | ssh -N -f -L 8080:localhost:80 host | |
ssh-keygen -t ed25519 | Ed25519 形式の鍵ペアを生成(推奨) | ssh-keygen -t ed25519 -C 'me@example.com' | |
ssh-keygen -t rsa -b 4096 | 4096bit RSA 鍵ペアを生成 | ssh-keygen -t rsa -b 4096 -C 'me@example.com' | |
ssh-keygen -p -f KEY | 既存鍵のパスフレーズを変更 | ssh-keygen -p -f ~/.ssh/id_ed25519 | |
ssh-keygen -y -f KEY | 秘密鍵から公開鍵を再出力 | ssh-keygen -y -f ~/.ssh/id_ed25519 > id_ed25519.pub | |
ssh-keygen -lf KEY | 鍵のフィンガープリントを表示 | ssh-keygen -lf ~/.ssh/id_ed25519.pub | |
ssh-copy-id user@host | ローカル公開鍵をリモートの authorized_keys に追加 | ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@host | |
~/.ssh/authorized_keys | サーバー側で許可する公開鍵を列挙するファイル(パーミッション 600) | echo 'ssh-ed25519 AAAA...' >> ~/.ssh/authorized_keys | |
~/.ssh/config | ホスト別の接続設定(HostName/User/Port/IdentityFile 等) | Host prod\n HostName 203.0.113.10\n User deploy\n IdentityFile ~/.ssh/id_ed25519 | |
ssh-keygen -R host | known_hosts から指定ホストのエントリを削除 | ssh-keygen -R example.com | |
ssh -L LPORT:HOST:RPORT user@gw | ローカルポート転送(ローカル→リモート方向のトンネル) | ssh -L 5432:db.internal:5432 bastion | |
ssh -R RPORT:HOST:LPORT user@gw | リモートポート転送(リモート→ローカル方向のトンネル) | ssh -R 8080:localhost:3000 jump | |
ssh -D PORT user@gw | ダイナミックポート転送(SOCKSプロキシ) | ssh -D 1080 bastion | |
ssh -fN -L ... | 対話シェルを開かずバックグラウンドでトンネルだけ確立 | ssh -fN -L 5432:db:5432 bastion | |
GatewayPorts yes | sshd_config 設定。-R で他ホストからの接続を許可する | GatewayPorts yes | |
eval $(ssh-agent -s) | ssh-agent を起動して環境変数を読み込み | eval $(ssh-agent -s) | |
ssh-add KEY | agent に秘密鍵を登録 | ssh-add ~/.ssh/id_ed25519 | |
ssh-add -l | agent に登録済みの鍵を一覧表示 | ssh-add -l | |
ssh-add -D | agent から全ての鍵を削除 | ssh-add -D | |
ssh -A user@host | ssh-agent forwarding を有効にして接続(多段先で同じ鍵を使える) | ssh -A deploy@bastion | |
AddKeysToAgent yes | ssh_config 設定。接続時に鍵を agent に自動追加 | AddKeysToAgent yes | |
scp file user@host:DEST | ローカルファイルをリモートへコピー | scp ./app.tar.gz deploy@host:/tmp/ | |
scp -r DIR user@host:DEST | ディレクトリを再帰的にコピー | scp -r ./dist deploy@host:/var/www/ | |
scp user@host:SRC LOCAL | リモートファイルをローカルへ取得 | scp deploy@host:/var/log/app.log . | |
scp -P PORT | scp でポート指定(大文字 P) | scp -P 2222 file host:/tmp/ | |
sftp user@host | 対話的なファイル転送セッションを開始 | sftp deploy@host | |
rsync -avz SRC user@host:DEST | 圧縮・属性保持で差分同期 | rsync -avz ./dist/ deploy@host:/var/www/ | |
rsync -e 'ssh -p PORT' | rsync で SSH のポートやオプションを指定 | rsync -avz -e 'ssh -p 2222' src/ host:/tmp/ | |
rsync --delete | 送信側にないファイルを受信側からも削除(完全ミラー) | rsync -avz --delete src/ host:/var/www/ | |
ssh -J jump user@host | ProxyJump で踏み台経由接続 | ssh -J bastion deploy@10.0.0.5 | |
ProxyJump jump | ~/.ssh/config に書く多段SSH指定 | Host internal\n HostName 10.0.0.5\n ProxyJump bastion | |
ProxyCommand ssh -W %h:%p jump | ProxyCommand を使った多段SSH(古い書式) | ProxyCommand ssh -W %h:%p bastion | |
ssh -J u1@gw1,u2@gw2 host | ProxyJump を複数指定して三段以上の踏み台経由 | ssh -J ops@gw1,ops@gw2 deploy@target | |
/etc/ssh/sshd_config | sshd の設定ファイル本体 | sudo vi /etc/ssh/sshd_config | |
Port 22 | sshd が待ち受けるポート番号 | Port 2222 | |
PermitRootLogin no | root の直接ログインを禁止(推奨) | PermitRootLogin no | |
PasswordAuthentication no | パスワード認証を無効化(鍵認証のみ) | PasswordAuthentication no | |
PubkeyAuthentication yes | 公開鍵認証を有効化 | PubkeyAuthentication yes | |
AllowUsers user1 user2 | ログイン可能なユーザーをホワイトリスト指定 | AllowUsers deploy ops | |
ClientAliveInterval 60 | アイドルクライアントへの keepalive 間隔(秒) | ClientAliveInterval 60 | |
MaxAuthTries 3 | 認証失敗の最大試行回数 | MaxAuthTries 3 | |
sudo sshd -t | sshd_config の構文チェック | sudo sshd -t | |
sudo systemctl reload sshd | sshd を無停止リロード | sudo systemctl reload sshd | |
ssh -vvv user@host | 最大詳細のデバッグログを出力 | ssh -vvv deploy@host | |
ssh -G user@host | 実際に適用される ssh_config を表示 | ssh -G deploy@host | |
ssh -Q cipher | クライアントが対応する暗号一覧を表示 | ssh -Q cipher | |
chmod 600 ~/.ssh/id_* | 秘密鍵のパーミッションを 600 に修正(緩いと拒否される) | chmod 600 ~/.ssh/id_ed25519 | |
chmod 700 ~/.ssh | ~/.ssh ディレクトリのパーミッションを 700 に修正 | chmod 700 ~/.ssh | |
sudo journalctl -u sshd -e | sshd のログを末尾から表示 | sudo journalctl -u sshd -e --since '1 hour ago' | |
tail -f /var/log/auth.log | 認証ログを追跡(Debian/Ubuntu) | sudo tail -f /var/log/auth.log | |
tail -f /var/log/secure | 認証ログを追跡(RHEL/CentOS) | sudo tail -f /var/log/secure |