簡體   English   中英

Git 與 SSH 上 Windows

[英]Git with SSH on Windows

I've went through the excellent guide provided by Tim Davis which is about configuring Git to work with SSH under Windows in order to produce a Git Server in order to have a main place for my DVCS.

我正在為我的項目創建克隆。 到目前為止,我已經完成了所有步驟,但我一直從 TortoiseGit 得到這個:

git.exe clone -v “ssh://Administrator@127.0.0.1:22/SSH/Home/administrator/myapp.git” “E:\GitTest\myapp”

bash: Administrator@127.0.0.1: command not found
Initialized empty Git repository in E:/GitTest/myapp/.git/
fatal: The remote end hung up unexpectedly
Success

沒有任何東西被克隆。

順便說一句: TortoisePLink在此消息出現之前出現並詢問我:“ login as: ”(我認為此信息是在命令中給出的,即: Administrator@blahblah

我的主變量設置為正確的位置:從 Git Bash shell 開始:

echo $HOME
/c/SSH/home/Administrator

我也嘗試過使用 Putty 的 plink 而不是TortoisePLink (在 Git 和TortoiseGit的安裝中)。 這次錯誤被縮小到:

git.exe clone -v “ssh://Administrator@127.0.0.1:22/c:/SSH/Home/administrator/myapp.git” “E:\GitTest\myapp”

Initialized empty Git repository in E:/GitTest/myapp/.git/
fatal: The remote end hung up unexpectedly

在偶然發現明顯的答案之前,我與這個問題斗爭了幾個小時。 我遇到的問題是我在生成密鑰和使用 git 之間使用了不同的 ssh 實現。

我在命令提示符下使用 ssh-keygen 來生成我的密鑰,但是當我嘗試“git clone ssh://...”時,我得到了與您相同的結果,提示輸入密碼和消息“fatal: The remote最后意外掛斷”。

通過執行 Windows 的“where”命令確定正在使用的 ssh 窗口。

C:\where ssh
C:\Program Files (x86)\Git\bin\ssh.exe

第二行告訴您將執行哪個確切的程序。

接下來,您需要確定 git 正在使用哪個 ssh。 通過以下方式查找:

C:\set GIT_SSH
GIT_SSH=C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe

現在你看到了問題所在。

要更正此問題,只需執行:

C:\set GIT_SSH=C:\Program Files (x86)\Git\bin\ssh.exe

要檢查是否應用了更改:

C:\set GIT_SSH
GIT_SSH=C:\Program Files (x86)\Git\bin\ssh.exe

現在 git 將能夠使用您之前生成的密鑰。

到目前為止,此修復僅適用於當前窗口。 要完全修復它,您需要更改環境變量。

  1. 打開 Windows 資源管理器
  2. 右鍵單擊計算機並選擇屬性
  3. 單擊左側的高級系統設置鏈接
  4. 單擊環境變量...按鈕
  5. 在系統變量部分選擇 GIT_SSH 變量並按下 Edit... 按鈕
  6. 更新變量值。
  7. 按確定關閉所有窗口

現在,您以后打開的任何命令窗口都將具有正確的設置。

希望這可以幫助。

由於這在搜索結果中不斷出現以使 git 和 github在 Windows 上與 SSH 一起工作(並且因為我不需要上述指南中的任何內容),我添加了以下簡單的解決方案。

(微軟表示他們正在努力將 SSH 添加到 Visual Studio,而 GitHub for Windows 仍然不支持 SSH...)

1.我安裝了“git for Windows”(包括 ssh 和 bash shell)

https://git-scm.com/download/win

2.從包含的 bash shell(對我來說,它安裝在: C:\\Program Files\\Git\\git-bash.exe

cd到您想要保存 repo 的根級別(類似於: C:\\code\\github\\ ),然后

類型:

eval $(ssh-agent -s) && ssh-add "C:\\Users\\YOURNAMEHERE\\.ssh\\github_rsa"

3. 輸入:(來自 repo 的 SSH 鏈接)

git clone git@github.com:RepoName/Project.git

您在此處使用智能引號而不是"

git.exe clone -v “ssh://
                ^^^ 

確保使用普通的雙引號。

我在“C:/Program Files/Git/usr/bin”目錄中找到了我的 ssh.exe

如果安裝了 Windows 版 Git,請運行 Git Bash shell

  bash

您可以在 Bash shell 中運行 ssh(Bash 知道 ssh 的路徑)

要知道 ssh 的確切路徑,請在 Bash shell 中運行“where”命令:

  $ where ssh

你得到:

  c:\Program Files\Git\usr\bin\ssh.exe

我試圖用上面的一些答案來解決我的問題,但由於某種原因它不起作用。 我確實切換到使用 git 擴展,這是我遵循的步驟。

  1. 我去了Tools -> Settings -> SSH -> Other ssh client
  2. 將此值設置為C:\\Program Files\\Git\\usr\\bin\\ssh.exe
  3. 申請

我想這些步驟與上面解釋的相同。 唯一的區別是我使用了 Git 擴展用戶界面而不是終端。 希望這有幫助。

當我輸入where ssh時,它顯示了多重ssh.exe

user@pc MINGW64 /c/dev/
$ where ssh
C:\Users\user\AppData\Local\Programs\Git\usr\bin\ssh.exe
C:\Windows\System32\OpenSSH\ssh.exe

刪除/移動這些 exe 有助於:

# copy from
# C:\Users\user\AppData\Local\Programs\Git\usr\bin
# to something like
# C:\Users\user\AppData\Local\Programs\Git\usr\bin\backup-ssh
ssh-agent.exe
ssh.exe
ssh-add.exe

這為我解決了這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM