git tạo Gtk-CẢNH BÁO: không thể mở màn hình


138

Tôi đã làm việc với dự án của mình từ xa thông qua dòng lệnh trên máy mà tôi không có quyền quản trị và sau khi chạy, git push origin mastertôi nhận được thông báo lỗi sau:

(gnome-ssh-askpass:29241): Gtk-WARNING **: cannot open display:

.git/configTập tin của tôi có nội dung như sau:

    [core]
       repositoryformatversion = 0
       filemode = true
       bare = false
       logallrefupdates = true 
    [remote "origin"]
       fetch = +refs/heads/*:refs/remotes/origin/*
       url = https://username@github.com/username/repository.git 
    [branch "master"]
       remote = origin
       merge = refs/heads/master

Tôi đã nhận được lỗi 403 trước đó. Theo dõi nhận xét ở đây , tôi đặt tên người dùng của mình trước dấu @ trong url từ xa và kể từ đó, tôi đã gặp lỗi Gtk.

Khi tôi đăng nhập vào máy bằng cách sử dụng ssh -Xvà cố gắng đẩy, tôi gặp lỗi sau:

X11 connection rejected because of wrong authentication.
(gnome-ssh-askpass:31922): Gtk-WARNING **: cannot open display:localhost:10.0

Nếu tôi thay đổi url của điều khiển từ xa git@github.com:username/repository.git, thì lỗi là:

ssh: connect to host github.com port 22: Connection timed out
fatal: The remote end hung up unexpectedly

Bạn có biết làm sao để sửa cái này không?


2
Tôi đoán bạn đang sử dụng ssh. Sử dụng ssh -X thay thế. Điều này có nghĩa là một hộp thoại mật khẩu đang cố mở ra, nhưng không thể vì không có X.
positron

Cảm ơn, nhưng tôi không sử dụng ssh một cách rõ ràng, chỉ gọi điện git push origin master, vì vậy tôi không biết làm thế nào để áp dụng những gì bạn đang nói?
John Manak

Tôi có thể biết bạn đang đẩy máy chủ từ đâu không? Ý tôi là từ máy nào? Làm thế nào bạn đã đăng nhập vào máy đó?
positron

1
Giáo sư. Lấy làm tiếc. Tôi đã không đọc hết câu hỏi của bạn. "Url" của bạn nên là git@github.com:username/repo.githoặc https://github.com/username/repo.gitNhưng bạn đang sử dụng kết hợp cả hai.
positron

Oh xin lỗi, tôi hiểu ý bạn bây giờ. Tôi đã thử đăng nhập vào máy bằng cách sử dụng ssh -X, nhưng điều đó cũng không giúp được gì. Xem câu hỏi cập nhật ở trên.
John Manak

Câu trả lời:


336

Cuối cùng tôi đã phát hiện ra một giải pháp cho vấn đề. Như đã mô tả ở đây , tôi đã chạy lệnh sau trong terminal:

  unset SSH_ASKPASS

và sau đó chạy git push origin masterhoạt động theo cách nó nên. Bạn cũng có thể thêm dòng vào .bashrctập tin của bạn .


5
Cảm ơn ... đã tiết kiệm rất nhiều thời gian. Ban phước cho bạn
Poonam Bhatt

Cảm ơn vì điều đó! :-)
ItayB

1
Cảm ơn .. đã làm việc cho tôi! Tôi đã gặp lỗi tương tự khi cố gắng sao chép từ bitbucket sang máy linux.
Blesson Jose

2
Chỉ muốn thêm rằng đó là tập lệnh này thiết lập biến này trên hệ thống CentOS 6.7 của tôi:
/etc/profile.d/gnome-ssh-askpass.sh

Bây giờ tôi nhận được mộterror: RPC failed; result=22, HTTP code = 417
pmiranda

19

Gần đây tôi đã xử lý hành vi này trên máy RedHat 5 trong đó phiên bản Git của chúng tôi là 1.7.4.1.

Tôi đã không có một mức độ tự tin cao rằng unset SSH_ASKPASSsẽ không có hậu quả ngoài ý muốn, vì vậy tôi muốn xem liệu có giải pháp nào khác không.

Tôi không thể chắc chắn, nhưng có vẻ như một bản vá cho vấn đề này đã có trong các tác phẩm vào khoảng thời gian mà phiên bản Git của chúng tôi đã được xuất bản. Vì vậy, dường như với tôi là hợp lý khi hy vọng rằng một phiên bản mới hơn sẽ điều chỉnh hành vi.

Và thực sự nó đã làm. Nâng cấp lên chi nhánh 1.8 của Git đã giải quyết vấn đề. Thông báo lỗi vẫn được hiển thị vì một số lý do kỳ lạ, nhưng bạn được nhắc chính xác mật khẩu của mình và được phép tiếp tục.


2
Vấn đề trong RHEL 5 (CentOS 5, v.v.) nằm ở tệp /etc/profile.d/gnome-ssh-askpass.sh (thuộc sở hữu của gói openssh-askpass) trong đó biến môi trường SSH_ASKPASS được đặt thành / usr / libexec / openssh / gnome-ssh-askpass và điều này không hoạt động nếu không có X (tức là đã đăng nhập qua PuTTY qua SSH). Bạn có thể chỉ cần nhận xét dòng trong tệp này (không xóa tệp hoặc nó sẽ được phục hồi sau khi cập nhật gói openssh-askpass). Hoặc loại bỏ hoàn toàn gói openssh-askpass (yum remove openssh-askpass).
Milan Kerslager

0

Không có câu trả lời nào trong số này trả lời cho tôi (thông qua Cygwin trên Windows 10 vào máy chủ RHEL 6.8 và cố gắng sao chép một repo github.com từ hộp RHEL) vì vậy những gì tôi đã làm được sao chép qua khóa SSH thay vì tên người dùng HTTPS / mật khẩu. ví dụ: tôi đã sử dụng git@github.com: MyUsername / myproject.git thay vì url https. Tôi cũng đã tải lên khóa công khai của mình một cách thích hợp vào Github. Phương pháp này hoạt động tốt.

Lưu ý: Trong số các giải pháp trên, tôi thực sự đã không thử nâng cấp lên nhánh git 1.8


0

Bạn cũng có thể thử đăng nhập bằng ssh -Y vào máy chủ từ xa để hộp thoại có thể xuất hiện bằng đồ họa.

Giống như OP, đăng nhập qua ssh -X không hoạt động. Khi cố gắng đẩy, máy chủ chỉ cần lặp lại cùng một thông báo lỗi - (gnome-ssh-askpass:29241): Gtk-WARNING **: cannot open display:- giống như khi đăng nhập qua ssh mà không có chuyển tiếp X11. Đây là hành vi hơi khác so với những gì OP đã báo cáo khi anh ta thử ssh -X vì thông báo lỗi của anh ta thay đổi một chút so với chỉ sử dụng ssh.

Tuy nhiên, đối với tôi, một khi đã đăng nhập bằng ssh -Y: không có lỗi, hộp thoại mật khẩu bật lên, tôi đã nhập mật khẩu và GitHub chấp nhận đẩy.

Như một lời cảnh báo trước, ssh -Y có thể mở ra các vấn đề bảo mật khi bạn đang đối xử với máy chủ từ xa như một máy khách đáng tin cậy ( https://askubfox.com/questions/35512/what-is-the-difference-b between-ssh-y- đáng tin cậy-x11 chuyển tiếp-và-ssh-xu ). Vì vậy, hãy cẩn thận khi sử dụng nó.

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.