หากคุณกำลังใช้ SSH และคีย์ส่วนตัวของคุณจะถูกเข้ารหัสด้วยรหัสผ่านแล้วคุณจะยังคงต้องป้อนข้อความรหัสผ่าน / รหัสผ่านสำหรับคีย์ส่วนตัวเมื่อคุณทำดำเนินงานเครือข่ายกับ Gitเหมือนpush
, และpull
fetch
ใช้ ssh-agent เพื่อบันทึกไพรเวตคีย์รหัสผ่าน / หนังสือรับรองรหัสผ่าน
หากคุณต้องการที่จะหลีกเลี่ยงการใส่รหัสผ่านทุกครั้งที่คุณสามารถใช้ssh-agent
ในการจัดเก็บข้อมูลประจำตัวของวลีรหัสผ่านคีย์ส่วนตัวของคุณอีกครั้งต่อเซสชั่นสถานีที่ผมอธิบายในคำตอบของฉันไม่สามารถเปิดการเชื่อมต่อกับการตรวจสอบตัวแทนของคุณ :
$ eval `ssh-agent -s`
$ ssh-add
ใน Windows msysgit Bash คุณต้องประเมินผลลัพธ์ของssh-agent
แต่ฉันไม่แน่ใจว่าคุณต้องทำเช่นเดียวกันในสภาพแวดล้อมการพัฒนาและระบบปฏิบัติการอื่น ๆ หรือไม่
ssh-add
ค้นหาคีย์ส่วนตัวใน.ssh
โฟลเดอร์บ้านของคุณชื่อid_rsa
ซึ่งเป็นชื่อเริ่มต้น แต่คุณสามารถส่งไฟล์พา ธ ไปยังคีย์ด้วยชื่ออื่น
ฆ่าตัวแทน
เมื่อเสร็จสิ้นเซสชันเทอร์มินัลของคุณคุณสามารถปิดssh-agent
ด้วยการตั้งค่าสถานะฆ่า-k
:
$ ssh-agent -k
ตามที่อธิบายไว้ในssh-agent
คู่มือ :
-k
ฆ่าเอเจนต์ปัจจุบัน (กำหนดโดยตัวแปรสภาพแวดล้อม SSH_AGENT_PID)
หมดเวลาเสริม
นอกจากนี้ยังสามารถใช้พารามิเตอร์การหมดเวลาที่เป็นตัวเลือกเช่น:
$ ssh-add -t <timeout>
ที่<timeout>
เป็นรูปแบบ<n>h
สำหรับ<n>
ชั่วโมง<n>m
สำหรับ<n>
นาทีและอื่น ๆ
ตามssh-agent
คู่มือ :
-t life
ตั้งค่าเริ่มต้นสำหรับอายุการใช้งานสูงสุดของรหัสประจำตัวที่เพิ่มให้กับเอเจนต์ อายุการใช้งานอาจมีการระบุไว้ในวินาทีหรือในรูปแบบเวลาที่ระบุไว้ในsshd_config (5) อายุการใช้งานที่ระบุสำหรับข้อมูลเฉพาะตัวที่มีssh-add (1)จะแทนที่ค่านี้ หากไม่มีตัวเลือกนี้อายุการใช้งานสูงสุดเริ่มต้นจะคงอยู่ตลอดไป
ดูหน้านี้สำหรับรูปแบบที่มีเวลามากขึ้น
คำเตือนความปลอดภัยสำหรับผู้ใช้ Cygwin
ผู้ใช้ Cygwin ควรตระหนักถึงความเสี่ยงที่อาจเกิดขึ้นกับการใช้ ssh-agent ใน Cygwin :
ผู้คนควรตระหนักถึงอันตรายที่อาจเกิดขึ้นของ ssh-agent ภายใต้ Cygwin 1แม้ว่าจะอยู่ภายใต้ netstat ท้องถิ่นและ portscan ระยะไกลก็ไม่ปรากฏว่าพอร์ตที่ระบุใน / tmp / ssh-foo สามารถเข้าถึงได้กับทุกคน ... ?
[1]: http://www.cygwin.com/ml/cygwin/2001-01/msg00063.html
และที่ลิงค์ที่อ้างถึง :
อย่างไรก็ตามโปรดทราบว่าซ็อกเก็ต Unix ของ Cygwin นั้นไม่ปลอดภัยเป็นอย่างยิ่งดังนั้นฉันจึงขอลดการใช้ ssh-agent ภายใต้ Cygwin อย่างมาก
เมื่อคุณเรียกใช้ ssh-agent ภายใต้ Cygwin มันจะสร้างซ็อกเก็ต AF_UNIX ใน/tmp/ssh-$USERNAME/
ไดเรกทอรี ภายใต้ซ็อกเก็ต Cygwin AF_UNIX จะถูกจำลองผ่านซ็อกเก็ต AF_INET คุณสามารถเห็นได้อย่างง่ายดายว่าหากคุณดู/tmp/ssh-$USERNAME/agent-socket-*
ไฟล์ผ่าน Notepad คุณจะเห็นสิ่งที่ชอบ
!<socket >2080
จากนั้นเรียกใช้netstat -a
และแปลกใจ! คุณมีบางโปรแกรมที่ฟังพอร์ต 2080 เป็น ssh-agent เมื่อ ssh ได้รับการท้าทาย RSA จากเซิร์ฟเวอร์มันหมายถึงที่เกี่ยวข้อง/tmp/ssh-$USERNAME/agent-socket-*
(ภายใต้ Cygwin ในกรณีของเรานั่นหมายความว่ามันจะเปิดการเชื่อมต่อไปยังlocalhost:2080
) และขอให้ตัวแทน ssh ในการประมวลผลการท้าทาย RSA ด้วยรหัสส่วนตัวที่มีอยู่แล้ว มันเพียงผ่านการตอบสนองที่ได้รับจาก ssh-agent ไปยังเซิร์ฟเวอร์
ภายใต้ Unix สถานการณ์ดังกล่าวทำงานได้โดยไม่มีปัญหาเนื่องจากเคอร์เนล Unix ตรวจสอบสิทธิ์เมื่อโปรแกรมพยายามเข้าถึงซ็อกเก็ต AF_UNIX อย่างไรก็ตามสำหรับซ็อกเก็ต AF_INET การเชื่อมต่อจะไม่ระบุชื่อ (อ่าน "ไม่ปลอดภัย") ลองนึกภาพว่าคุณมี Cygwin ssh-agent กำลังทำงานอยู่ แฮกเกอร์ประสงค์ร้ายอาจสแกนกล่องของคุณค้นหาพอร์ตเปิดที่ใช้โดย ssh-agent เปิดการเชื่อมต่อไปยังเซิร์ฟเวอร์ SSH ของคุณรับการท้าทาย RSA จากนั้นส่งไปยัง ssh-agent ผ่านพอร์ตเปิดที่เขา / เธอพบได้รับ ตอบกลับ RSA ส่งไปยังเซิร์ฟเวอร์ SSH และ voila เขา / เธอประสบความสำเร็จในการเข้าสู่เซิร์ฟเวอร์ของคุณในขณะที่คุณ