綾小路龍之介の素人思考

[cvs] sshパスフレーズ無し鍵ペアで自動化。

cvsでsshを使ってupdate checkoutする時に、パスフレーズ無しの鍵ペアを使う。cron等で自動化するときに便利。

パスフレーズ無しの鍵ペアを作成する。

$ ssh-keygen -N "" -f ~/.ssh/auto_execute
Generating public/private rsa key pair.
Your identification has been saved in /*******/.ssh/auto_execute.
Your public key has been saved in /*******/.ssh/auto_execute.pub.
The key fingerprint is:
*********************************************** **@*********************
The key's randomart image is:
+--[ RSA 2048]----+
|*****************|
|*****************|
|*****************|
|*****************|
|*****************|
|*****************|
|*****************|
|*****************|
|*****************|
+-----------------+
$ ls /*******/.ssh/auto_execute* -la
-rw------- 1 ** ** 1675 ****-**-** **:** /*******/.ssh/auto_execute
-rw-r--r-- 1 ** **  406 ****-**-** **:** /*******/.ssh/auto_execute.pub
$ cat /*******/.ssh/auto_execute.pub
ssh-rsa ************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************ **@*********************
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="cvs server"

上で作ったパスフレーズ無しの専用鍵をつかうための設定を~/.ssh/configに書き込む。

$ cat ~/.ssh/config
Host cvs_debian_org
    HostName cvs.debian.org
    IdentityFile ~/.ssh/auto_execute

マニュアルを読むと下のようにしてcvsにアクセスする方法が述べられている。今回はこれを用いない。

$ export CVS_RSH=ssh
$ cvs -d :ext:****************@cvs.debian.org:/cvs/webwml checkout -l webwml

パスフレーズ無しの鍵を使ってcvsでアクセスする場合には、以下のようにして~/.ssh/configのhostの後ろに書いたホスト名を使う。

$ export CVS_RSH=ssh
$ cvs -d :ext:****************@cvs_debian_org:/cvs/webwml checkout -l webwml

作成したパスフレーズ無しの専用鍵をホストの~/.ssh/authorized_keys に書き込む。このとき、オプションを追加し、さらにcommandオプションを以下のようにしておく。このオプションは全てのssh経由の入力を無視して、commandオプションで指定したコマンドを実行して接続を閉じる。これでcvsが発行するコマンドを確認する。

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="echo $SSH_ORIGINAL_COMMAND" ssh-rsa ************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************

この状態でcvsコマンドを使うと、以下のようになる。cvsサーバがcvs serverというレスポンスを返したと表示されるが、これは上で指定したcommandオプションの引数の戻り値。つまりcvsコマンドが発行したコマンド。

$ CVS_RSH=ssh cvs -d :ext:****************@cvs_debian_org:/cvs/webwml checkout -l webwml
cvs checkout: warning: unrecognized response `cvs server' from cvs server
cvs [checkout aborted]: end of file from server (consult above messages if any)

この鍵ペアを使う場合は何があってもcvs serverしか実行させないようにするには、commandオプションに"cvs server"を指定すればよい。

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="cvs server" ssh-rsa ************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************

再度cvsで確認。チェックアウトが成功していることが確認できる。

$ CVS_RSH=ssh cvs -d :ext:****************@cvs_debian_org:/cvs/webwml checkout -l webwml
cvs checkout: Updating webwml

これ以降は通常通りupdateすればよい。パスフレーズは聞かれない。つまり、crontab に登録するコマンドに使える。

$ cvs update

リファレンス

  1. Debian -- CVS の利用方法
  2. Alioth/SSH - Debian Wiki
  3. sshで公開鍵ごとにコマンド制限する際の注意点1 - 技術メモ帳
  4. SSH_ORIGINAL_COMMAND - Google 検索
  5. Setting up a CVS server via SSH
  6. ssh scp sftp の正しい自動実行方法
  7. cvs no-port-forwarding no-X11-forwarding no-agent-forwarding no-pty command - Google 検索
  8. 入門OpenSSH / 第5章 より安全に運用するために
  9. 入門OpenSSH / 第4章 OpenSSH を使う
  10. 入門OpenSSH / 第6章 すすんだ使い方
  11. 学外からのCVSアクセス
  12. Anonymous CVS
  13. cvs ssh config IdentityFile - Google 検索
  14. SSHD (8)
  15. SSH-KEYGEN (1)

ソーシャルブックマーク

  1. はてなブックマーク
  2. Google Bookmarks
  3. del.icio.us

ChangeLog

  1. Posted: 2010-05-23T13:06:58+09:00
  2. Modified: 2010-05-23T13:06:58+09:00
  3. Generated: 2017-06-19T23:09:17+09:00