--- 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について調べてみた。

sshで接続したクライアントの利用を制限するのはサーバ側のauthorized_keys

ここら辺が参考になる:

ここを読むと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

後はcommandの設定のみ

rsyncは仕組み上、クライアント側で実行したrsyncがサーバ側のrsyncを実行する形式をとる。だからサーバ側でどのようにrsyncを実行しているかを調べてcommandを指定してあげればいい。

そのために「-v」スイッチをつけてクライアント側でrsyncを実行する。そうすると、サーバ側でどのようなスイッチをつけてrsyncが実行されているかわかる。私の場合はこんな感じだった:

rsync –server –sender -vlogDtprz . /Users/simoom634/Documents/howm

後はこれはauthorized_keysに反映させるだけ。

結局できあがった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の意味がいまいち理解できていない…