我試圖在沒有ssh的情況下運行git clone
檢查存儲庫主機的密鑰。我可以這樣做從這樣的SSH:將ssh選項傳遞給git克隆
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no [email protected]
有沒有什麼辦法可以將相同的SSH選項傳遞給git clone命令?
編輯:有一個限制,我不能修改~/.ssh/config
或該機器上的任何其他文件。
我試圖在沒有ssh的情況下運行git clone
檢查存儲庫主機的密鑰。我可以這樣做從這樣的SSH:將ssh選項傳遞給git克隆
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no [email protected]
有沒有什麼辦法可以將相同的SSH選項傳遞給git clone命令?
編輯:有一個限制,我不能修改~/.ssh/config
或該機器上的任何其他文件。
它們添加到您的~/.ssh/config
:
Host host
HostName host
User user
SshOption1 Value1
SshOption2 Value2
的Host
項是什麼,你會在命令行中指定,而HostName
是真正的主機名。它們可以是相同的,或者Host
條目可以是別名。如果您沒有在命令行中指定[email protected]
,則使用User
條目。
如果您必須在命令行上對其進行配置,請將GIT_SSH
環境變量設置爲指向一個包含您的選項的腳本。
我忘了說我無法修改該機器上的任何文件。否則,是的,你的解決方案將工作。 –
使用'GIT_SSH'環境變量。 –
謝謝,這工作! –
這裏是棘手的例子,如何使用GIT_SSH變量傳遞ssh的參數:
$ echo 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $*' > ssh
$ chmod +x ssh
$ GIT_TRACE=1 GIT_SSH="$PWD/ssh" git clone [email protected]
注:以上線路都是你應該粘貼到你的終端終端的命令行。它會創建一個文件ssh,使其可執行並執行它。
如果您想通過私鑰選項,請檢查How to tell git which private key to use?。
最近發佈的git 2.3支持一個新變量「GIT_SSH_COMMAND」,它可以用來定義一個帶有參數的命令。
$GIT_SSH_COMMAND
優先於$GIT_SSH
,並且是 由外殼,其允許額外的參數被包括 解釋。
'git clone'之前是否應該有新行或代碼是否正確? –
這應該是正確的,沒有換行符,應該爲以下命令設置變量。如果你添加一個換行符,你需要導出變量,那麼它也應該工作。 – Boris
謝謝,我已經堅持了2天! –
另一種選擇由以指定不同的密鑰是git config core.sshCommand
與GIT 2.10+(Q3 2016)
commit 3c8ede3參見描述的環境變量的替換(26 2016年6月)作者:Nguyễn Thái Ngọc Duy (pclouds
)。
(由Junio C Hamano -- gitster
--在commit dc21164合併,2016年7月19日)
一個新的配置變量
core.sshCommand
已被添加到 指定哪些值GIT_SSH_COMMAND每庫使用。與
$GIT_ASKPASS
或$GIT_PROXY_COMMAND
類似,我們也從 讀取配置文件,然後回落到$GIT_SSH_COMMAND
。這是用於選擇不同的私鑰靶向的 同一主機(例如github上)
core.sshCommand:
如果該變量被設置,
git fetch
和git push
將使用指定的命令,而不是有用ssh
當他們需要連接到遠程系統。
該命令與GIT_SSH_COMMAND
環境變量的格式相同,並且在設置環境變量時被覆蓋。
這意味着git clone
可以是:
cd /path/to/my/repo
git config core.sshCommand 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
# later on
git clone host:repo.git
如果你想申請,對所有回購,如user1300959增加in the comments,你可以使用一個全局配置
git config --global core.sshCommand ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no
我認爲更新git版本> = 2.3並使用GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone [email protected]
是賭注選項,但如果不可行,@ josh-lee給出了一個不錯的選擇,但請更新您的答案縮進SSH配置文件。
Host host
HostName host
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
你試圖做的事情非常危險,你可能不應該這樣做。在大多數情況下,如果遠程SSH服務器的身份是一個壞主意,則禁用驗證。您可以有效地禁用通過使用SSH獲得的所有安全性,並打開自己的中間人攻擊。 – aef