VMWareでssh+svnでsubversionを利用するメモ
以下ではサーバーをsubversion.server、ローカルなホストをvmwareとしてあります。ちなみにVMWareにはFreeBSD6.1が入ってます。
鍵の作成とコピー
デフォルトでは、~/.sshにid_dsaとid_dsa.pubが作られます。id_dsaが秘密鍵、id_dsa.pubが公開鍵です。公開鍵をサーバーにコピーしときます。
kenkiti@vmware> ssh-keygen -t dsa kenkiti@vmware> scp ~/.ssh/id_dsa.pub kenkiti@subversion.server:~/temp
上でコピーした公開鍵をサーバーの~/.ssh/authorized_keysに追加します。ついでにリポジトリも作っておきます。
kenkiti@subversion.server> chmod 600 ~/.ssh/authorized_keys kenkiti@subversion.server> cat ~/temp/id_dsa.pub >> ~/.ssh/authorized_keys # 鍵の追加 kenkiti@subversion.server> rm ~/temp/id_dsa.pub kenkiti@subversion.server> mkdir /home/svn/repos kenkiti@subversion.server> svnadmin create /home/svn/repos # リポジトリ作成 kenkiti@subversion.server> svn import MyProject file:///home/svn/repos -m "initial import" # プロジェクト追加
終わったらとりあえずsshできるか試します。
kenkiti@vmware> ssh -l kenkiti subversion.server Enter passphrase for key '/home/kenkiti/.ssh/id_dsa':(パスフレーズを入力)
sshの設定
うまく接続できたら、以下のような感じでssh/configを作っておくと後々楽です。
kenkiti@vmware> cat ~/.ssh/config Compression yes Host ss Hostname subversion.server # サーバーアドレス User kenkiti Port 22 # Portを変えている場合はここで指定 ServerAliveInterval 10 # sshの接続が切れないように適当にインターバルを指定 ServerAliveCountMax 12 #
ssh-agent
svn+sshする度にパスフレーズを入力するのは面倒なので、ssh-agentを使います。
kenkiti@vmware> eval `ssh-agent -c` Agent pid 804 kenkiti@vmware> ssh-add ~/.ssh/id_dsa Enter passphrase for /home/kenkiti/.ssh/id_dsa: (パスフレーズを入力) Identity added: /home/kenkiti/.ssh/id_dsa (/home/kenkiti/.ssh/id_dsa)
ssh-agentが起動してる間は、パスフレーズなしでsshやscpが出来ます。終了は以下のコマンドで。
kenkiti@vmware> eval `ssh-agent -c -k` Agent pid 804 killed
Puttyで繋いだときにkeychain経由でssh-agentが起動するようkeychainインストール&.loginを編集。
kenkiti@vmware> sudo pkg_add -r keychain kenkiti@vmware> cat ~/.login # start ssh-agent via keychain keychain ~/.ssh/id_dsa source ~/.keychain/$HOST-csh
まとめ
kenkiti@vmware> svn co svn+ssh://ss/home/svn/repos MyProject A MyProject/foo.py A MyProject/bar.py ・・・略・・・ Checked out revision 1.
ところで、SubversionにはCVSROOTのような環境変数ないんだろうか。微妙に面倒だなぁ。。。