連載
» 2017年01月26日 05時00分 UPDATE

Linux基本コマンドTips(80):【 ssh 】コマンド――リモートマシンにログインしてコマンドを実行する

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「ssh」コマンドです。

[西村めぐみ,@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、リモートマシンにログインしてコマンドを実行する「ssh」コマンドです。

sshコマンドとは?

 「ssh」は、暗号化された通信を使ってリモート接続をするコマンドです。リモートマシンにログインして、リモートマシン上でコマンドを実行したい場合に使用します。

 なお、接続先のコンピュータでは、「sshd(SSH daemon:SSHのサーバプログラム)」が動作している必要があります。また、インターネット経由で接続する場合には、ルーターなどで外部から接続できるように設定しておく必要もあります。sshコマンドを試してみたい場合には、ローカルネットワーク内のコンピュータや仮想化環境を使用しましょう。

 ssh/sshdによる接続プロトコルを「SSH(Secure Shell)」と呼び、古くからあるバージョン1と、より安全性の高いバージョン2(SSH2)があります。



sshコマンドの書式

ssh [オプション] 接続先

ssh [オプション] [ログイン名@]接続先 [接続先で実行したいコマンド]

※[ ]は省略可能な引数を示しています




sshコマンドの主なオプション

 sshコマンドの主なオプションは次の通りです。

オプション 意味
-p ポート番号 接続に使用するポート番号を指定する
-l ユーザー名 接続に使用するユーザー名を指定する
-i IDファイル 接続に使用する公開鍵ファイルを指定する
-C 全ての通信を圧縮する
-c 暗号化方法 通信を暗号化する方法を指定する(「3des」「blowfish」「des」が指定可能)
-1 SSHv1(SSHプロトコルバージョン1)だけを使用する
-2 SSHv2(SSHプロトコルバージョン2)だけを使用する
-4 IPv4だけを使用する
-6 IPv6だけを使用する
-K GSSAPI(Generic Security Services API)による認証を許可する
-k GSSAPIによる認証を許可しない
-A 認証エージェントを転送する(1つ目のサーバに接続後、続けて別のサーバに接続する際に、最初に使った秘密鍵をそのまま使用する)
-a 認証エージェントを転送しない
-X X11のポートフォワーディングを有効にする(リモートマシンのXアプリケーションが実行できるようになる)
-x X11のポートフォワーディングを無効にする
-Y 信頼されたX11転送(Trusted X11)を有効にする
-f コマンドを実行する際にsshをバックグラウンドにする(Xアプリケーションを実行する際に使用)
-F 設定ファイル 設定ファイルを指定する
-o 設定パラメータ 設定パラメータを指定する(設定ファイルに書かれた内容より優先される)
-E ログファイル名 エラーを指定したファイルに記録する
-q エラーメッセージや診断メッセージを表示しない(quiet mode)
-v デバッグメッセージを表示する(verbose mode)


他のコンピュータにログインする

 「ssh 接続先」で、指定したコンピュータに接続します。この場合は、sshコマンドを実行しているユーザー名で接続先のコンピュータにログインすることになります。別のユーザー名を使用したい場合は、「ssh -l ログイン名 接続先」または「ssh ログイン名@接続先」のように指定します。

 sshコマンドで初めて接続する相手(コンピュータ)の場合は、「Are you sure you want to continue connecting(yes/no)?」というメッセージが表示されます。接続先に間違いがなければ「yes」と入力して、[Enter]キーを押します。

 sshコマンドでコンピュータに接続すると、続いて「ログイン名@接続先 password:」のようなパスワードプロンプトが表示されます。「鍵ファイル」を使ってログインするように設定されている場合は、鍵に設定したパスワードを、鍵ファイルを使用していない場合は、接続先のログインパスワードを入力します。


【※】ssh接続には「公開鍵」と「秘密鍵」の2つの鍵ファイルを使用して接続します。鍵ファイルは「ssh-keygen」コマンドで作成し、公開鍵をサーバに、秘密鍵は自分の手元に置いて管理します。



コマンド実行例

ssh 接続先

ssh ログイン名@接続先

(指定したコンピュータに接続する)(画面1


画面1 画面1 「ssh 接続先」で、指定したコンピュータに接続する


接続先のコンピュータでコマンドを実行する

 sshコマンドで他のコンピュータにログインすると、接続先のプロンプトが表示されます。ここで入力したコマンドは、全て接続先のコンピュータ上で実行されます。

 例えば、以下の画面2では、sshコマンドで接続してから「uname -a」を実行しています。「uname」はシステム情報を表示するコマンドで、ここでは「-a」オプションでカーネルのバージョンやホスト名などを表示しています。

画面2 画面2 sshコマンドで接続したコンピュータ上で「uname -a」コマンドを実行した

 画面2では、比較のために、sshコマンド実行前にも同じ「uname -a」を実行しています。最初の「uname -a」は接続元のコンピュータ上、2回目の「uname -a」は接続先のコンピュータ上で実行している様子が分かります。



実行するコマンドを指定する

 接続先で実行したいコマンドが決まっている場合は、「ssh 接続先 コマンド」のように、あらかじめコマンドを指定することも可能です。この場合、sshで接続してコマンドを実行したら即座に終了します。

コマンド実行例

ssh 接続先 コマンド

(接続先のコンピュータで指定したコマンドを実行する)(画面3


画面3 画面3 「ssh 192.168.2.4 uname -a」のように、接続先のコンピュータ上で実行するコマンドをあらかじめ指定することもできる

 また、リダイレクトで接続元のコンピュータ上に実行結果を保存することも可能です(画面4)。

画面4 画面4 sshで接続して「uname -a」を実行し、実行結果を「tmp.txt」にリダイレクトで保存することも可能


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801N/PC-386MからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、専業ライターとして活動を開始。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。