InfraLab
SSH58 cmd

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

ユーザー名指定でホストに接続

Example
ssh deploy@example.com
ssh -p PORT user@host

ポート番号を指定して接続

Example
ssh -p 2222 deploy@example.com
ssh -i KEY user@host

秘密鍵ファイルを指定して接続

Example
ssh -i ~/.ssh/id_ed25519 deploy@example.com
ssh -v user@host

詳細ログ出力で接続(-vv, -vvv でさらに詳細)

Example
ssh -vvv deploy@example.com
ssh -o option=value

ssh_config の項目をコマンドラインから上書き

Example
ssh -o StrictHostKeyChecking=accept-new host
ssh user@host COMMAND

接続せずにリモートでコマンドを実行

Example
ssh deploy@host 'uptime'
ssh -t user@host

強制的に擬似端末を割り当てて接続(sudo 等で必要)

Example
ssh -t deploy@host 'sudo systemctl status nginx'
ssh -N -f

コマンド実行なし・バックグラウンドで接続のみ確立(トンネル用)

Example
ssh -N -f -L 8080:localhost:80 host
ssh-keygen -t ed25519

Ed25519 形式の鍵ペアを生成(推奨)

Example
ssh-keygen -t ed25519 -C 'me@example.com'
ssh-keygen -t rsa -b 4096

4096bit RSA 鍵ペアを生成

Example
ssh-keygen -t rsa -b 4096 -C 'me@example.com'
ssh-keygen -p -f KEY

既存鍵のパスフレーズを変更

Example
ssh-keygen -p -f ~/.ssh/id_ed25519
ssh-keygen -y -f KEY

秘密鍵から公開鍵を再出力

Example
ssh-keygen -y -f ~/.ssh/id_ed25519 > id_ed25519.pub
ssh-keygen -lf KEY

鍵のフィンガープリントを表示

Example
ssh-keygen -lf ~/.ssh/id_ed25519.pub
ssh-copy-id user@host

ローカル公開鍵をリモートの authorized_keys に追加

Example
ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@host
~/.ssh/authorized_keys

サーバー側で許可する公開鍵を列挙するファイル(パーミッション 600)

Example
echo 'ssh-ed25519 AAAA...' >> ~/.ssh/authorized_keys
~/.ssh/config

ホスト別の接続設定(HostName/User/Port/IdentityFile 等)

Example
Host prod\n HostName 203.0.113.10\n User deploy\n IdentityFile ~/.ssh/id_ed25519
ssh-keygen -R host

known_hosts から指定ホストのエントリを削除

Example
ssh-keygen -R example.com
ssh -L LPORT:HOST:RPORT user@gw

ローカルポート転送(ローカル→リモート方向のトンネル)

Example
ssh -L 5432:db.internal:5432 bastion
ssh -R RPORT:HOST:LPORT user@gw

リモートポート転送(リモート→ローカル方向のトンネル)

Example
ssh -R 8080:localhost:3000 jump
ssh -D PORT user@gw

ダイナミックポート転送(SOCKSプロキシ)

Example
ssh -D 1080 bastion
ssh -fN -L ...

対話シェルを開かずバックグラウンドでトンネルだけ確立

Example
ssh -fN -L 5432:db:5432 bastion
GatewayPorts yes

sshd_config 設定。-R で他ホストからの接続を許可する

Example
GatewayPorts yes
eval $(ssh-agent -s)

ssh-agent を起動して環境変数を読み込み

Example
eval $(ssh-agent -s)
ssh-add KEY

agent に秘密鍵を登録

Example
ssh-add ~/.ssh/id_ed25519
ssh-add -l

agent に登録済みの鍵を一覧表示

Example
ssh-add -l
ssh-add -D

agent から全ての鍵を削除

Example
ssh-add -D
ssh -A user@host

ssh-agent forwarding を有効にして接続(多段先で同じ鍵を使える)

Example
ssh -A deploy@bastion
AddKeysToAgent yes

ssh_config 設定。接続時に鍵を agent に自動追加

Example
AddKeysToAgent yes
scp file user@host:DEST

ローカルファイルをリモートへコピー

Example
scp ./app.tar.gz deploy@host:/tmp/
scp -r DIR user@host:DEST

ディレクトリを再帰的にコピー

Example
scp -r ./dist deploy@host:/var/www/
scp user@host:SRC LOCAL

リモートファイルをローカルへ取得

Example
scp deploy@host:/var/log/app.log .
scp -P PORT

scp でポート指定(大文字 P)

Example
scp -P 2222 file host:/tmp/
sftp user@host

対話的なファイル転送セッションを開始

Example
sftp deploy@host
rsync -avz SRC user@host:DEST

圧縮・属性保持で差分同期

Example
rsync -avz ./dist/ deploy@host:/var/www/
rsync -e 'ssh -p PORT'

rsync で SSH のポートやオプションを指定

Example
rsync -avz -e 'ssh -p 2222' src/ host:/tmp/
rsync --delete

送信側にないファイルを受信側からも削除(完全ミラー)

Example
rsync -avz --delete src/ host:/var/www/
ssh -J jump user@host

ProxyJump で踏み台経由接続

Example
ssh -J bastion deploy@10.0.0.5
ProxyJump jump

~/.ssh/config に書く多段SSH指定

Example
Host internal\n HostName 10.0.0.5\n ProxyJump bastion
ProxyCommand ssh -W %h:%p jump

ProxyCommand を使った多段SSH(古い書式)

Example
ProxyCommand ssh -W %h:%p bastion
ssh -J u1@gw1,u2@gw2 host

ProxyJump を複数指定して三段以上の踏み台経由

Example
ssh -J ops@gw1,ops@gw2 deploy@target
/etc/ssh/sshd_config

sshd の設定ファイル本体

Example
sudo vi /etc/ssh/sshd_config
Port 22

sshd が待ち受けるポート番号

Example
Port 2222
PermitRootLogin no

root の直接ログインを禁止(推奨)

Example
PermitRootLogin no
PasswordAuthentication no

パスワード認証を無効化(鍵認証のみ)

Example
PasswordAuthentication no
PubkeyAuthentication yes

公開鍵認証を有効化

Example
PubkeyAuthentication yes
AllowUsers user1 user2

ログイン可能なユーザーをホワイトリスト指定

Example
AllowUsers deploy ops
ClientAliveInterval 60

アイドルクライアントへの keepalive 間隔(秒)

Example
ClientAliveInterval 60
MaxAuthTries 3

認証失敗の最大試行回数

Example
MaxAuthTries 3
sudo sshd -t

sshd_config の構文チェック

Example
sudo sshd -t
sudo systemctl reload sshd

sshd を無停止リロード

Example
sudo systemctl reload sshd
ssh -vvv user@host

最大詳細のデバッグログを出力

Example
ssh -vvv deploy@host
ssh -G user@host

実際に適用される ssh_config を表示

Example
ssh -G deploy@host
ssh -Q cipher

クライアントが対応する暗号一覧を表示

Example
ssh -Q cipher
chmod 600 ~/.ssh/id_*

秘密鍵のパーミッションを 600 に修正(緩いと拒否される)

Example
chmod 600 ~/.ssh/id_ed25519
chmod 700 ~/.ssh

~/.ssh ディレクトリのパーミッションを 700 に修正

Example
chmod 700 ~/.ssh
sudo journalctl -u sshd -e

sshd のログを末尾から表示

Example
sudo journalctl -u sshd -e --since '1 hour ago'
tail -f /var/log/auth.log

認証ログを追跡(Debian/Ubuntu)

Example
sudo tail -f /var/log/auth.log
tail -f /var/log/secure

認証ログを追跡(RHEL/CentOS)

Example
sudo tail -f /var/log/secure
対応ツール
Related