git สร้าง Gtk-WARNING: ไม่สามารถเปิดจอแสดงผล


138

ฉันทำงานเกี่ยวกับโครงการของฉันจากระยะไกลผ่านบรรทัดคำสั่งบนเครื่องที่ฉันไม่มีสิทธิ์ของผู้ดูแลระบบและหลังจากทำงานgit push origin masterฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:

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

.git/configไฟล์ของฉันมีเนื้อหาดังต่อไปนี้:

    [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

ฉันได้รับข้อผิดพลาด 403 ก่อนหน้านี้ ติดตามความคิดเห็นที่นี่ฉันใส่ชื่อผู้ใช้ของฉันก่อนที่เครื่องหมาย @ ใน URL ระยะไกลและตั้งแต่นั้นมาฉันได้รับข้อผิดพลาด Gtk

เมื่อฉันเข้าสู่เครื่องโดยใช้ssh -Xและพยายามที่จะผลักดันฉันได้รับข้อผิดพลาดต่อไปนี้:

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

หากฉันเปลี่ยน URL ของรีโมตgit@github.com:username/repository.gitเป็นข้อผิดพลาดคือ:

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

คุณรู้วิธีแก้ไขปัญหานี้หรือไม่?


2
ฉันเดาว่าคุณกำลังใช้ ssh ใช้ ssh -X แทน นี่หมายความว่ากล่องโต้ตอบรหัสผ่านกำลังพยายามเปิดขึ้น แต่ทำไม่ได้เพราะไม่มี X
โพสิตรอน

ขอบคุณ แต่ฉันไม่ได้ใช้ SSH อย่างชัดเจนเพียงแค่โทรgit push origin masterดังนั้นผมจึงไม่ทราบว่าจะใช้สิ่งที่คุณกำลังจะบอกว่า?
John Manak

ฉันขอทราบได้จากที่ใดที่คุณกดเซิร์ฟเวอร์ ฉันหมายถึงเครื่องไหน? คุณเข้าสู่เครื่องนั้นได้อย่างไร?
โพซิตรอน

1
อุ่ย ขอโทษ ฉันไม่ได้อ่านคำถามของคุณอย่างเต็มที่ "url" ของคุณควรเป็นgit@github.com:username/repo.gitหรือhttps://github.com/username/repo.gitแต่คุณใช้ทั้งสองอย่างผสมกัน
โพซิตรอน

ขอโทษทีฉันเข้าใจแล้วว่าคุณหมายถึงอะไร ฉันลองเข้าสู่ระบบโดยใช้เครื่องssh -Xแต่นั่นก็ไม่ได้ช่วยอะไร ดูคำถามที่ปรับปรุงด้านบน
John Manak

คำตอบ:


336

ในที่สุดฉันก็ได้ค้นพบวิธีแก้ไขปัญหา ตามที่อธิบายไว้ที่นี่ฉันรันคำสั่งต่อไปนี้ในเทอร์มินัล:

  unset SSH_ASKPASS

จากนั้นการรันจะgit push origin masterทำงานอย่างที่ควรจะเป็น คุณยังสามารถเพิ่มบรรทัดลงใน.bashrcไฟล์ของคุณ


5
ขอบคุณ ... นั่นช่วยประหยัดเวลาได้มาก Bless you
Poonam Bhatt

ขอบคุณสำหรับสิ่งนั้น! :-)
ItayB

1
ขอบคุณ .. ที่ได้ผลสำหรับฉัน! ฉันได้รับข้อผิดพลาดที่คล้ายกันเมื่อพยายามโคลนจาก bitbucket ไปยังเครื่อง linux
Blesson Jose

2
แค่อยากจะเพิ่มว่ามันเป็นสคริปต์นี้การตั้งค่าตัวแปรนี้ในระบบ CentOS 6.7 ของฉัน:
/etc/profile.d/gnome-ssh-askpass.sh

ตอนนี้ฉันได้รับerror: RPC failed; result=22, HTTP code = 417
pmiranda

19

ฉันเพิ่งจัดการกับพฤติกรรมนี้ในเครื่อง RedHat 5 ซึ่งเป็นรุ่น Git ของเราคือ 1.7.4.1

ฉันไม่มีความมั่นใจในระดับสูงที่unset SSH_ASKPASSจะไม่เกิดผลที่ไม่ตั้งใจดังนั้นฉันจึงต้องการดูว่ามีวิธีแก้ไขปัญหาอื่นหรือไม่

ฉันไม่สามารถบอกได้อย่างแน่นอน แต่ดูเหมือนว่ามีการแก้ไขสำหรับปัญหานี้ในการทำงานในเวลาเดียวกันกับที่ Git รุ่นของเราได้รับการเผยแพร่ สำหรับฉันมันดูเหมือนว่ามันสมเหตุสมผลที่จะหวังว่ารุ่นที่ใหม่กว่าจะแก้ไขพฤติกรรม

และแน่นอนมันทำ การอัปเกรดเป็น 1.8 สาขาของ Git สามารถแก้ไขปัญหาได้ ข้อความแสดงข้อผิดพลาดจะยังคงปรากฏขึ้นด้วยเหตุผลแปลก ๆ บางอย่าง แต่คุณได้รับแจ้งอย่างถูกต้องสำหรับรหัสผ่านของคุณและได้รับอนุญาตให้ดำเนินการต่อ


2
ปัญหาใน RHEL 5 (CentOS 5 เป็นต้น) อยู่ในไฟล์ /etc/profile.d/gnome-ssh-askpass.sh (เป็นเจ้าของโดยแพ็คเกจ openssh-askpass) โดยที่ตัวแปรสภาพแวดล้อม SSH_ASKPASS เป็นชุดที่ตาบอดเป็น / usr / libexec / openssh / gnome-ssh-askpass และสิ่งนี้ใช้ไม่ได้หากไม่มี X (เช่นเข้าสู่ระบบผ่าน PuTTY ผ่าน SSH) คุณสามารถคอมเม้นท์ในไฟล์นี้ได้ (อย่าลบไฟล์ไม่เช่นนั้นไฟล์จะถูกกู้คืนหลังจากอัปเดตแพ็คเกจ openssh-askpass) หรือลบแพ็คเกจ openssh-askpass อย่างสมบูรณ์ (yum remove openssh-askpass)
Milan Kerslager

0

ไม่มีคำตอบเหล่านี้สำหรับฉัน (ใช้ผ่าน Cygwin บน Windows 10 ลงในเซิร์ฟเวอร์ RHEL 6.8 และพยายามโคลน repo github.com จากกล่อง RHEL) ดังนั้นสิ่งที่ฉันทำคือการโคลนผ่านคีย์ SSH แทนชื่อผู้ใช้ HTTPS / รหัสผ่าน เช่นฉันใช้ git@github.com: MyUsername / myproject.git แทนที่จะเป็น https url ฉันยังอัปโหลดกุญแจสาธารณะของฉันไปยัง Github อย่างเหมาะสม วิธีนี้ใช้ได้ผลดี

หมายเหตุ: จากวิธีการข้างต้นที่จริงแล้วฉันไม่ได้ลองอัพเกรดเป็น 1.8 สาขาของคอมไพล์


0

นอกจากนี้คุณยังสามารถลองเข้าสู่ระบบโดยใช้ ssh -Y ไปยังเซิร์ฟเวอร์ระยะไกลเพื่อให้กล่องโต้ตอบสามารถปรากฏกราฟิก

เช่นเดียวกับ OP การลงชื่อเข้าใช้ผ่าน ssh -X ไม่ทำงาน เมื่อพยายามที่จะผลักดันเซิร์ฟเวอร์เพียงแค่ทำซ้ำข้อผิดพลาดเดียวกัน - (gnome-ssh-askpass:29241): Gtk-WARNING **: cannot open display:- มันทำเมื่อเข้าสู่ระบบผ่าน ssh โดยไม่มีการส่งต่อ X11 นี่เป็นพฤติกรรมที่แตกต่างกันเล็กน้อยจากสิ่งที่ OP รายงานเมื่อเขาลอง ssh -X เนื่องจากข้อผิดพลาดของเขาเปลี่ยนไปเล็กน้อยจากการใช้ ssh

อย่างไรก็ตามสำหรับฉันเมื่อเข้าสู่ระบบโดยใช้ ssh -Y: ไม่มีข้อผิดพลาดกล่องโต้ตอบรหัสผ่านโผล่ขึ้นมาฉันพิมพ์รหัสผ่านและ GitHub ยอมรับการกด

คำเตือน ssh -Y สามารถเปิดปัญหาด้านความปลอดภัยในขณะที่คุณจัดการเซิร์ฟเวอร์ระยะไกลในฐานะลูกค้าที่เชื่อถือได้ ( /ubuntu/35512/what-is-the-difference-between-ssh-y- Trusted-x11-forwarding-and-ssh-xu ) ดังนั้นควรใช้ความระมัดระวัง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.