2011年4月17日日曜日

各種コマンドの ssh オプションの指定

私の管理するサーバの ssh 接続はキーペア認証のみ許可し、また念のためにポート番号を22以外に変更しています。外部からは smtp や http 以外は全て ssh 経由のみで接続していますが、コマンドによって ssh のオプション指定が異なり、いつも man 等を調べ直していますのでまとめました。

rsync -e ssh のオプション

ダブルクォートを使用して、-e ssh のオプションを指定します。下記の例でははポートを9999に変更し、また秘密鍵を ~/.ssh 配下以外の秘密鍵を指定 *1 しています。

$ rsync -av -e "ssh -p 9999 -i /path/to/private/key/id_rsa" \
   username@host:source destination

scp の ssh オプション

scp では -i で秘密鍵、-P でポートを指定します (-p は cp コマンドと同様に、ファイル属性の保持です)。下記の例でははポートを9999に変更し、また秘密鍵を ~/.ssh 配下以外の秘密鍵を指定しています。

$ scp -pr -P 9999 -i /path/to/private/key/id_rsa \
   username@host:source destination

また、-o で ssh のオプションを指定することも可能です。上記と同様の内容を -o で指定する場合、以下となります。

$ scp -pr -o Port=9999 -o IdentityFile=/path/to/private/key/id_rsa \
   username@host:source destination

FUSE sshfs の ssh オプション

sshfs では、scp と同様に -o で ssh オプションを指定します。下記の例でははポートを9999に変更し、また秘密鍵を ~/.ssh 配下以外の秘密鍵を指定しています。

$ scp -pr -o Port=9999 -o IdentityFile=/path/to/private/key/id_rsa \
   username@host:/directory mountpoint

Mercurial の ssh オプション

(2012/05/05 追記)

Mercurial では、-e で ssh コマンドを指定します。下記の例でははポートを9999に変更し、秘密鍵を ~/.ssh 配下以外の秘密鍵を指定しています。また、リモートリポジトリの指定はURI形式 *2 を使用します。

$ hg clone -e "ssh -p 9999 -l username -i /path/to/private/key/id_rsa" \
   ssh://host//absolute/path/to/repository

*1 特に laptop 機では、秘密鍵などの重要なファイルは TrueCrypt の暗号化ボリューム内に置いているためです。

*2 URI は "スキーム名://ホスト名/パス" なので、リモートリポジトリへのパス指定に絶対パスを使用した場合は上記の例のように (ホスト名とパスの間の "/" は2つに) になります。当然ながらログインディレクトリからの相対パスで指定する場合 *3 は ssh://host/relative/path/to/repository です。

*3 通常は絶対パスで指定すると思いますが、ホームディレクトリ配下にリポジトリを置いている場合など、こちらの方が便利なケースもあります。

0 件のコメント:

コメントを投稿