Linuxのcron実行で、サーバAの/home/hoge/foo.txtというファイルをサーバBにscpする方法を教えてください。(sshでrsyncでもかまいません)


1点次のような制約があります。

サーバAからサーバBへssh不可のため、サーバBからAにたいして実行するような仕掛けになります。

下記は参照済みですが、いずれも両方向のsshが可能な状態をさしていると解釈しています。
http://sonic64.com/2004-11-17.html
http://www.erde.co.jp/~katsu/wiki/index.php?rsync%20over%20ssh%20%A4%F2%BB%C8%A4%C3%A4%C6%A5%D0%A5%C3%A5%AF%A5%A2%A5%C3%A5%D7
http://www-06.ibm.com/jp/developerworks/linux/040723/j_l-backup.html
http://www.jitaku-server.net/backup_ssh.html
http://diary.atzm.org/20060817.html

回答の条件
  • URL必須
  • 1人1回まで
  • 登録:2006/09/11 17:36:27
  • 終了:2006/09/11 18:57:30

ベストアンサー

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402006/09/11 18:04:31

ポイント60pt

両方向に ssh 出来なくてもやることはほぼ同じだとおもいます。

いかリンク先のページを纏めただけですが、

serverB$ ssh-keygen -t dsa

で key を作成。パスフレーズを聞かれたらそのまま Enter を押してください。

(自動処理用にパスフレーズ無しにします)

その後、serverB:.ssh/id_dsa.pub を serverA:/home/hoge/.ssh/authorized_keys を追記します。

注意事項としてファイル名が authorized_keys2 の可能性があることとすでに存在する場合は追記にすること。

あと、ファイルパーミッションが 600 となるように気をつけてください。

ここまでで自動化の前段階としての公開鍵の作成と登録は終わりです。

serverB$ ssh hoge@serverA

として初回のみ yes/no を聞かれ、2回目以降は何もでない(すでに聞かれている場合は1回目から何も出ない)で serverA にログインできることを確認してください。


あとはコピースクリプトを書くだけですので、serverB に

#!/bin/sh

scp serverA:/home/hoge/foo.txt /path/to/backup/

等といったファイルを作成し、cron で実行するのみです。

rsync の場合もほぼ同様で、

#!/bin/sh

rsync -e ssh serverA:/home/hoge/foo.txt /path/to/backup/

で同様です。毎回少しずつの変更であれば rsync の方が圧倒的に早いです。


以上で設定は完了ですが、リンク先ページで指摘されているようにセキュリティ上の懸念が残りますので、

serverA での SHELL を scponly 等の制限された SHELL に変更することをオススメします。

http://q.hatena.ne.jp/1157963785

id:P-mako

ご回答ありがとうございました。

きれいに整理していただいた内容のとおりでcron実行可能でした。

おそらくNGだったのは、keychainで問題なくsshできていたからで、やはりパスフレーズを設定してはいけないということなんですね。

2006/09/11 18:56:59

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません