2010-03-23 53 views
31

Tôi đã đi qua các excellent guide provided by Tim Davis đó là về cấu hình Git để làm việc với SSH trong Windows để tạo ra một máy chủ Git để có một vị trí chính cho DVCS của tôi.Git với SSH trên Windows

Tôi đang trong quá trình tạo bản sao cho dự án của mình. Tôi đã đi qua tất cả các bước cho đến thời điểm này, nhưng tôi tiếp tục nhận được điều này từ TortoiseGit:

git.exe clone -v “ssh://[email protected]:22/SSH/Home/administrator/myapp.git” “E:\GitTest\myapp” 

bash: [email protected]: command not found 
Initialized empty Git repository in E:/GitTest/myapp/.git/ 
fatal: The remote end hung up unexpectedly 
Success 

và không có gì được nhân bản.

BTW: Các TortoisePLink đi lên ngay trước khi báo này xuất hiện và hỏi tôi: “login as:” (Tôi nghĩ rằng thông tin này được đưa ra trong lệnh, ví dụ:. [email protected]

biến nhà của tôi được đặt đúng nơi: Từ một Git Bash shell:

echo $HOME 
/c/SSH/home/Administrator 

tôi cũng đã cố gắng sử dụng Plink thay vì TortoisePLink Putty (trong cả hai cài đặt Git và TortoiseGit 's) lần này lỗi đã được thu hẹp xuống:.

git.exe clone -v “ssh://[email protected]: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 
+0

Liên kết trong câu hỏi của bạn bị hỏng ... – enigmaticPhysicist

+0

Wayback Machine để giải thoát! http://web.archive.org/web/20170507103323/http://www.timdavis.com.au/git/setting-up-a-msysgit-server-with-copssh-on-windows/ –

Trả lời

7

bạn đang sử dụng một báo thông minh thay vì " đây:

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

Hãy chắc chắn rằng bạn sử dụng đồng bằng tuổi-đúp báo giá.

71

Tôi đã chiến đấu với vấn đề này trong vài giờ trước khi vấp phải câu trả lời rõ ràng. Vấn đề tôi gặp phải là tôi đang sử dụng các triển khai ssh khác nhau giữa thời điểm tôi tạo khóa và khi tôi sử dụng git.

Tôi đã sử dụng ssh-keygen từ dấu nhắc lệnh để tạo khóa và khi tôi thử "git clone ssh: // ..." Tôi nhận được kết quả tương tự như bạn, lời nhắc nhập mật khẩu và thông báo " gây tử vong: Kết thúc từ xa treo lên bất ngờ ".

Xác định cửa sổ ssh nào đang sử dụng bằng cách thực thi lệnh "where" của Windows.

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

Dòng thứ hai cho bạn biết chương trình chính xác nào sẽ được thực thi.

Tiếp theo bạn cần phải xác định ssh mà git đang sử dụng. Tìm thấy điều này bằng cách:

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

Và bây giờ bạn thấy vấn đề.

Để khắc phục này chỉ cần thực hiện:

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

Để kiểm tra xem các thay đổi được áp dụng:

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

Bây giờ git sẽ có thể sử dụng các phím mà bạn tạo ra trước đó.

Sửa lỗi này hiện chỉ áp dụng cho cửa sổ hiện tại. Để khắc phục nó hoàn toàn, bạn cần phải thay đổi biến môi trường của bạn.

  1. Mở Windows explorer
  2. Kích chuột phải vào Computer và chọn Properties
  3. Nhấn Advanced System Settings liên kết ở bên trái
  4. Nhấp vào nút Environment Variables ...
  5. Trong phần biến hệ thống chọn biến GIT_SSH và nhấn nút Chỉnh sửa ...
  6. Cập nhật giá trị biến.
  7. Bấm OK để đóng tất cả các cửa sổ

Bây giờ bất kỳ lệnh cửa sổ trong tương lai bạn mở sẽ có các thiết lập chính xác.

Hy vọng điều này sẽ hữu ích.

+0

Điều này đã làm cho tôi! cảm ơn –

7

Vì điều này tiếp tục xuất hiện trong kết quả tìm kiếm để thực hiện công việc git và github với SSH trên Windows (và vì tôi không cần bất kỳ điều gì từ hướng dẫn ở trên), tôi sẽ thêm giải pháp đơn giản sau đây.

(Microsoft nói rằng họ làm việc trên thêm SSH để Visual Studio, và GitHub cho Windows vẫn không hỗ trợ SSH ...)

1. Tôi đã cài đặt "git cho Windows" (mà bao gồm ssh và một vỏ bash)

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

2. Từ vỏ bash bao gồm (trong đó, đối với tôi, đã được cài đặt tại địa chỉ: C:\Program Files\Git\git-bash.exe)

cd đến cấp độ gốc của nơi bạn muốn repo của bạn được lưu (cái gì đó như: C:\code\github\), và

Loại:

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

3.Loại: (liên kết SSH từ repo)

git clone [email protected]:RepoName/Project.git

+0

Bất kỳ ý tưởng tại sao bạn phải bọc ssh-agent trong eval để làm cho nó hoạt động? – Fractalf

+2

@Fractalf đó là cách nó được thiết kế. 'ssh-agent -s' tạo mã shell và' eval '$ (ssh-agent -s) "' chạy mã được sinh ra. – shadowtalker

1

tôi đã tìm thấy ssh.exe của tôi trong "C:/Program Files/Git/usr/bin" thư mục

Các vấn đề liên quan