2008/11/16

ssh-keygenで鍵を作ってrsyncでパスワードなしでファイルを同期

rsyncで自動でsshログインするようにした。

まずは既存の鍵がどのような種類か確認。ssh-keygen -l -f $HOME/.ssh/id_dsa.pub

SSH protocol version 2の場合(暗号強度が弱いため現在非推奨)

DSAキーを生成。
local$ ssh-keygen -t dsa -N ""
Generating public/private dsa key pair.
Enter file in which to save the key (/home/name/.ssh/id_dsa):
Your identification has been saved in /home/name/.ssh/id_dsa.
Your public key has been saved in /home/name/.ssh/id_dsa.pub.
local$ scp -P 22 .ssh/id_dsa.pub name@remote:
remote$ cat id_dsa.pub >>.ssh/authorized_keys2
remote$ chmod 600 .ssh/authorized_keys2

openssh 7に対応させる場合

2048bit以上のRSA証明書を作成する。
local> ssh-keygn -b 2048 -t rsa -N "" (生成するキーファイル名を指定する場合は-fをつける)
local> cd $HOME/.ssh
local> scp -P 22 id_rsa.pub name@remote:
remote> cd $HOME
remote> cat id_rsa.pub >> .ssh/authorized_keys
remote> chmod 600 .ssh/authorized_keys
remote> rm id_rsa.pub

crontabにスクリプトを追加して自動化にさせる

バックアップスクリプトの作成

#!/bin/sh

RSYNC=${RSYNC:-/usr/bin/rsync}
SSH=${SSH:-/usr/bin/ssh}
SSH_PORT=${SSH_PORT:-22}
USER=${USER:-ubuntu}
ORIGINAL_SERVER=${ORIGINAL_SERVER:-hoge.com}
ORIGINAL_DIRECTORY=${ORIGINAL_DIRECTORY:-/some/foo/}
BACKUP_DIRECTORY=${BACKUP_DIRECTORY:-/some/foo}
LOGGER=${LOGGER:-/usr/bin/logger}

$RSYNC -avz -e "$SSH -p $SSH_PORT" $USER@$ORIGINAL_SERVER:$ORIGINAL_DIRECTORY $BACKUP_DIRECTORY

if [ $? = 0 ]; then
  $LOGGER "Backup OK: $0"
else
  $LOGGER "Backup NG: $0"
fi
登録
$ sudo crontab -u name -e
0 12 * * * /sbin/backup.sh

注意としてHOMEディレクトリのotherにrとxの権限がある必要がある。

2011/03/23 追記
ファイルサーバ用のユーザと権限を用意したときにはまりました。/etc/ssh/sshd_configのStrictModesをyesにしていると、groupに対して書き込み許可を出しているときに自動ログインができないんですね。一般ユーザでは自動ログインができていたため、原因をなかなか特定できずにあがきました。/var/log/auth.logをよく見ていれば、

Authentication refused: bad ownership or modes for directory /home/share
というメッセージが表示されていたんですが...

2013/06/18 追記
virtual boxの仮想ファイルのバックアップ時、ローカルマシンの負荷を抑えるように変更した。ioniceってのがあるんですね。

追記

大量・巨大なファイル操作を低負荷で行う方法


新しいCygwinをインストールして痛い目を見ました。突然ログインできなくなったんですね。調べてみるとopenssh 7からDSAがデフォルト無効化になっているためでした。


sshで複数アカウントのBitBucketを使う場合はこことかここを参考

2 件のコメント:

しな さんのコメント...

これ?

Taka さんのコメント...

それそれw