--- title: rsyncでセキュアにローカル-リモート間のバックアップを行う author: kazu634 date: 2008-08-16 url: /2008/08/16/_1075/ wordtwit_post_info: - 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:4211;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}' categories: - linux - rsync - ssh ---
2008-08-09 – 武蔵の日記でid:otuneさんに指摘されたので、もう少しsshについて調べてみた。
ここら辺が参考になる:
ここを読むとauthorized_keysを編集する必要があることがわかる。特に重要なのは
の二つの設定に思える(やや自信なし)。no-ptyはmanに
端末の割り当てを禁止します(仮想端末の割り当てが失敗するようになります)。
とある。要はsshでログインしても、端末にアクセスできなくなる。でも、これだとリダイレクトをしてコマンドを実行できてしまうことになる。参考にしたところではこれが例として取り上げられていた:
$ echo “cat .ssh/authorized_keys2” |ssh -i /home/hiroaki/.ssh/auto remotehost.example.com -l hiroaki
これでは制限していることにならないので、commandでクライアントが使えるコマンドを制限することができる。たとえば
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command=”ls -al” ssh-rsa [以下略]
とすると、クライアントは「ls -al」を実行して接続が終わることになる。
とりあえず私は
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command=”ls -al” ssh-rsa [以下略]
と設定しておいた。*1
rsyncは仕組み上、クライアント側で実行したrsyncがサーバ側のrsyncを実行する形式をとる。だからサーバ側でどのようにrsyncを実行しているかを調べてcommandを指定してあげればいい。
そのために「-v」スイッチをつけてクライアント側でrsyncを実行する。そうすると、サーバ側でどのようなスイッチをつけてrsyncが実行されているかわかる。私の場合はこんな感じだった:
rsync –server –sender -vlogDtprz . /Users/simoom634/Documents/howm
後はこれはauthorized_keysに反映させるだけ。
こんな感じになった:
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command=”rsync –server –sender -vlogDtprz . /Users/simoom634/Documents/howm” ssh-rsa [以下略]
*1:no-port-forwarding, no-X11-forwarding, no-agent-forwardingの意味がいまいち理解できていない…