前回、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ライフを送ることができる!