github: ไม่มีวิธีการรับรองความถูกต้องที่รองรับ


99

ฉันใช้ github และประสบความสำเร็จในการเพิ่มและซิงค์ไฟล์บนแล็ปท็อปของฉัน

เมื่อเร็ว ๆ นี้ฉันเริ่มได้รับ " PuTTY Fatal Error: Disconnected: ไม่มีวิธีการรับรองความถูกต้องที่รองรับ " หลังจากเรียกใช้:

git pull origin master (หรือ push)

อย่างไรก็ตาม

ssh git@github.com ส่งคืนคำตอบที่ถูกต้อง: ERROR: สวัสดีชื่อผู้ใช้! คุณตรวจสอบสิทธิ์สำเร็จแล้ว แต่ GitHub ไม่ได้ให้การเชื่อมต่อการเข้าถึงเชลล์กับ github.com ปิด

หลังจากขุดรอบ ๆ บน github ฉันพบ morcel นี้:

ไม่มีวิธีการรับรองความถูกต้องที่รองรับ คุณควรระวังตัวแปรสภาพแวดล้อม GIT_SSH ซึ่ง git ใช้เพื่อค้นหาไคลเอ็นต์ที่พูด ssh ของคุณหาก ssh ไม่ได้ผลสำหรับคุณ การติดตั้งคอมไพล์อาจใช้ plink.exe (ผ่าน GIT_SSH) เพื่อทำการตรวจสอบสิทธิ์ ในกรณีนี้ตรวจสอบให้แน่ใจว่าคุณมี pageant.exe ทำงานอยู่และคีย์ที่คุณสร้างขึ้นสำหรับ github โหลดลงในนั้น สิ่งนี้เป็นกุญแจสำคัญในการ plink.exe หากไม่มีข้อผิดพลาดข้างต้นจะเกิดขึ้น

ไม่แน่ใจว่า plink.exe หรือ peagant.exe คืออะไร .. และดูเหมือนว่า ssh git@github.com จะรับรองความถูกต้องอย่างถูกต้องทำให้ฉันสงสัยว่าทางออกที่ดีที่สุดคืออะไร .. แน่นอนว่าฉันไม่ต้องการที่จะตั้งค่ามากเกินไปถ้าไม่ จำเป็น

คำตอบ:


101

คุณสามารถสร้างไฟล์ชื่อ ".profile" ในโฮมไดเร็กทอรีของคุณสำหรับฉันนั่นคือ C: \ Users \ [user]

ภายในไฟล์นั้นให้ใส่โค้ดบรรทัดต่อไปนี้:

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

สิ่งนี้จะตั้งค่าตัวแปรสภาพแวดล้อม GIT_SSH เพื่อใช้ไคลเอ็นต์ ssh ที่รวมอยู่ใน git

สคริปต์. profile จะถูกดำเนินการเมื่อคุณเริ่มบรรทัดคำสั่ง Git Bash

แก้ไข: นี่คือ. profile ของฉัน มันจะถามรหัสผ่านของคุณในครั้งแรกที่คุณเริ่มพรอมต์คำสั่ง git จากนั้นจะจำรหัสผ่านตั้งแต่นั้นเป็นต้นมาจนกว่าคุณจะรีบูตเครื่องคอมพิวเตอร์ สะดวกมากคุณจึงไม่ต้องป้อนรหัสผ่านทุกครั้งที่ต้องการทำอะไร

SSH_ENV="$HOME/.ssh/environment"
GIT_SSH="/usr/bin/ssh.exe"

function start_agent {
echo "Initializing new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add;
}

# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
#ps ${SSH_AGENT_PID} doesn't work under cygwin
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi

8
+1 ฉันไม่มีอะไรเลยนอกจากปัญหาเมื่อใช้ Putty / Pageant สำหรับความต้องการ ssh ของ git การใช้ไคลเอนต์ ssh ในตัวทำงานได้อย่างมหัศจรรย์ สิ่งนี้อธิบายได้ว่าเหตุใด ssh git@github.com จึงส่งคืนได้ดีหากคุณดำเนินการเอง แต่การปล่อยให้คอมไพล์ใช้เครื่องมือที่กำหนดค่าไว้ (Putty / Pageant) ไม่ได้
enriquein

14
สำหรับฉันนั่นเป็นแค่ GIT_SSH = "/ bin / ssh.exe" (บน Windows) ขอบคุณ!
Martin Konicek

1
@ จัสตินคุณใช้พรอมต์ mingw32 หรือไม่?
Rex Morgan

2
ใช้ Cygwin ใน Windows 7 คำตอบข้างต้นไม่ได้ แต่ผมจำเป็นต้องไปGIT_SSHเพื่อ.bash_profileไม่.profile
เกบ

2
ในกรณีของฉันกับ Windows 10 โดยใช้ Git Bash คือGIT_SSH="D:\Program Files\Git\usr\bin\ssh.exe"
PaulH

32

ใช้ TortoiseGit

TortoiseGit> การตั้งค่า ... เครือข่าย ... ไคลเอนต์ SSH: C:\Program Files\Git\usr\bin\ssh.exe

ตำแหน่งที่แตกต่างกันของฉัน ในคอมพิวเตอร์เครื่องหนึ่งC:\Program Files (x86)\Git\bin\ssh.exe

เต่า


5
ขอบคุณ. สิ่งนี้ได้ผล หมายเหตุ: คุณอาจต้องค้นหาว่า 'ssh.exe' อยู่ที่ไหนบนเครื่องที่กำหนด สำหรับฉันมันคือ C: \ Program Files \ Git \ usr \ bin \ ssh.exe (อาจอยู่ในเครื่องที่ล้าสมัย)
pestophagous

10

"... ไม่แน่ใจว่า plink.exe หรือ peagant.exe คืออะไร ... "

เนื่องจากคุณถาม: plink & pageant เป็นส่วนหนึ่งของ PuTTY suite ซึ่งเป็นการใช้งาน SSH ที่รองรับ Linux & Windows และโดดเด่นบน Windows อย่างสมบูรณ์

สสส

Secure Shell (SSH) คือโปรโตคอลเครือข่ายการเข้ารหัสสำหรับการสื่อสารข้อมูลอย่างปลอดภัย สร้างช่องสัญญาณที่ปลอดภัยบนเครือข่ายที่ไม่ปลอดภัยในสถาปัตยกรรมไคลเอนต์เซิร์ฟเวอร์โดยเชื่อมต่อแอปพลิเคชันไคลเอนต์ SSH กับเซิร์ฟเวอร์ SSH แอ็พพลิเคชันทั่วไป ได้แก่ การล็อกอินบรรทัดคำสั่งระยะไกลการเรียกใช้คำสั่งระยะไกล แต่บริการเครือข่ายใด ๆ สามารถรักษาความปลอดภัยด้วย SSH

หากคุณเคยใช้ Telnet ก็เป็นเช่นนั้น (แต่ปลอดภัยกว่า): ช่วยให้คุณเข้าถึง bash shell (บรรทัดคำสั่ง) ของโฮสต์ Linux จากระยะไกล

อ้วน

PuTTY เป็นโปรแกรมจำลองเทอร์มินัลแบบโอเพนซอร์สคอนโซลอนุกรมและแอปพลิเคชั่นถ่ายโอนไฟล์เครือข่าย รองรับโปรโตคอลเครือข่ายหลายแบบรวมถึง SCP, SSH, Telnet, rlogin ...

บน Windows เป็นซอฟต์แวร์ที่โดดเด่นสำหรับการเข้าถึงบรรทัดคำสั่งของโฮสต์ Linux จากระยะไกลภายใต้โปรโตคอล SSH (ด้านบน) ใน Windows นามสกุล. exe ใช้สำหรับไฟล์ปฏิบัติการ ดังนั้นผู้ที่เกี่ยวกับบันทึก plink.exe & pageant.exe อาจจะใช้ไม่ได้ถ้าคุณอยู่ในลินุกซ์ PuTTY รวมถึง

Plink : อินเทอร์เฟซบรรทัดคำสั่งไปยังส่วนหลังของ PuTTY

Pageant : ตัวแทนตรวจสอบสิทธิ์ SSH สำหรับ PuTTY, PSCP และ Plink

จาก ( http://en.wikipedia.org/wiki/Secure_Shell#Key_management )

เมื่อคีย์สาธารณะอยู่ที่รีโมตเอนด์และคีย์ส่วนตัวที่ตรงกันแสดงอยู่ที่ปลายโลคัลไม่จำเป็นต้องพิมพ์รหัสผ่านอีกต่อไป ...

ดังนั้น github จึงโฮสต์บนเครื่อง Linux และใช้ SSH เพื่อรักษาความปลอดภัยในการเชื่อมต่อ SSH รับรองความถูกต้องด้วยรหัสผ่านหรือคีย์โฮสต์จำนวนมาก (github?) ตรวจสอบสิทธิ์ด้วยคีย์เท่านั้น ดูเหมือนว่าการตั้งค่าของคุณกำลังพยายามตรวจสอบสิทธิ์ด้วยคีย์ คีย์และโฮสต์ไม่ใช่แบบหนึ่งต่อหนึ่ง: คุณสามารถมีสองคีย์สำหรับโฮสต์เดียวกันและ / หรือสองโฮสต์สำหรับคีย์เดียวกันดังนั้นจึงต้องมีการจัดการ หากคุณอยู่ใน Windows เซสชัน SSH ของคุณอาจเข้าถึงได้ผ่าน plink และคีย์ของคุณอาจได้รับการจัดการโดย Pageant

นำเข้าคีย์ที่คุณต้องการทุกครั้งที่คุณโหลด Pageant ถ้าคุณทำตามคำแนะนำที่กล่าวว่า "นำเข้าที่สำคัญของคุณ" และเห็นว่ามันทำงาน แต่มันไม่ได้ทำงานในขณะนี้ดูบทที่ 9: การใช้ประกวดสำหรับการตรวจสอบ

เคล็ดลับสุดท้ายหากคุณใช้ Windows: คุณอาจมีหลายอินสแตนซ์ของชุด PuTTY ที่ติดตั้งโดยเครื่องมือต่างๆ TortoiseGit เช่นติดตั้งของตัวเอง


8

ฉันประสบปัญหานี้เนื่องจากฉันGIT_SSHชี้ไปที่เวอร์ชัน TortoiseSVN ของPlink.exe. ฉันเปลี่ยนให้ชี้ไปที่เวอร์ชัน TortoiseGit เริ่ม cmd ใหม่และใช้งานได้

ฉันจำไม่ได้แน่ชัด แต่เวอร์ชัน TortoiseSVN อาจเป็นเวอร์ชัน 32 บิตและเวอร์ชัน TortoiseGit เป็น 64 บิต (อยู่ในProgram Filesไม่ใช่Program Files (x86))

ตรวจสอบGIT_SSHenv var ของคุณอีกครั้ง

ฉันชอบใช้คอมไพล์แบบปกติcmd.exe(แน่นอนใน Console2)


คุณจำได้ถูกต้อง; ฉันมีปัญหาเดียวกันโดย GIT_SSH ชี้ไปที่ TortoiseSVN เวอร์ชัน 32 บิตของ TortoisePlink.exe การย้ายไปยังเวอร์ชันของ TortoiseGit ใช้งานได้
nitwit

6

สำหรับผู้ใช้ TortoiseGit บน Windows

เดิมทีฉันเคยตั้งค่าที่เก็บ Github / Bitbucket ส่วนใหญ่โดยใช้URL ที่เก็บ SSHตามที่ (เดิม) เคยเป็นวิธีเดียวที่สะดวกในการป้องกันไม่ให้ TortoiseGit แจ้งให้ป้อนรหัสผ่านของคุณในทุกการกระทำ

แต่การตั้ง TortoiseGit ด้วยวิธีนี้มักจะทำให้ผมเจ็บปวด ทุกครั้งที่ฉันใช้เวลาหลายชั่วโมงในการตั้งค่าอย่างถูกต้องเนื่องจากตัวเลือกการติดตั้งเริ่มต้นไม่เคยใช้งานได้ (แม้ในปี 2559 ก็ตาม!)

แต่ตอนนี้ TortoiseGit มีการจัดการรหัสผ่านที่ดีขึ้นสำหรับ HTTPS และGithub แนะนำให้ใช้ HTTPS URLทุกที่ที่เป็นไปได้

SSH URL: git@github.com:User/repo-name.git

HTTPS URL: https://github.com/User/repo-name.git

ประโยชน์ของ HTTPS คือ:

  • ไม่มีการจัดการหรือสร้างคีย์ SSH
  • ไม่จำเป็นต้องpageant.exeทำงานตลอดเวลา (ซึ่งขอรหัสผ่านของคุณในการเปิดตัวแต่ละครั้ง)
  • การใช้ TortoiseGit จากออสเตรเลียฉันพบว่าการโคลนผ่าน HTTPS นั้นเร็วกว่า SSH 5-10 เท่า

+ 'git config --global http.sslVerify false'
Mike

5

หากคุณกำลังใช้ Pageant และได้รับข้อผิดพลาดที่อธิบายไว้ในคำถามหลังจากรีบูตพีซีของคุณ (หรือปิดและเปิด Pageant ใหม่):

ข้อผิดพลาดอาจเกิดจาก Pageant ไม่มีการโหลดคีย์ GitHub SSH ตามค่าเริ่มต้น Pageant จะไม่โหลดคีย์จากเซสชันก่อนหน้าโดยอัตโนมัติเมื่อเริ่มต้น

ในการโหลดคีย์:

  1. เปิดการประกวด (ใน Windows หาก Pageant กำลังทำงานอยู่จะมีไอคอนในซิสเต็มเทรย์ให้ดับเบิลคลิกที่)
  2. คลิกปุ่มเพิ่มคีย์และดำเนินการต่อเพื่อเพิ่มคีย์ GitHub SSH ที่มีอยู่ของคุณ

เพื่อหลีกเลี่ยงปัญหานี้ในอนาคตคุณสามารถกำหนดค่า Pageant ให้โหลดคีย์ของคุณโดยอัตโนมัติเมื่อเริ่มทำงาน (การประกวดจะแจ้งให้คุณป้อนรหัสผ่านโดยอัตโนมัติหากคีย์ของคุณได้รับการป้องกันด้วยรหัสผ่าน)

ขั้นตอนในการดำเนินการนี้ (สมมติว่าคุณได้กำหนดค่า Pageant ให้ทำงานเมื่อ Windows เริ่มทำงาน):

  1. ค้นหาทางลัดที่ Windows ใช้เพื่อเรียกใช้ Pageant เมื่อ Windows เริ่มทำงาน (อาจอยู่ในโฟลเดอร์ Startup ซึ่งสามารถเปิดได้โดย Start> Run> shell:startup)
  2. ในกล่องโต้ตอบคุณสมบัติของทางลัดให้ต่อท้ายเส้นทางแบบเต็มและชื่อไฟล์ของไฟล์คีย์ SSH ลงในช่อง "เป้าหมาย"

อ้างอิงและรายละเอียดทั้งหมด: http://blog.shvetsov.com/2010/03/making-pageant-automatically-load-keys.html


4

ปัญหาของฉันคือฉันพยายามใช้ชื่อผู้ใช้ github ของฉัน เห็นได้ชัดเมื่อใช้ Github (หรือว่ามันเป็นสิ่งที่ Git?)gitถ้าคุณใช้การตรวจสอบที่สำคัญที่ใช้คุณจะต้องตั้งชื่อผู้ใช้ของคุณไป

ฉันไม่แน่ใจว่าทำไมคุณถึงต้องมีชื่อผู้ใช้ - บางทีอาจมีคนที่มีความรู้มากกว่านี้สามารถอธิบายได้


เมื่อโคลนที่เก็บส่วนตัวจะต้องเป็น URL เช่น git@github.com: username / Repository.git ฉันไม่แน่ใจในวิทยาศาสตร์ที่อยู่เบื้องหลังมันทั้งหมด แต่ดูเหมือนว่าgitเป็นชื่อผู้ใช้ทั่วไปสำหรับทุกบัญชี Github
ฤดูหนาว

1
PLink / Pageant ทำงานได้ดี นี่เป็นปัญหาที่เกิดขึ้นจริงและการใช้สิ่งที่ชอบssh://git@github.com/myname/repo.gitจะได้ผลดี ทำได้ดีมาก ทำไมฉันคิดว่ามันเป็นการปิดกั้นความปลอดภัย ผู้ใช้ 'git' ปิดการใช้งานการเข้าสู่ระบบดังนั้นจึงไม่มีใครสามารถเจาะระบบด้วยวิธีนั้นได้ พวกเขาต้องมีคีย์ที่ถูกต้องเพื่อพูดคุยกับ Github และเมื่อพวกเขามีคีย์ที่ถูกต้องพวกเขาสามารถจับคู่กับผู้ใช้เพื่อเข้าสู่ระบบได้
ChokesMcGee

2

บนเครื่อง Windows 7 ของฉันที่ใช้ Github สำหรับ Windows โดยใช้ git เวอร์ชัน 1.8.3.msysgit.0 ฉันพบว่าการอัปเดตตัวแปรสภาพแวดล้อมระบบของฉัน GIT_SSH เป็น C: \ Program Files (x86) \ Git \ bin \ ssh.exe ดูเหมือนจะทำเคล็ดลับ นอกจากนี้ยังแก้ไขปัญหาของฉันในการติดต่อ git repo ของ OpenShift


2

ทำงานให้ฉันใน Windows 8: ตัวแปร GIT_SSH ชี้ไปที่ plink.exe เปลี่ยนแปลงในการตั้งค่าระบบเพื่อชี้ไปที่ไบนารี ssh และนั่นได้แก้ไขปัญหาแล้ว หากต้องการค้นหาเส้นทางแบบเต็มไปยัง ssh ให้เรียกใช้:

where ssh

2

เพื่อแก้ไขปัญหานี้นี่คือสิ่งที่ฉันทำ

ฉันใช้ Git Bash บน Windows 10

ฉันเริ่ม Pageant กดเพิ่มคีย์

ป้อนคำอธิบายภาพที่นี่

ไปที่โฟลเดอร์ C: \ Users \ username \ .ssh และเลือกรหัสของฉัน

ป้อนคำอธิบายภาพที่นี่

จากนั้นฉันก็พยายามทำการกดคอมไพล์และมันก็ได้ผลในครั้งนี้


โปรดจำไว้ว่าคุณอาจต้องทำสิ่งนี้ทุกครั้งที่คุณรีบูตพีซี Windows ของคุณคุณอาจใส่ Pageant ลงในโฟลเดอร์เริ่มต้นของคุณเป็นทางลัดที่มีอาร์กิวเมนต์บรรทัดคำสั่งที่ถูกต้องไปยังไฟล์คีย์ส่วนตัวของคุณ แต่ถ้าคุณตั้งรหัสผ่านไว้ใน คีย์ส่วนตัวเมื่อคุณสร้างขึ้นคุณจะต้องอย่าลืมคลิกขวาที่ไอคอน Pageant ในถาดเครื่องมือของคุณเลือก "เพิ่มคีย์" และกรอกข้อมูลหลังจากรีบูตแต่ละครั้ง
webbje


1

ฉันพบปัญหาเดียวกันนี้ แต่ดูเหมือนว่าโซลูชัน GIT_SSH จะใช้ได้ผลสำหรับฉันเพียงครั้งเดียว หลังจากรีสตาร์ทคอมพิวเตอร์ฉันรู้ว่ามันเป็นอย่างอื่นเนื่องจากฉันสามารถโคลนที่เก็บส่วนตัวของฉันได้โดยไม่มีปัญหาโดยใช้ Git Bash หรือ Command Prompt แต่ไม่ใช่ใน Sublime Text 3 ด้วยปลั๊กอิน SublimeGit วิธีแก้ปัญหาของฉันง่ายมากและเป็นสิ่งที่@BlueRaja - Danny Pflughoeftกล่าวถึง แต่ฉันคิดว่ามันสามารถใช้ทิศทางบางอย่างได้;)

โดยทั่วไปคุณเพียงแค่ต้องแก้ไขและตรวจสอบชื่อผู้ใช้~/.ssh/config gitคุณสามารถบอกให้ใช้คีย์ SSH เฉพาะสำหรับ Github - ~/.ssh/configไฟล์ของฉันมีลักษณะดังต่อไปนี้:

Host gh
    Hostname github.com
    User git
    IdentityFile ~/.ssh/github_rsa.pub

ฉันมีความสำคัญโดยเฉพาะสำหรับ Github เนื่องจากจำนวนของสิ่งอื่น ๆ ที่ผมทำตลอดทั้งวันของฉัน แต่ถ้าคุณได้มีเพียงคนเดียวแล้วมันมักจะเป็น~/.ssh/id_rsa.pubเช่นGithub อธิบายที่นี่

ฉันรู้ว่าทุกคนมีวิธีแก้ปัญหาที่แตกต่างกัน แต่ฉันจะทิ้งไว้ที่นี่สำหรับทุกคนที่อาจพบบทความนี้โดยไม่มีการแก้ไข โชคดี!


1

ฉันได้รับข้อผิดพลาดนี้เมื่อใช้ TortoiseGit เพื่อโคลนที่เก็บจาก GitHub แก้ไขโดยการคลิก "Load Putty Key" และเลือกไฟล์คีย์ (* .pkk) ในกล่องโต้ตอบ Git clone



0

ฉันพบปัญหานี้ (ssh โดยตรงใช้งานได้ แต่การดึงคอมไพล์ล้มเหลว) เนื่องจาก git remote ของฉันไม่เป็นอย่างที่ฉันคิด

ใช่ฉันรู้ว่ามันเป็นความผิดพลาดที่โง่เขลา แต่มันเกิดขึ้นและควรตรวจสอบ

ใช้ git remote -v


0

ฉันมีปัญหาคล้ายกันหลังจากอัปเดต GitExtensions เป็นเวอร์ชัน 3.3.0.7719

อย่างไรก็ตามมันคืนการตั้งค่าการตรวจสอบสิทธิ์ของฉันเพื่อใช้ PuTTY แทน OpenSSH

ในเวอร์ชันนั้นนี่คือเมนูที่ฉันใช้เพื่อเปิดใช้งาน OpenSSH อีกครั้ง:

ป้อนคำอธิบายภาพที่นี่

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