2016-06-07 45 views
9

是否可以使用ssh和身份文件(使用私鑰)訪問(fetch/push)遠程存儲庫在文件中添加一個條目~/.ssh/config如:Git:使用密鑰文件使用密鑰文件訪問遠程存儲庫但不使用〜/ .ssh/config

Host tingle 
    HostName 111.222.333.444 
    User git 
    IdentityFile c/tmp/my_id_rsa 

一切配置~/.ssh/config文件時工作正常。然而,我們有一個腳本,它可以從遠程倉庫克隆,檢查,開始測試,提交結果並推送它們。該腳本需要在任何機器上運行,而無需觸摸ssh配置文件。

+0

你能創建一個自定義的配置文件,只有在你需要它的地方纔能使用(例如'ssh tingle -F my_custom_config')? – Ownaginatious

+0

這個答案可能會有用。我在本週早些時候尋找類似的東西時偶然發現了它。 http://stackoverflow.com/a/4565746/1789724 – austin

+0

檢查這裏的帖子: > http://stackoverflow.com/questions/7927750/specify-an-ssh-key-for-git-push-for-a -given-domain – prateek05

回答

4

您可以覆蓋$GIT_SSH環境變量來使用自己的私鑰:

首先,創建一個包裝腳本。讓我們假設,我們把它叫做gitssh.sh

#!/bin/bash 
ssh -i /path/to/mykey "[email protected]" 

然後,點$GIT_SSH它:

export GIT_SSH=/path/to/gitssh.sh 

現在,只要您通過ssh運行git的命令,將這個腳本取代,並引用您的鍵。

6

您可以使用變量$GIT_SSH(請參閱documentation)設置被調用的程序而不是ssh。

這樣你可以,例如不要 GIT_SSH=/my/own/ssh git clone https://my.own/repo.git

適應的/my/own/ssh內容到你自己的需要,例如:

#!/bin/bash 
# Wrapper for ssh, to use identity file and known hosts file 
exec /usr/bin/ssh -i /my/own/identity_file-o UserKnownHostsFile=/my/own/hosts.file "[email protected]" 

據我所知這是目前要做到這一點,而沒有凌亂的路徑的操作的唯一途徑。

+1

這有效。如果我們的腳本創建一個自己的主機配置文件並添加到包裝中,特別方便:exec/usr/bin/ssh - F our_ssh_host「$ @」 –

3

下應該做的伎倆

GIT_SSH_COMMAND="ssh -i c/tmp/my_id_rsa" git push 

這允許您參數添加到SSH執行,而不需要額外的腳本文件。

根據您的腳本,您可以通過GIT中的實際執行之前定義和導出環境變量GIT_SSH_COMMAND微調這樣或使用if等只使用它時,你與tingle

通信。在您的配置文件你也提到用戶和主機。這應該已經成爲git遠程定義的一部分。如果你仍然需要覆蓋這個,你可以將這些添加到上面的命令定義中。

一個註釋上面的命令不檢查實際上由git調用哪個主機。但是如果你絕望的話,你可以嘗試用這個「技巧」來構建一個內聯shell腳本,它檢查主機名並模仿配置文件主機限制;-)。

擔任首發,將可能是這樣的: GIT_SSH_COMMAND="bash -c \"if [ \\\"$1\\\" = \\\"[email protected]\\\" ] ; then ssh -i c/tmp/my_id_rsa [email protected] ; else ssh [email protected] ; fi \" -- " git push

我沒有測試這一點,並注意引用;-)的。這是爲了絕望。

2

如果你想使用自定義的SSH密鑰你可以用這個嘗試:

ssh-agent bash -c 'ssh-add /path/to/your/id_rsa; git clone [email protected]:repo' 

這樣,你不需要寫/編輯任何配置文件或修改您的環境。

-1

您可以使用.pem文件創建到GIT服務器

SSH -i安全連接 「yourfile.pem」 yourHostName.com

。質子交換膜不過是像擁有關鍵信息的證書文件。

  • 第一步是生成密鑰對和PEM文件。
  • 下一步是使用SSH,第一次使用密碼,在命令行上將證書上傳到遠程服務器。
  • 最後一步,測試連接客戶端到服務器而不使用密碼。

結賬http://www.beginninglinux.com/home/server-administration/openssh-keys-certificates-authentication-pem-pub-crt!你可以在這裏找到更多關於這個方法的細節。

相關問題