如何在Linux實現Subclipse訪問svn+ssh協議的Repository

來源:互聯網
上載者:User
svn+ssh原理簡介

網上大多數的文章都是在介紹如何在windows環境下配置Subclipse,使用之能訪問svn+ssh協議的Reposiotry,這裡介紹一下在linux環境下如何?。
簡單地說,svn+ssh是以ssh通道建立SVN通訊的。一般搭建svn+ssh類型的repository,都是在Linux伺服器上通過ssh-keygen產生兩把鑰匙,一把公開金鑰,一把私密金鑰,公開金鑰放置在伺服器端,私密金鑰放在用戶端,持有私密金鑰的用戶端使用者通過ssh通道,向伺服器發出串連請求,伺服器要求輸入linux系統使用者的密碼短語(passphrase),如果使用者密碼短語正確,再檢驗使用者手上的私密金鑰和伺服器上的公開金鑰是否配對,如果配對,就通過請求;否則提示錯,拒絕使用者請求。關於如何在Linux伺服器上搭建SVN+SSH協議的Reposiotry,請參考:http://jimmyg.org/blog/2007/subversion-over-svnssh-on-debian.html ,該文給出出非常詳細的說明。

匯入密鑰,登入ssh主機

下面,我們越過伺服器的密鑰產生和配置工作,專註地看一下linux用戶端如何使用Subclipse訪問svn+ssh主機。

作為一般的開發人員,如果你的團隊使用svn+ssh協議搭建Reposiotry,那麼,當你加入團隊準備開發時,一定會有人發給你一個私密金鑰檔案和一個密碼短語(passphrase),對於私密金鑰檔案,可能是有兩種格式,你必須知道你手上的是哪一個格式,這兩種格式是分別是:

1. 以.ppk結尾的putty格式的私密金鑰檔案(putty private key),這是一種文字檔,其內容大概如下:

2. 另一種也是純文字檔案,無固定尾碼名,一般是.txt或是無尾碼,這是伺服器端使用openssh產生的原始的openssh格式的私密金鑰檔案,其內容大概如下:

在linux環境下,如裡你得到私密金鑰檔案是後者,那麼可以直接在linux下使用,如果你得到的是前者,一個ppk檔案,那麼你需要使用putty將其轉換為openssh格式,轉換方法非常簡單:開啟puttygen.exe -> conversations -> import key -> 選中你的ppk檔案後回到主視窗 -> conversations -> export OpenSSH key 即可。

假定我們已經拿到了或是轉換好了openssh格式的私密金鑰,接下來,我們來看如何使用這個檔案登入ssh主機。假如你的帳號是user,目錄主機是svn.abc.com,使用ssh命令,我們可以用兩種方式登入:

方式一:顯示地使用 -i 參數指定私密金鑰檔案:

ssh -i /path/to/private-key/ user@svn.abc.com

中途提示passphase,輸入passphase即可。

方式二:ssh預設會自動從使用者home目錄下的.ssh檔案夾下搜尋私密金鑰檔案,因此,更為方便的做法是將私密金鑰檔案放到.ssh檔案夾下。(如果你的home檔案夾下沒有.ssh檔案夾,請先通過mkdir ~/.ssh建立)。放置在.ssh檔案夾的私密金鑰檔案的命名也是有規定的,查看ssh命令說明,我們看到主要的私密金鑰檔案按加密方式規定了預設檔案名稱:
     ~/.ssh/identity
     ~/.ssh/id_dsa
     ~/.ssh/id_ecdsa
     ~/.ssh/id_rsa
             Contains the private key for authentication.  These files contain sensitive data and should be readable
             by the user but not accessible by others (read/write/execute).  ssh will simply ignore a private key
             file if it is accessible by others.  It is possible to specify a passphrase when generating the key
             which will be used to encrypt the sensitive part of this file using 3DES.
假如我們得到的私密金鑰是使用rsa加密的,使用如下命令將密鑰拷貝到指定位置:

scp /path/to/private-key/ ~/.ssh/id_rsa

複製完成後,直接使用:

ssh user@svn.abc.com

看能否登入,如果功能登入表示私密金鑰已經放置到正確位置。如果出現問題,可以追加參數 -vvv 查看日誌。

配置subclipse,使之能夠訪問svn+ssh的Repository

這一步非常簡單,和windows上的做法一樣,並不需要subclipse做任何配置,只要添加一個環境變數:SVN_SSH就可以了,但是和網上一些文章所提到的只需要將SVN_SSH設定為一個指定私密金鑰檔案的ssh命令,如:
export SVN_SSH="ssh -i /path/to/private-key/
不同的是,在我的環境下,必須設定登入使用者名稱和主機才有效,即,我的SVN_SSH是這個樣子:

export SVN_SSH="ssh user@svn.abc.com"

沒有顯示指定私密金鑰檔案是因為它已放置到預設位置。

SVN_SSH環境設定好以後,重新登入系統,開啟eclipse,使用subclipse建立svn+ssh類型的repository就可以訪問了。

使用ssh-agent和ssh-add緩衝密碼短語passphrase

使用subclipse成功訪問vn+ssh類型的repository後,一個問題就是每次操作都需要輸入passphrase,非常繁瑣。在windows下,可以使用putty的pageant緩衝passphrase,在windows下,使用的是ssh-agent和ssh-add

首先執行:

$ ssh-agent
然後再執行:
$ ssh-add
系統會提示你為指定的私密金鑰輸入passphase,輸入後,再使用subcipse進行檢出/入時就不會再要求輸入passphrase了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.