วิธีการทำให้คอมไพล์ไม่พร้อมท์สำหรับวลีรหัสผ่านสำหรับคีย์ ssh บน windows?


43

ฉันใช้ git bash และฉันตั้งค่า ssh key โดยใช้ ssh-keygen และทุกครั้งที่ฉันทำอะไรกับ repo git ขอรหัสผ่านสำหรับ/c/Users/jankiewj/.ssh/id_rsaฉัน มีวิธีปิดการใช้งานข้อความรหัสผ่านนั้นหรือไม่


หน้านี้ใน serverfault อาจช่วยserverfault.com/questions/194567/…

@ Radoo มันไม่ได้ช่วย
jcubic

คำตอบ:


56

คุณสามารถเรียกใช้สิ่งนี้ได้ใน git bash:

eval `ssh-agent -s`
ssh-add ~/.ssh/*_rsa

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

การเพิ่มวลีรหัสผ่านใน git bash บน Windows


7
ฉันต้องป้อนมันอีกครั้งทันทีที่ฉันปิด bash git ... มีวิธีแก้ปัญหาแบบถาวรหรือไม่?
Black

@Back มันต่อเซสชันทุบตีฉันได้ใส่มันลงไป.bashrcดังนั้นทุกครั้งที่ฉันเปิด git bash ฉันจะได้รับพรอมต์และสำหรับเซสชันนั้นฉันก็พร้อมแล้ว
jcubic

คุณใส่อะไรลงใน. bashrc อย่างแน่นอน และ. bashrc อยู่ที่ไหน
ดำ

แก้ไข: ไม่เป็นไรคุณต้องสร้างไฟล์ yourselv ~/.bashrcจากนั้นป้อนบรรทัดจากโพสต์ของคุณลงไปแล้วบันทึกเลย :) ขอบคุณ!
ดำ

แทนการใช้สายดังกล่าวข้างต้นโดยเฉพาะใน.bashrcผมจะใช้สคริปต์และวางไว้ทั้งในหรือ .bash_profile นี่คือตัวอย่างของส่วนหลักของฉันควรแก้ไขปัญหานี้สำหรับทุกคนที่ยังคงมองหาคำตอบ มันคล้ายกับคำตอบด้านล่าง ที่ด้านบนสุดของสคริปต์ฉันโหลดของฉันซึ่งถ้าไม่สามารถใช้ได้ก็แค่ปล่อยไว้ หมายเหตุ: คุณจะต้องเปลี่ยนการอ้างอิงถึงสิ่งที่คุณตั้งชื่อคีย์ SSH ส่วนตัวของคุณและอาจเป็นเส้นทาง .profile.bash_profile.bashrcid_rsa
Rockin4Life33

9

ทางออกที่ดีกว่าและถาวรเล็กน้อยคือการเปิดตัว ssh-agent โดยอัตโนมัติเมื่อเปิด git bash บน windows คุณสามารถคัดลอก / วางด้านล่างใน. profile หรือ. bashrc ของคุณ ฉันชอบที่จะวางมันลงบน. profile

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env

การแก้ปัญหานี้นำมาจากบทความช่วยเหลือ GitHub นี้


ฉันใส่รหัสง่าย ๆ ลงไป.bashrcโซลูชันของคุณแตกต่างอย่างไร บน Windows ทุบตีแต่ละเชลล์มีความเป็นอิสระดังนั้นเอเจนต์จะไม่ทำงานเมื่อคุณรันเชลล์
jcubic

.bashrcวิธีการแก้ปัญหาการทำงานที่ดีโดยการใส่รหัสลงใน พร้อมท์ข้อความรหัสผ่าน ssh ในครั้งแรกเท่านั้น Safed ชีวิตของฉัน ขอขอบคุณ.
Ben Asmussen

ขอบคุณที่ช่วยชีวิตฉันไว้มาก
gumuruh

นี่ควรเป็นคำตอบที่ได้รับการยอมรับเพราะมันนำเสนอวิธีแก้ปัญหาที่คงอยู่และตรงกับสิ่งที่ฉันคิดว่า OP ขอ
Richard D

ฉันควรทำอย่างไรถ้าฉันพิมพ์รหัสผ่านผิดเมื่อเริ่มต้นโดยไม่ตั้งใจ? แก้ไข: ขึ้นอยู่กับsuperuser.com/a/271673/647110คุณสามารถssh-add -Dลบคีย์ทั้งหมดได้
Nils Guillermin

1

ฉันไม่แน่ใจว่าฉันต้องการที่จะแนะนำ แต่เมื่อคุณสร้างคีย์และขอให้ตั้งรหัสผ่านเพียงกด Enter และข้ามรหัสผ่าน

ดูที่ลิงค์นี้สำหรับวิธีการใช้ssh-keygen: https://help.github.com/articles/working-with-ssh-key-passphrases/

อาจssh-agentช่วยคุณได้ แต่ไม่แน่ใจว่าไม่ทราบระบบปัจจุบันของคุณ


4
ไม่ใช่คำตอบที่ดีแน่นอน
Kennet Celeste

มันเป็นวิธีเดียวที่จะแก้ปัญหาได้ใน windows 10 หลังจากทำตามขั้นตอนทั้งหมดของ "การสร้างคีย์ SSH ใหม่และเพิ่มลงในคำแนะนำ github ssh-agent" มันก็มักจะถามฉันสำหรับวลีรหัสผ่าน แม้หลังจากเพิ่มแล้ว พฤติกรรมนั้นทำให้กระแสการปรับใช้ Maven ของฉันแย่ลงเพราะในmvn release:performช่วงที่มันพยายามเช็คเอาต์แท็กการปล่อยโดยไม่ต้องใส่ข้อความรหัสผ่าน ดังนั้นการล้างข้อความรหัสผ่านเท่านั้นจึงแก้ไขปัญหานี้ได้
Fernando Miguel Carvalho

-3

ป้อนคำสั่ง git นี้ในตำแหน่ง repos ของคุณ " ssh-keygen -p " จากนั้นระบบจะแจ้งให้คุณป้อนตำแหน่ง keyfile, วลีรหัสผ่านเก่าและวลีรหัสผ่านใหม่ (ซึ่งสามารถเว้นว่างไว้เพื่อไม่มีข้อความรหัสผ่าน) อย่าป้อนอะไรในรหัสผ่านใหม่และมันจะลบข้อความรหัสผ่าน


1
การปล่อยรหัสผ่านว่างเปล่านั้นไม่ปลอดภัยและ devs ขององค์กรจำนวนมากจะไม่สามารถมีข้อความรหัสผ่านที่ว่างเปล่าได้เนื่องจากข้อ จำกัด มันเป็นวิธีการแก้ปัญหาที่อ่อนแอไม่ได้แก้ปัญหาสำหรับปัญหา OP
cbaldan

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