前回に引き続き、今回もOpenSSHのクライアントの利用方法について説明していこう。 ssh によってログインすると、ssh は仮想端末を割り当てる。しかし仮想端末を割り当てずにいきなりリモートホスト上でのコマンドを、$ ssh -1 -t office@sshd.office.ac ls work/というように ssh の引数としてコマンド文字列を指定することによって実行することもできる。この場合、リモートホストのコマンドを引数に持つ ssh を入力するとまず、Enter passphrase for RSA key 'office@sshd.office.ac':という具合にパスフレーズの入力を求められ、その後に望むリモートホストでのコマンドが実行される。このような ssh を用いたリモートホストコマンドの実行は、例えばパイプを使ってファイル転送等に応用することもできる。ローカルホストのworkディレクトリを中のファイルごとリモートホストに転送するには、$ tar -cf - work/ | ssh -1 -C office@sshd.office.ac tar -xvfとすることができまる。なおこの例では -C を指定してgzipと同じ方式で圧縮転送しているので、tar には -z などのオプションを指定する必要はない。 この ssh の後ろにコマンド指定する方法は、ジョブ制御や画面制御をリモートで実行しようとする時にはうまくいかないので、例えばリモートホスト上で使うシェルを指定しようとするような場合には、$ ssh -1 -t office@sshd.office.ac tcshという具合に、引数としてシェルの起動コマンドを指定するだけでなく、-t オプションをつける。この方法でアプリケーションを起動するとコマンド入力作用先はローカルホストに戻ってきてしまっているので、該当アプリケーションをそのままControl-Cで止めることはできない。 普通に ssh でログインすると仮想端末を割り当てられるので、Control-Cや、Control-Zなどのコマンドはローカルホストにではなく、リモートホストへ送られリモートホストに作用する。逆に言うと、これらの制御コマンドを ssh 自体に送って ssh の接続を中断するなどの制御をすることができない。ログイン中の ssh そのものの操作はエスケープシークエンスという特定のキー操作をして行う。 エスケープシークエンスは、まずコマンドラインの行頭で ~ (チルダ)キーを押して ssh 制御のモードに入り、それに続いて制御のためのコマンド用キーを押して行うことができる。 ~ に続くキー押下とそのコマンドの意味は、次の表のとおり。officeoffice@ukky.nethttp://www.offife.ac/(詳しくはScan本誌をご覧ください)http://www.vagabond.co.jp/vv/m-sc.htm