2016-12-23 23 views
1

我建立了一個svn倉庫,我想通過svn + ssh訪問。如果在authorized_keys中給出「svnserve -t」,如何通過ssh登錄?

爲此,我遵循http://svnbook.red-bean.com/en/1.7/svn-book.pdf中給出的說明。也就是,我編輯了〜/ .ssh/authorized_keys文件以包含以下行:

command =「svnserve -t -r/home/USER/svn --config-file =/home/USER/svn/conf/svnserve.conf --tunnel-user = SVN-USER「ssh-rsa PUBLIC-KEY USERNAME-COMMENT

我成功通過svn-ssh執行結帳,提交等操作 - 所以給出的指令在前面提到的PDF工作中。但是,由於我添加了該行,因此無法再通過普通的SSH登錄服務器。登錄時,控制檯將顯示:

(成功(2 2()(edit-pipeline svndiff1缺席條目提交-repprops深度日誌-repprops原子-repprops部分重播inherited-props ephemeral -txnprops file-revs-反向)))

只要我輸入任何東西到控制檯,我斷開連接。

我想這是因爲命令svnserve在登錄時執行。但是,指令說我仍然可以通過ssh訪問。那爲什麼不是我?任何提示我需要做什麼,我仍然能夠通過ssh訪問我的服務器,而不會失去通過svn + ssh訪問我的存儲庫的能力?

回答

1

只有在密鑰旁邊的authorized_keys中出現「command」後,您才能夠登錄。在PDF中提到,該命令將在任何登錄嘗試中執行。

有一招你可以使用。有兩組密鑰,一個用於登錄,另一個用於SVN工作。這是可行的,因爲只有在關聯密鑰實際用於登錄時才執行該命令。

在你從你登錄的主機上可能有2個文件:.ssh/id_rsa和.ssh/id_rsa.pub。您需要創建一個新對「ssh-keygen -f〜/ .ssh/id_login」。將〜/ .ssh/id_login.pub的內容複製到目標主機上的authorized_keys,然後當你登錄到該主機時使用「ssh -i〜/ .ssh/id_login HOST」。

基本上你應該有2號線在authorized_keys中:

command="svnserve -t ..." TYPE1 KEY1 [email protected] 
TYPE2 KEY2 [email protected] 

要使用自動身份可能以下行添加到您的工作站上的.ssh /配置:

Host destHost 
    Hostname destination_host_name 
    IdentityFile ~/.ssh/id_rsa 

Host destHostlogin 
    Hostname destination_host_name 
    IdentityFile ~/.ssh/id_login 

你可以定義你想要的任何主機標籤讓它更容易,並使用「ssh label」連接。