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_keyssh -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 localhostssh -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.messh -A <user>@<host>ローカル ssh-agent をリモートへ転送(SSH をチェーンして利用)。
-A エージェント転送; -a 無効化
ssh -A ops@bastion && ssh internal-db # uses your local keysssh -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 sha256ssh-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@bastionssh-add [path]ssh-agent に秘密鍵を追加(パスフレーズを何度も入力しない)。
-l フィンガープリント一覧; -D すべて削除; -d path 削除; -t N ライフタイム
eval $(ssh-agent) && ssh-add ~/.ssh/work_ed25519 && ssh-add -lssh-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_symlinkssftp <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 OKssh -o ConnectTimeout=<N> -o ConnectionAttempts=<K>不安定なネットワークやウォーム アップ中のジャンプ ホスト向けに、タイムアウト / 再試行を調整します。
ssh -o ConnectTimeout=5 -o ConnectionAttempts=2 ops@bastionssh -o ServerAliveInterval=30 -o ServerAliveCountMax=3NAT / ファイアウォール越しにアイドル 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+ に対応