Git clone / pull liên tục đóng băng tại khóa Store Store trong bộ nhớ cache?


159

Tôi đang cố gắng sao chép một repo từ tài khoản BitBucket của mình sang máy tính xách tay Windows 10 (chạy GitBash). Tôi đã hoàn thành tất cả các bước cần thiết để kết nối (thiết lập khóa SSH của mình, được xác minh bằng cách SSH thành công git@bitbucket.org, v.v.). Tuy nhiên, bất cứ khi nào tôi cố gắng sao chép một repo, lời nhắc sẽ liên tục bị treo sau khi xác nhận rằng tôi muốn lưu trữ khóa của Bitbucket.

User@Laptop MINGW64 /C/Repos
$ git clone git@bitbucket.org:mygbid/test.git
Cloning into 'test'...
The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40
If you trust this host, enter "y" to add the key to
PuTTY's cache and carry on connecting.
If you want to carry on connecting just once, without
adding the key to the cache, enter "n".
If you do not trust this host, press Return to abandon the
connection.
Store key in cache? (y/n) y

Không có tệp nào được sao chép và kết quả là một repo trống. Cố gắng khởi tạo một chủ bản gốc git pull từ repo này cũng yêu cầu lưu trữ khóa, sau đó bị treo mà không có phản hồi. Mặc dù không yêu cầu khóa được lưu trong bộ nhớ cache khi tôi thực hiện kiểm tra SSH, các thao tác git luôn yêu cầu khóa mỗi lần trước khi thất bại.

Không có thông báo lỗi để làm việc, tôi thực sự không biết có gì sai. Tôi đã thử nhiều repos, kể cả những cái rất nhỏ, không thành công chút nào.

Câu trả lời:


188

Tôi cũng gặp vấn đề này khi nhân bản một repo trên Windows 10.

Tôi đã khắc phục bằng cách sử dụng GUI Putty để SSH đến máy chủ được đề cập (trong trường hợp của bạn: bitbucket.org) sau đó nhấp vào 'Có' khi lời nhắc hỏi bạn có muốn lưu khóa máy chủ vào bộ đệm không. Chạy lệnh clone một lần nữa sau đó làm việc cho tôi!


20
Điều này không trực tiếp sửa nó cho tôi, nhưng nó khiến tôi nhận ra rằng vấn đề liên quan đến GitBash khi sử dụng Putty để xác thực ssh thay vì OpenSSH. Khi tôi xóa biến hệ thống GIT_SSH và đặt lại GitBash, mọi thứ đều hoạt động tốt. Cảm ơn!
MarathonStudios

2
Sử dụng puttyđể thêm githubkhóa trong bộ nhớ cache hoạt động với tôi
sồi

4
Điều này làm việc cho tôi trên Win 7 bằng cách sử dụng bảng điều khiển lệnh. Tôi ước ai đó có thể cho tôi biết tại sao điều này xảy ra thay vì chỉ là một cách giải quyết.
soulsabr

1
bất cứ ai có thể cho biết làm thế nào để làm giải pháp nói trên
Shreyan Mehta

2
@Shreyan Mehta chỉ cần mở putty, dưới tên máy chủ dán git@github.com (hoặc bất kỳ máy chủ nào bạn đang sử dụng). Hãy chắc chắn chọn loại kết nối của SSH. Số cổng phải là 22. Ngoài ra, hãy đảm bảo có khóa ssh được tải vào trang trước khi khởi chạy.
Mr.Invisible

110
  1. Mở Putty
  2. Nhập tên máy chủ (như bitbucket.org)
  3. Nhấp vào Mở
  4. Nhấp vào có trong cửa sổ bật lên để lưu trữ khóa máy chủ
  5. Đóng Putty

Tôi đã từng gặp vấn đề tương tự. Nhìn vào đầu ra từ git, có vẻ như git không thể lưu trữ khóa máy chủ (có thể là một lỗi). Vì vậy, bạn phải làm điều đó bằng GUI PuTTY.
quay cuồng vào

Tôi đã thử tất cả các bước nhưng khi tôi chọn 'y' hoặc 'n' thì không có gì hạnh phúc, Git Bash không làm gì cả
testsingh

Bạn đã gõ đúng tên máy chủ trong bước 2? Bạn đã thử khởi động lại Git Bash?
quay phim vào

1
Làm thế nào là khác bất kỳ câu trả lời được chấp nhận?
zb226

1
Tôi đã bỏ phiếu câu trả lời này vì nó cung cấp các bước. Tôi không thích cách giải quyết (bạn phải lặp lại điều này cho mọi máy chủ SSH bạn kết nối) giống như câu trả lời được chấp nhận.
ShooShoSha

26

Để thực hiện việc này từ powershell, hãy mở một cửa sổ powershell và dán vào phần sau:

echo y | & 'C:\Program Files (x86)\GitExtensions\PuTTY\plink.exe' -ssh git@github.com
echo y | & 'C:\Program Files (x86)\GitExtensions\PuTTY\plink.exe' -ssh git@gist.github.com
echo y | & 'C:\Program Files (x86)\GitExtensions\PuTTY\plink.exe' -ssh git@bitbucket.org

hoặc với phiên bản độc lập PuTTY:

echo y | & 'C:\Program Files (x86)\PuTTY\plink.exe' -ssh git@github.com
echo y | & 'C:\Program Files (x86)\PuTTY\plink.exe' -ssh git@gist.github.com
echo y | & 'C:\Program Files (x86)\PuTTY\plink.exe' -ssh git@bitbucket.org

Cũng đáng biết là các cửa hàng putty đã biết các máy chủ lưu trữ dưới khóa đăng ký :

HKEY_CURRENT_USER\SoftWare\SimonTatham\PuTTY\SshHostKeys

Để tắt các phím trên, bạn có thể đặt các mục sau vào một .regtệp và chạy nó:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\SshHostKeys]
"rsa2@22:github.com"="0x23,0xab603b8511a67679bdb540db3bd2034b004ae936d06be3d760f08fcbaadb4eb4edc3b3c791c70aae9a74c95869e4774421c2abea92e554305f38b5fd414b3208e574c337e320936518462c7652c98b31e16e7da6523bd200742a6444d83fcd5e1732d03673c7b7811555487b55f0c4494f3829ece60f94255a95cb9af537d7fc8c7fe49ef318474ef2920992052265b0a06ea66d4a167fd9f3a48a1a4a307ec1eaaa5149a969a6ac5d56a5ef627e517d81fb644f5b745c4f478ecd082a9492f744aad326f76c8c4dc9100bc6ab79461d2657cb6f06dec92e6b64a6562ff0e32084ea06ce0ea9d35a583bfb00bad38c9d19703c549892e5aa78dc95e250514069"
"rsa2@22:gist.github.com"="0x23,0xab603b8511a67679bdb540db3bd2034b004ae936d06be3d760f08fcbaadb4eb4edc3b3c791c70aae9a74c95869e4774421c2abea92e554305f38b5fd414b3208e574c337e320936518462c7652c98b31e16e7da6523bd200742a6444d83fcd5e1732d03673c7b7811555487b55f0c4494f3829ece60f94255a95cb9af537d7fc8c7fe49ef318474ef2920992052265b0a06ea66d4a167fd9f3a48a1a4a307ec1eaaa5149a969a6ac5d56a5ef627e517d81fb644f5b745c4f478ecd082a9492f744aad326f76c8c4dc9100bc6ab79461d2657cb6f06dec92e6b64a6562ff0e32084ea06ce0ea9d35a583bfb00bad38c9d19703c549892e5aa78dc95e250514069"
"rsa2@22:bitbucket.org"="0x23,0xb9b88df3578371a7eb80c78bcda14fb30da436f11ca932a5fd5a8b6adfcc681df7a59cb4cb7ac966d9eac11daa38ebdbc0a6582a210ed4ee95a8d101c4abc925e942ab47535d64f9a5b3b68035c2ea1e900d709a1e8ea938718f532f9805a190446b92bac3040126225ae9d8374bc2008f106979d631734c7453f78c70091f4783b288869cb3c1941a784cd9baad823be27333833dc1f488a45b85952be75cf0a64965662302e3915378dcd5cfcd3ec903d804a29dff2fdf19df5deba4534b09e4dea6e44f152e339b3c43be98ddadfc56533192e216a3d673f00b4aa9cc9e7870acd8b6adb7e0feb77f2292fc2dede94819def3eb1e785541a06ab31ccf725f"

putty-hosts.reg ý chính


2
Xem thêm câu hỏi và trả lời trước đó về khía cạnh này của plink: serverfault.com/questions/420526/ory
Josip Rodin

2
FATAL ERROR: Disconnected: No supported authentication methods available (server sent: publickey)
Azimuth

Trong trường hợp điều khiển từ xa của bạn hoạt động trên một cổng khác 22, bạn cần chạy plink với cổng bằng cách truyền cho nó một -P <port>đối số.
PitaJ

19

Tôi đã quản lý để làm cho nó hoạt động bằng cách chạy trực tiếp plink, sau khi cuộc thi đang chạy sử dụng lệnh plink trực tiếp - plink.exe -agent -v git@github.comsau đó sau khi git này hoạt động mà không bị treo.


3
Giải pháp tốt đẹp! Điều này nên được đánh dấu là một câu trả lời
ZenithS

Đây là câu trả lời tốt nhất.
Brian Lacy

5

Để khắc phục sự cố này, tôi đã cấu hình GitBash để sử dụng plink với -batchtùy chọn. Tùy chọn vô hiệu hóa tất cả các lời nhắc - nếp nhăn sẽ chấm dứt mà không bị treo và sẽ không thêm bất kỳ dấu vân tay quan trọng nào vào bộ đệm.

Để thêm -batchtham số cho lệnh Plink thực hiện bởi GitBash bạn có thể đặt tùy chọn git config:

git config --global core.sshCommand "plink -batch"

Hoặc đặt GIT_SSH_COMMANDbiến môi trường.

Đầu ra khi bạn nhân bản một repo từ máy chủ không xác định sẽ tương tự như sau:

The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40
Connection abandoned.
fatal: Could not read from remote repository.

Sau thông báo này, bạn có thể thêm một khóa vào bộ đệm bằng lệnh:

echo y | plink git@bitbucket.org

GHI NHỚ : Vui lòng kiểm tra xem plink có trong của bạn không PATH. Hoặc sử dụng đường dẫn giống như UNIX trong tùy chọn cấu hình GitBash, ví dụ:

/c/Program\ Files/PuTTY/plink.exe -batch

1
HI i nhận được thông báo này:
LALI LALI

4

Ngay cả sau khi thực hiện cách giải quyết được đề cập trong các câu trả lời khác, bạn có thể gặp phải một lỗi như:

FATAL ERROR: Disconnectected: Không có phương thức xác thực được hỗ trợ (máy chủ đã gửi: khóa công khai)

Để giải quyết cả hai vấn đề cùng một lúc, hãy thay đổi git bash để sử dụng SSH thay vì PuTTY bằng cách thêm phần sau vào ~/.profiletệp của bạn ( C:\Users\<Username>\.profile). Nếu bạn chưa có tệp này, thì hãy tạo một tệp mới với dòng này.

GIT_SSH="/usr/bin/ssh.exe"

Sau đó mở một cửa sổ git bash mới và thử lại git clonehoặc thử git pulllại.

Lưu ý rằng điều này có thể yêu cầu bạn tạo khóa SSH nếu bạn chưa có khóa. Để làm điều này, hãy làm theo các hướng dẫn trên trang web Bitbucket .

Xem câu hỏi SO này để biết thông tin liên quan.


1

Trong shell git bash của bạn, hãy kiểm tra sự tồn tại của GIT_SSH:
echo $GIT<tab><tab>
Nếu nó tồn tại và được đặt thành putty, hãy thực thi:
unset GIT_SSH
Bạn có thể muốn đưa nó vào một trong các tập lệnh khởi động git bash.
Đây KHÔNG phải là một giải pháp phổ quát. Nó đã làm việc trong trường hợp cụ thể của chúng tôi.


"kịch bản khởi động git bash" là gì / ở đâu? Tôi chỉ quen thuộc với linux thực sự.
Jeff K

Có nhiều kịch bản khởi động. Một số được đặt trong thư mục / etc; những người khác có thể trong thư mục nhà của bạn. Các kịch bản khởi động nào được thực thi tùy thuộc vào các tùy chọn dòng lệnh cho trình bao của bạn (tương tác và đăng nhập). Đây là có liên quan bất kể hệ điều hành mà vỏ chạy trên đầu trang.
Richard Jessop

Windows không có thư mục '/ etc'.
Jeff K

Bash shell chạy trong Windows làm. Chúng thường được ánh xạ tới một nơi nào đó ngoài thư mục cơ sở (hoặc cài đặt) của shell. Hãy xem một git bash và Cygwin bash. Hãy nhớ rằng, đây là những shell trông giống và hoạt động rất giống với shell trên hệ thống linux.
Richard Jessop

0

Nghe có vẻ hơi ngớ ngẩn, nhưng sau khi thử tất cả các cách trên, tôi quyết định cài đặt lại Git Bash với các tùy chọn mặc định và nó đã hoạt động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.