タグ別アーカイブ: cwrsync

Windowsでrsync over sshでパスフレーズレス接続

前回、Windows版rsyncのcwrsyncを紹介したが、この際是非パスフレーズレスで使いたくなった。

sshでパスフレーズレス接続するには、ssh-keygenで公開鍵と秘密鍵のペアを作って、認証対象サーバの~/.ssh/authorized_keysに公開鍵をつっこんでおき、認証の際に秘密鍵を使ってログインインする。
超簡単にやり方を書いておこう。

サーバ上で鍵を生成。
~$ ssh-keygen -t RSA
公開鍵を登録。
~$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys

フロッピーなどでid_rsa(秘密鍵の方)をクライアントマシンに転送。

認証している鍵は他の人に読めないように。
~$ chmod 600 .ssh/authorized_keys
鍵を削除
~$ rm .ssh/id_rsa.*

対象サーバじゃなくてクライアント側で鍵のペア作って、サーバに公開鍵をFTPかなんかで送る方が幸せかもしれない。
まあ、どっちでもいい。
あとはWindowsの場合は、teratermなんかsshで接続するときに、その鍵を使えばパスフレーズレスで接続できるようになる。
puttyの場合はputtygenで鍵の形式を変換してやらないと使えないけど、ppk形式に変換してやれば使える。
クライアントマシン側でsshコマンドでやる場合は、-iオプションで秘密鍵を指定してやればいい。

$ eval `ssh-agent`
$ ssh-add 鍵

とかやってクライアントマシン側でssh-agentを起動して、秘密鍵を喰わせておけば指定の必要もない。(その場合は作業が終わったらeval `ssh-agent -k`をして殺しておかないと泣くことになる)
あとは~/.ssh/configをかくかんじか。

で、本題はこれじゃなくて、それをcwrsyncを使って窓マシンからlinuxサーバにrsyncするときに、パスフレーズレスにすることだ。
cwrsyncのbinフォルダをのぞくと、ssh-keygenなんかはあるけどssh-agentはない。
そこで、~/.ssh/configは使えないかと考える。

Windowsのインストールドライブ:Documents and Settingsユーザ名.ssh

をのぞいてみたらknown_hostsがある。
試しにココにconfigファイル作ってみる。

Host waterblue.net
User ユーザ名
IdentityFile 鍵ファイルのパス(C:keyid_rsaなら/cygdrive/c/key/id_rsa)
Protocol 2

で、コマンドラインからssh waterblue.netとしたら。

H:>ssh waterblue.net
Linux debian 2.6.29-1-amd64 #1 SMP Fri Apr 17 10:12:36 UTC 2009 x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
You have mail.
Last login: Thu Apr 30 22:59:06 2009 from xxx.xxx.xxx.xxx
~$

キタ━━━━━━(゚∀゚)━━━━━━ !!!!!

ここでrsyncをドライランでたたいてみる。

H:>rsync -a –progress -v -n /cygdrive/f/test waterblue.net:/home/ユーザ名/rsync
sending incremental file list
test/
test/test.txt

sent 85 bytes  received 19 bytes  69.33 bytes/sec
total size is 6  speedup is 0.06 (DRY RUN)

ユーザ名もパスワードもきかれないでいけたよママン!

これで窓でも快適なrsyncライフを送ることができる!

rsyncのWindows版

rsyncについてこの間書いたが、Windows版も無いものかと思って探してみた。
あった
cwrsyncというやつ。
早速ダウンロードしてインストールしてみた。

インストール先のフォルダにbinフォルダがあり、そこの中はこんな感じ。

cwrsync

どうやらcygwinから必要なものを引っこ抜いてパッケージングしたもののようだ。

とりあえず、環境変数のPATHに「インストール先のフォルダbin」を追加する。
コマンドラインからrsync -hをたたいてみたらrsyncのヘルプがでてきた。
ssh.exeが見えたので、ためしにsshでLinuxサーバに接続してみたところ、できた。
これは、使える!

とりあえず、testフォルダとtest.txtを作成して動作実験してみる。
リモートのサーバでrsyncで同期をとるための~/rsyncディレクトリを作成、Windows側でF:testtest.txtを作成。
コマンドラインから動作テストをしてみる。

H:>rsync -a –progress -v -n /cygdrive/f/test USER@waterblue.net:/home/USER/rsync
Password:
sending incremental file list
test/
test/test.txt

sent 85 bytes  received 19 bytes  12.24 bytes/sec
total size is 6  speedup is 0.06 (DRY RUN)

いけた!
Windows側のパスの扱いは予想通りcygwinと同じ、/cygdrive/Windowsドライブ名/で参照できるようだ。

スタートメニューからcwrsyncを選択して、1. Batch exampleを選択すると、rsyncを使ってのバックアップをするためのひな形ファイルがでてくる。
ダブルクリックで一発でいけるようにしたいなら、このファイルを編集して設定をしておくといいだろう。

さて、とするとパスフレーズレスで接続できるようにしたい。
それについては次のエントリーで。