3 回答

TA貢獻1982條經驗 獲得超2個贊
試試ssh-add
,你需要ssh-agent
運行并持有你的私鑰
(好的,回應更新的問題,你首先運行ssh-keygen
生成一個公鑰和私鑰,如Jefromi所 解釋的。你把公鑰放在服務器上。你應該使用密碼,如果你沒有,你有相同的平原- 私鑰中的文字密碼。但是當你這樣做時,你需要作為一個實際問題ssh-agent
,如下所述。)
您希望ssh-agent
在登錄時在后臺運行。登錄后,想法是只運行ssh-add
一次,以便為代理提供密碼,以解碼密鑰。然后代理只是在你的鑰匙解鎖和加載的情況下坐在內存中,每次你在某個地方ssh時都可以使用。
然后,所有ssh-family命令1將咨詢代理并自動使用您的私鑰。
在OSX(錯誤,macOS)上,GNOME和KDE系統ssh-agent
通常會自動為您啟動。我將詳細介紹細節,就像我一樣,你也有一個Cygwin或其他Windows環境,你肯定不會這樣做。
從這里開始:man ssh-agent
。
有多種方法可以自動運行代理。如手冊頁所述,您可以運行它,使其成為所有登錄會話的其他進程的父級。這樣,它提供的環境變量將自動存在于所有shell中。當您(稍后)調用ssh-add
或ssh
兩者都可以訪問代理時,因為它們都具有帶魔術套接字路徑名的環境變量或其他任何內容。
或者,您可以將代理作為普通子代運行,將環境設置保存在文件中,并在啟動時在每個shell中獲取該文件。
我的OSX和Ubuntu系統自動執行代理啟動設置,因此我所要做的就是運行ssh-add
一次。嘗試運行ssh-add
并查看它是否有效,如果是,那么每次重啟只需要執行一次。
我的Cygwin系統需要手動完成,所以我在我.profile
和我的.bashrc
源頭做了這個.profile
:
. .agent > /dev/nullps -p $SSH_AGENT_PID | grep ssh-agent > /dev/null || { ssh-agent > .agent . .agent > /dev/null}
該.agent
文件由腳本自動創建; 它包含環境變量定義和導出。上面嘗試獲取.agent文件,然后嘗試ps(1)
代理。如果它不起作用,它將啟動代理并創建新的代理文件。您也可以運行ssh-add
,如果失敗則啟動代理。
1.甚至本地和偏遠sudo
的正確的pam擴展。

TA貢獻1798條經驗 獲得超3個贊
與GitHub有類似的問題,因為我使用的是HTTPS協議。要檢查您正在使用的協議,請運行
git config -l
并查看以remote.origin.url
。開頭的行。切換協議
git config remote.origin.url [email protected]:your_username/your_project.git

TA貢獻1900條經驗 獲得超5個贊
這是關于配置ssh,而不是git。如果您還沒有,則應使用ssh-keygen
(使用空白密碼)來創建密鑰對。然后,使用將公鑰復制到遠程目標ssh-copy-id
。除非你需要多個密鑰(例如,一個更安全的密鑰用于其他目的)或者你有一些非常奇怪的多重身份的東西,它就是這么簡單:
ssh-keygen # enter a few times to accept defaultsssh-copy-id -i ~/.ssh/id_rsa user@host
編輯:你應該只是閱讀DigitalRoss的答案,但是:如果你使用帶密碼的密鑰,你需要使用它ssh-add <key-file>
來添加它們ssh-agent
(ssh-agent
如果你的發行版還沒有為你運行的話,那么顯然會啟動它)。
- 3 回答
- 0 關注
- 709 瀏覽
添加回答
舉報