อัตโนมัติ ssh-keygen -t rsa ดังนั้นจึงไม่ขอรหัสผ่าน


164

ฉันจำเป็นต้องssh-keygen -t rsaใช้รหัสผ่านอัตโนมัติเช่นป้อนที่พรอมต์
ฉันจะทำสิ่งนั้นจากเชลล์สคริปต์ได้อย่างไร

คำตอบ:


230

ในการสร้างคีย์แพร์ SSH โดยไม่ได้รับพร้อมท์สำหรับวลีรหัสผ่านคุณสามารถทำสิ่งต่อไปนี้:

$ ssh-keygen -f id_rsa -t rsa -N ''

2
ทำงานให้ฉัน! Github มักถามหารหัสผ่านโดยไม่มีตัวเลือก -N แม้ว่าจะไม่ได้ป้อนรหัสผ่านหลังจาก promt "ป้อนข้อความรหัสผ่าน (ไม่มีข้อความรหัสผ่านว่างเปล่า)"
Hollerweger

4
ใน RHEL 6 ฉันพบข้อผิดพลาดนี้: " ssh-keygen: option requires an argument -- N" :(
Anthony O.

1
ตกลงนี่เป็นเพราะฉันใช้dzdoคำสั่งอยู่ข้างหน้าดังนั้นฉันจึงต้องเขียน:dzdo -i -u target_user ssh-keygen -f id_rsa -t rsa -N "''"
แอนโธนีโอ

1
ปรากฏว่าพื้นที่แยกตัวเลือกและวลีรหัสผ่านที่ว่างเปล่า-N ''มีความสำคัญ เมื่อฉันเพิ่มพื้นที่มันก็ประสบความสำเร็จ!
GH05T

33

หากคุณต้องการทำสิ่งนี้จาก PowerShell ใน windows ให้ใช้:

ssh-keygen -f $Name -t rsa -N '""'

โปรดทราบว่าคุณต้องแน่ใจว่าไดเรกทอรี git bin อยู่ในเส้นทางของคุณ:

$sshPath = "<path>\git\bin\"

$env:path += ";$sshPath"

จากนั้นใช้ใน PoshGit เพียง:

Add-SshKey "<path>\.shh\KeyFilename"

ขอบคุณสำหรับสิ่งนี้. BTW git\usr\binเป็น dir ที่ถูกต้อง
majkinetor

4
มันไม่ได้ผลสำหรับฉัน ฉันได้รับข้อผิดพลาด "การบันทึกคีย์" mykey "ล้มเหลว: ข้อความรหัสผ่านสั้นเกินไป (อักขระขั้นต่ำสี่ตัว)" ผมต้องสลับคู่ / ssh-keygen -f $Name -t rsq -N '""'ราคาเดียวเช่น
แอรอนเซ่น

1
@AaronJensen เหมือนกันสำหรับฉัน ขอบคุณสำหรับการแก้ไข ฉันใช้'""'
Trevor Sullivan

@AaronJensen ขอบคุณ! '""'เป็นรุ่นเดียวที่ทำงานให้ฉัน
Somnium

@ Daniel- น้อยฉันไม่สามารถหาโมดูล PoshGit เพียงคนเดียวที่ฉันพบด้วยชื่อนี้คือ posh-git ซึ่งดูเหมือนจะไม่มี cmdlet นี้ มีข้อมูลเพิ่มเติมอีกไหม
Jim

18
$ ssh-keygen -f $HOME/.ssh/id_rsa -t rsa -N ''

คำตอบนี้ถูกคัดลอกและวางจากคำตอบโดย Shamoon
oᴉɹǝɥɔ

@ oᴉɹǝɥɔคำตอบโดย Shamoon ไม่ได้ระบุเส้นทางไปยังคีย์ส่วนตัวอย่างชัดเจน
GMaster

11

เพียงการแก้ไขเพื่อตอบ 2 ... ฉันพบในระบบ OL และ RHEL ของฉันชื่อไฟล์ควรเป็น id_rsa ไม่ใช่ id.rsa

ดังนั้นในระบบ OL หรือ RHEL คำสั่งจะเป็น:

$ ssh-keygen -f id_rsa -t rsa -N ''

2
เท่าที่ฉันเข้าใจid_rsaคือชื่อไฟล์เริ่มต้นสำหรับคีย์ RSA ดังนั้นหากคุณต้องการใช้ค่าเริ่มต้นคุณจะไม่ถูกบังคับให้ใช้-fตัวเลือกนี้อย่างชัดเจน
danidemi

3
@danidemi ในขณะที่คุณพูดถูกว่าเป็นค่าเริ่มต้นเหตุผลหนึ่งในการระบุ-fตัวเลือกคือเพื่อให้คุณสามารถดำเนินการในสคริปต์ คุณสามารถยืนยันค่าเริ่มต้นอีกครั้งเพื่อปิดใช้งานพรอมต์ที่ตามมา
Tristan Reid

9

เกี่ยวกับ:

ssh-keygen -q -t rsa -f ~/.ssh/id_rsa -N ''

ตามที่ระบุไว้ในman ssh-keygen:

SYNOPSIS
     ssh-keygen [-q] [-b bits] [-t dsa | ecdsa | ed25519 | rsa | rsa1] [-N new_passphrase] [-C comment] [-f output_keyfile]
(...)
      -q      Silence ssh-keygen.

(ที่อยู่กับopenssh-clientแพคเกจใน Debian 9.4 ยืด: OpenSSH_6.7p1 Debian-5+deb8u4)


ทำงานให้ฉันขอบคุณ (OpenSSH_7.6p1 Ubuntu-4ubuntu0.2)
David Webster

0

ฉันต้องการอัตโนมัติในสคริปต์ทุบตีคำสั่ง ssh-keygen และคำตอบสุดท้ายที่ทำงานได้ดีกับฉัน:

echo -e "\n" | ssh-keygen -N "" &> /dev/null

คำสั่ง echo พร้อมกับ -e ตีความ "\ n" เป็นคีย์ Enter แต่ไม่สามารถทำงานกับวลีรหัสผ่าน จากนั้นใช้ตัวเลือก -N "" (ข้อความรหัสผ่านว่างเปล่า) รหัสผ่านจะว่างเปล่าและจะไม่ถามอะไรเลย &> / dev / null จะส่ง 'stdout' และ 'stderr' ไปยัง / dev / null ดังนั้นจึงไม่มีสิ่งใดพิมพ์ผ่านหน้าจอ


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