【Linuxコマンド】ssh コマンドの使い方とよく使うオプション

概要

 
ssh コマンドは、リモートサーバに暗号化された通信でログインしたり、コマンドを実行したりするためのコマンドです。
パスワード認証だけでなく、公開鍵認証での接続、踏み台サーバ(ジャンプホスト)経由の接続、ポートフォワーディングなど、サーバ運用には欠かせない機能を持っています。
 

基本の構文は

  • ssh [オプション] [ユーザ名@]ホスト名 [コマンド]

です。コマンドを省略するとシェルログイン、指定するとそのコマンドだけ実行して終了します。

フォーマット

 

ssh [オプション] [ユーザ名@]ホスト名
ssh [オプション] [ユーザ名@]ホスト名 コマンド

 

最も基本的な形は ssh ユーザ名@ホスト名 で、指定したユーザとしてリモートホストにログインします。
オプションを組み合わせることで、

  • 接続ポートの変更(-p
  • 秘密鍵ファイルの指定(-i
  • 踏み台サーバ経由の接続(-J
  • ポートフォワーディング(-L-R
  • バックグラウンドでの待ち受け(-f-N

などを柔軟に制御できます。
 

よく使うコマンド例

 

・リモートサーバへログインする(基本)

ssh sooota@example.com

sooota ユーザで example.com にログインします。
ユーザ名@ を省略した場合は、ローカルのログインユーザ名がそのまま使われます。

 

・ユーザ名をオプションで指定して接続する(-l)

ssh -l sooota example.com

-l ユーザ名 でログインユーザを指定することもできます。
ssh sooota@example.com と同じ意味ですが、スクリプトでユーザ名を変数にしたいときなどに使うことがあります。

 

・デフォルト以外のポートで ssh 接続する(-p)

ssh -p 2222 sooota@example.com

SSH のデフォルトポートは 22 番ですが、セキュリティポリシー等で変更している環境では -p で接続ポートを指定します。
ファイアウォールや踏み台サーバの設定と合わせて確認が必要です。

 

・秘密鍵ファイルを指定して接続する(-i)

ssh -i ~/.ssh/id_rsa_app sooota@app.example.com

-i 秘密鍵ファイル で、使用する秘密鍵を明示的に指定します。
接続先ごとに鍵を分けて運用している場合や、デフォルトと異なるファイル名の鍵を使う場合に利用します。

 

・踏み台サーバ(ジャンプホスト)経由で接続する(-J)

ssh -J bastion.example.com sooota@app.internal

-J ジャンプホスト(ProxyJump)は、踏み台サーバを経由して内部サーバに接続するためのオプションです。
この例では、まず bastion.example.com に接続し、そこから app.internal へ SSH で接続します。
従来の ProxyCommand よりも設定が簡単で、~/.ssh/config と合わせて使うことが多いです。

 

・リモートでコマンドを 1 回だけ実行する

ssh sooota@example.com "uname -a"

ログインシェルを開かず、指定したコマンドだけを実行して終了させたい場合は、ホスト名の後ろにコマンドを書きます。
短い確認作業や、スクリプトからの実行でよく使うパターンです。

 

・ローカルポートフォワードで Web をトンネルする(-L)

ssh -L 8080:localhost:80 sooota@web.example.com

-L ローカルポート:宛先ホスト:宛先ポート で、ローカルポートフォワードを設定します。
この例では、ローカルの 8080 にアクセスすると、SSH トンネル経由で web.example.com:80 にアクセスします。
ファイアウォール内側の HTTP サービスを手元から確認したい場合などに便利です。

 

・データベースへの接続を SSH トンネル経由にする(-L / -f / -N)

ssh -f -N -L 3307:localhost:3306 dbuser@db.example.com

-N はリモートコマンドを実行せず、「ポートフォワード専用」で接続するオプションです。
-f を付けると、認証後にバックグラウンドへ移行します。
この例ではローカルの 3307 を、リモートの localhost:3306(MySQL など)へトンネルし、
ローカルから 127.0.0.1:3307 に接続することで安全に DB へアクセスできます。

 

・接続前後のログを詳しく見てトラブルシュートする(-v)

ssh -v sooota@example.com

-v は詳細なデバッグ情報を出力します。
さらに -vv-vvv と v を増やすことで、より詳細なログを出すことができます。
接続エラー時や、どの鍵が試されているか確認したいときに有用です。

 

・StrictHostKeyChecking の挙動を一時的に変更する(-o)

ssh -o StrictHostKeyChecking=no sooota@newhost.example.com

-o オプション名=値 で、~/.ssh/config に書くような設定をコマンドラインから指定できます。
CI 環境などでホストキー確認をインタラクティブにしたくない場合に、StrictHostKeyChecking=no を一時的に指定することがありますが、
セキュリティリスクもあるため、本番運用では慎重に使用してください。

 

・パスワード入力を禁止して公開鍵のみ許可されたサーバで接続する例(設定側)

ssh コマンドそのものではありませんが、接続先サーバ側で PasswordAuthentication no と設定し、
ssh 接続は公開鍵認証に統一するのが、運用では一般的です。
クライアント側では ssh -i 鍵ファイル~/.ssh/config を組み合わせて、
「コマンドはシンプル、裏側は鍵で安全に」という形にしておくと運用しやすくなります。

 




実務でのよくある使いどころ

 

・リモートサーバへの日常的なログイン
Linux サーバ運用では、ほぼすべての作業が ssh 経由で行われます。
ユーザごとの鍵管理や、~/.ssh/config の整備は、長期運用を楽にするための基本です。
 

・踏み台サーバ経由の多段接続
直接インターネットから見えないサーバへは、踏み台サーバ(bastion)経由で接続する構成が一般的です。
-JProxyJump を覚えておくと、ssh のコマンドだけで多段接続が完結します。
 

・DB や管理 Web への安全なトンネル接続
DB 管理ツールや Web コンソールをインターネットに直接公開せず、SSH トンネル経由でだけアクセスできるようにするのは、
シンプルで効果の高いセキュリティ対策です。
ssh -L-N の組み合わせは、ぜひ手に馴染ませておきたいところです。
 

・接続トラブル時の原因切り分け
「鍵が違うのか」「ホストキーが変わったのか」「そもそも疎通できていないのか」など、
ssh 接続にまつわる問題は、ssh -v のログを見ていくことでかなりの部分を切り分けできます。
 

ssh はオプションが多く見えますが、-p / -i / -J / -L / -R / -f / -N / -v / -o あたりを押さえておくだけでも、
日常運用で困る場面はかなり減ります。
細かい設定は ~/.ssh/config に寄せつつ、コマンドはシンプルに保つ運用がオススメです。

 

オプション(よく使うオプションのみ)

 

short optionlong optiondescription
-p接続先 SSH ポート番号を指定する(デフォルトは 22)
-i使用する秘密鍵ファイル(identity file)を指定する
-lログインユーザ名を明示的に指定する
-Fデフォルトではない ssh 設定ファイル(ssh_config)を指定する
-v詳細なデバッグメッセージを表示する(-vv や -vvv でさらに詳細)
-q警告や情報メッセージを抑制して静かに実行する
-C圧縮を有効にして通信量を削減する
-Nリモートコマンドを実行せずポートフォワード専用で接続する
-f認証完了後にバックグラウンドへ移行して実行する
-T擬似端末(tty)を割り当てない(対話不要な実行向け)
-t擬似端末を強制的に割り当てる(sudo など対話的コマンド実行向け)
-Lローカルポートフォワードを設定する([bind_address:]port:host:hostport)
-Rリモートポートフォワードを設定する([bind_address:]port:host:hostport)
-J踏み台サーバ(ジャンプホスト)経由で接続する(ProxyJump)
-A認証エージェントのフォワーディングを有効にする
-a認証エージェントのフォワーディングを無効にする
-XX11 フォワーディングを有効にする(信頼レベルは低い扱い)
-Y信頼された X11 フォワーディングを有効にする
-4IPv4 のみを使用して接続する
-6IPv6 のみを使用して接続する
-ossh_config に書くような設定を「オプション名=値」の形式で指定する(例: -o StrictHostKeyChecking=no)
-hssh コマンドの簡易ヘルプを表示して終了する
--versionssh コマンドのバージョン情報を表示して終了する(--version など実装依存)
 

ここでは、OpenSSH の ssh コマンドで一般的によく使われる主なオプションだけを TablePress の表としてまとめている想定です。
実際に利用できるオプションや挙動は、バージョンやディストリビューションによって異なる場合があるため、
本番環境で使用する前に man ssh で最新の仕様を確認してください。

ブログランキングに参加しています。クリックして応援していただけると嬉しいです。




人気ブログランキング


ブログランキング・にほんブログ村へ

にほんブログ村