提供cvs only的ssh服務

 摘抄自http://www.akeysoft.com

今天配置了通過ssh提供的cvs服務:

安裝了sshd後,創建使用cvs的帳戶。不過這些帳戶的開通使得cvs的用戶可以通過ssh登錄到cvs服務器上執行命令。爲了限制cvs用戶只能通過ssh使用cvs功能,我用Google找到了兩個方法。

方法一:關閉ssh的密碼認證功能,讓ssh服務必須通過密鑰(證書)認證,並在服務器上的認證證書文件的證書前加上command選項限制ssh登錄後的執行命令。這個方法不太好,用戶通過ssh連接到服務器後,就進入cvs的服務命令狀態,沒有任何提示。

方法二:建立一個腳本作爲用戶登錄後的shell,腳本的內容爲判定執行的命令,如果是cvs命令則執行,否則顯示提示信息後退出。我選擇了這個方法,建立了下面的腳本文件(文件名爲cvsonly):

#!/bin/sh

if [ "$*" != "-c cvs server" ]; then
    echo "CVS Only!";
    exit;
fi;
cvs server

腳本存放在/usr/local/bin下,通過chmod 755加上執行權限。

然後在/etc/passwd中將只允許使用ssh訪問cvs的用戶的shell替換成上面的腳本即可。

在cygwin上也可以用類似的方式進行配置。(實際上我就是在cygwin環境下這樣配置的,Linux上反而還沒有試驗。)

另外,爲了更加安全可以在上面的腳本的最後一行cvs server後加參數--allow-root,防止cvs訪問cvsroot之外的文件系統。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章