前回、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:\key\id_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版も無いものかと思って探してみた。
あった。
cwrsyncというやつ。
早速ダウンロードしてインストールしてみた。
インストール先のフォルダにbinフォルダがあり、そこの中はこんな感じ。
どうやらcygwinから必要なものを引っこ抜いてパッケージングしたもののようだ。
とりあえず、環境変数のPATHに「インストール先のフォルダ\bin」を追加する。
コマンドラインからrsync -hをたたいてみたらrsyncのヘルプがでてきた。
ssh.exeが見えたので、ためしにsshでLinuxサーバに接続してみたところ、できた。
これは、使える!
とりあえず、testフォルダとtest.txtを作成して動作実験してみる。
リモートのサーバでrsyncで同期をとるための~/rsyncディレクトリを作成、Windows側でF:\test\test.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を使ってのバックアップをするためのひな形ファイルがでてくる。
ダブルクリックで一発でいけるようにしたいなら、このファイルを編集して設定をしておくといいだろう。
さて、とするとパスフレーズレスで接続できるようにしたい。
それについては次のエントリーで。

Categories
Tag Cloud
Blog RSS
Comments RSS
Last 50 Posts
Back
Void « Default
Life
Earth
Wind
Water
Fire
Light 