すべてのチートシート

SSH / OpenSSH チートシート

OpenSSH を素早く参照:接続、鍵管理、ユーザー設定ファイル、ファイル転送(scp / rsync / sshfs)、ポート転送、ジャンプ ホスト — よく使うオプションと実用例をまとめました。

26 コマンド

接続

ssh <user>@<host>

リモート ホストで対話的な SSH セッションを開きます。

-p PORT; -i identity_file; -l user(user@ を上書き); -E logfile デバッグ; -v / -vv / -vvv 詳細レベル

ssh -p 2222 [email protected]
ssh <user>@<host> '<cmd>'

リモート ホストで単一の非対話コマンドを実行します。

ssh ops@db1 'sudo systemctl status postgresql'
ssh -J <jumphost>

SSH 接続をジャンプ ホスト経由でルーティングします(ProxyJump)。

-J user1@jump1:2222,user2@jump2; -o ProxyCommand=ssh -W ...

ssh -J [email protected] db1.private -i ~/.ssh/db1_key
ssh -N -L <l:r> -f <host>

シェルを開かずにローカル ポート転送をバックグラウンドで実行。-L local:rremote。

-N リモート コマンドなし; -f バックグラウンド; -L 8080:localhost:80; -g リモートからの接続を許可

ssh -N -L 5432:localhost:5432 -f db1 && psql -h localhost
ssh -N -R <r:localhost:l>

リモート側ポートを開いてローカル ポートへ転送する逆トンネル。

-N; -f; -R 8080:localhost:3000; GatewayPorts yes(サーバ設定)

ssh -N -R 8080:localhost:3000 [email protected]
ssh -D <lport>

SSH サーバ経由でローカル側に SOCKS プロキシを設定します。

-C 圧縮; -q 静か; -D 1080

ssh -D 1080 -q -N tunnel.example.com && curl --proxy socks5h://localhost:1080 https://ifconfig.me
ssh -A <user>@<host>

ローカル ssh-agent をリモートへ転送(SSH をチェーンして利用)。

-A エージェント転送; -a 無効化

ssh -A ops@bastion && ssh internal-db # uses your local keys
ssh -o <key>=<value>

呼び出し毎に SSH オプションを渡す(設定に残さない単発変更に便利)。

StrictHostKeyChecking=no; UserKnownHostsFile=/dev/null(非安全、デモ専用); RequestTTY=force

ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null [email protected]
ssh -F <configfile>

別の ssh_config ファイルを使用(プロジェクト / 顧客毎に便利)。

-F パス; -G 接続せず設定を解釈して表示

ssh -F ~/.ssh/config.work -G devbox | grep -E 'hostname|user'

ssh-keygen -t ed25519 -C '<email>'

モダンでコンパクトな ED25519 鍵ペアを生成(RSA より推奨)。

-t ed25519|rsa|ecdsa; -b bits; -C コメント; -f 出力パス; -N 'パスフレーズ'; -q 静か

ssh-keygen -t ed25519 -C 'you@work' -f ~/.ssh/work_ed25519 -N ''
ssh-keygen -lf <pubkey>

公開鍵のフィンガープリントと長さを表示(SSH バナーチェック)。

-E md5|sha256|shake256; -l 一覧; -i 標準入力から読み込み

ssh-keygen -lf ~/.ssh/id_ed25519.pub -E sha256
ssh-keygen -R <host>

known_hosts からホスト鍵を削除(サーバ再構築 / 再鍵後)。

-R '[host]:port' 非標準ポート対応

ssh-keygen -R '[bastion.example.com]:2222'
ssh-copy-id <user>@<host>

公開鍵をリモート authorized_keys にインストール(パスワード認証が必要)。

-i identity.pub; -p PORT; -o options

ssh-copy-id -i ~/.ssh/work_ed25519.pub -p 2222 deploy@bastion
ssh-add [path]

ssh-agent に秘密鍵を追加(パスフレーズを何度も入力しない)。

-l フィンガープリント一覧; -D すべて削除; -d path 削除; -t N ライフタイム

eval $(ssh-agent) && ssh-add ~/.ssh/work_ed25519 && ssh-add -l
ssh-keyscan <host>

リモート ホスト鍵を表示(known_hosts への事前投入 / ブートストラップ用)。

-t rsa|ed25519|ecdsa; -p PORT

ssh-keyscan -t ed25519 -p 2222 bastion.example.com >> ~/.ssh/known_hosts

設定ファイル

~/.ssh/config

ユーザー固有の SSH 設定 — ホスト / エイリアス / 鍵 / ジャンプ ホスト / keepalive を宣言。

Host alias; HostName real; User; Port; IdentityFile; PreferredAuthentications; AddKeysToAgent yes; ServerAliveInterval 30; IdentitiesOnly yes; ProxyJump / ProxyCommand; LocalForward / RemoteForward; ControlMaster auto / ControlPath / ControlPersist

Host bastion HostName bastion.example.com Port 2222 User ops IdentityFile ~/.ssh/work_ed25519 Host db* ProxyJump bastion User ubuntu

ファイル転送

scp <src> <dest>

SSH 経由でホスト間でファイルをコピー(レガシーだが普及)。

-r 再帰; -P PORT; -i 鍵; -C 圧縮; -p モード / 時間保持; -l 帯域制限(Kbit/s)

scp -P 2222 -r dist/ [email protected]:/srv/app/releases/1.4.2/
rsync -avz -e ssh <src> <dest>

差分同期でミラー / コピー — 大規模ツリーの反復転送で大幅高速。

-a アーカイブ; -v 詳細; -z 圧縮; -P 部分 + 進捗; --delete ミラー; --exclude; --dry-run; -e ssh -p 2222

rsync -avz -e 'ssh -p 2222' ./build/ ops@bastion:/srv/app/current/
sshfs <user>@<host>:<path> <mount>

SSH 経由でリモート FS をマウント(FUSE)— ローカル ツールでリモート ファイルを編集。

-p PORT; -o reconnect; -o transform_symlinks; -C 圧縮

sshfs ops@bastion:/srv/app ./remote -o reconnect,transform_symlinks
sftp <user>@<host>

SSH サブシステム上の対話 / スクリプト可能なファイル転送。

sftp -i id -P port; commands: get / put / sync / ls / lls / cd / lcd / chmod

sftp ops@bastion <<'EOF' mkdir /srv/app/releases/1.4.2 put -r dist/* /srv/app/releases/1.4.2/ EOF

トラブルシューティング

ssh -vvv <host>

接続をトレース:KEX / 認証 / チャネル構築。「なぜ失敗する?」に強い。

-v / -vv / -vvv; -E file ファイルへ書き出し

ssh -vvv -E /tmp/ssh.dbg ops@bastion 2>&1 | grep -E 'Authentications|method|Permission denied'
ssh-keygen -y -f <private>

秘密鍵から対応する公開鍵を導出(片方しかない場合)。

-f file; -E hash アルゴリズム

ssh-keygen -y -f ~/.ssh/id_ed25519 > /tmp/derived.pub && diff ~/.ssh/id_ed25519.pub /tmp/derived.pub && echo OK
ssh -o ConnectTimeout=<N> -o ConnectionAttempts=<K>

不安定なネットワークやウォーム アップ中のジャンプ ホスト向けに、タイムアウト / 再試行を調整します。

ssh -o ConnectTimeout=5 -o ConnectionAttempts=2 ops@bastion
ssh -o ServerAliveInterval=30 -o ServerAliveCountMax=3

NAT / ファイアウォール越しにアイドル SSH 接続を維持します。

ssh -o ServerAliveInterval=30 -o ServerAliveCountMax=3 -L 5432:db:5432 -N ops@bastion

信頼されたフォワーディング

ssh -W %h:%p <proxy>

ProxyCommand としてチェーン接続に使用 — ProxyJump の古い代替。

ProxyCommand ssh -W %h:%p myjumphost nc -q0 %h %p

ssh -o ProxyCommand='ssh -W %h:%p bastion.example.com' internal-db

メンテナンス

ssh -O stop / ssh -M -S <sock>

ControlMaster — 単一の SSH セッションを複数ターミナルで共有し高速化。

-M マスタ モード; -S ソケット パス; -O check|forward|exit

ssh -M -S ~/.ssh/cm-%h bastion; ssh -S ~/.ssh/cm-%h bastion -O check

チートシート バージョン 1.0.0

OpenSSH 9.0+ に対応