2011-03-16 145 views

回答

39

一個選項是使用ssh-agent並提供一個文件名到ssh-add

例如:

$ ssh-agent /bin/bash 
$ ssh-add ~/mykeys/id_rsa 
+0

它沒有工作。 $ ssh-agent/bin/bash $ ssh-add/home/deepakkv/gitkeys/id_rsa 加入身份:/ home/deepakkv/gitkeys/id_rsa $ git push origin master 權限被拒絕(publickey)。 致命:遠程端意外掛斷 $ – deepujain 2013-10-18 14:01:02

+0

git使用了你的私鑰,所以它看起來像這部分工作。可能在服務器端缺少某些東西(錯誤的密鑰,未註冊的密鑰等)。)你可能想問一個新的問題。 – vhallac 2013-10-20 05:01:31

11

我會說~/.ssh/config把文件名,但你可能不會有訪問此文件了。

您可以給ssh私鑰使用-i keyfile選項。

現在怎麼說git哪些選項傳遞給ssh?

GitTips page說創建一個包裝腳本並指向GIT_SSH環境變量。

它看起來像你也可以使用git配置core.gitProxy,但我沒有找到一個很好的例子,some mailing list message暗示它只適用於git:協議。

+0

@ dragon788感謝您修復鏈接,但您可以鏈接到該頁面的正確部分(如我現在所做的那樣)。 (下次只是一個提示。) – 2016-07-14 21:43:51

+0

從原始文章名稱中我不太確定,並且鏈接它是否有意指向特定部分,因爲鏈接名稱是現在指向的「Gittips頁面」。我還試圖添加GIT_SSH_COMMAND,因爲這顯然是一個支持的環境變量,但當時我只是想修復斷開的鏈接。 – dragon788 2016-07-14 22:03:43

45

您可以使用ssh config file來實現。

首先創建一個文件,你的名爲config~/.ssh文件夾內,你可以使用一些如下命令

$ nano ~/.ssh/config 

然後,該文件的內容應該有你的關鍵的基礎上每個主機名的位置。例如:

Host github.com 
IdentityFile ~/myPublicKeyFolder/myGitHubFile 
Host heroku.com 
IdentityFile ~/myPublicKeyFolder/myHerokuFile 

所以,當混帳試圖訪問每個主機將遵循基於Git的這個配置文件中的規則,承載您試圖達到

+1

這非常酷,因爲它也適用於Windows上的git。 – 2012-09-26 13:28:38

+0

在linux中沒有工作。 – deepujain 2013-10-18 14:05:28

+1

@deepujain哪個linux? – 2013-10-18 23:59:51

1

對於一個項目,我的工作我的應用程序需要使用所有的git命令來吐出一個shell腳本來初始化/提交/推送到外部存儲庫。 〜/ .ssh/config不受限制,所以我在我的應用程序目錄中有公鑰/私鑰。我用vhallac的答案。這是我在我的shell腳本來完成用我的鑰匙:

eval `/usr/bin/ssh-agent` 
ssh-add /path/to/.ssh/id_rsa 

希望這可以幫助別人

4

使用ssh-agent

ssh-agent bash -c 'ssh-add /home/me/my_private_key; git clone [email protected]:uname/test-git-repo.git'