ฉันจำเป็นต้องssh-keygen -t rsa
ใช้รหัสผ่านอัตโนมัติเช่นป้อนที่พรอมต์
ฉันจะทำสิ่งนั้นจากเชลล์สคริปต์ได้อย่างไร
ฉันจำเป็นต้องssh-keygen -t rsa
ใช้รหัสผ่านอัตโนมัติเช่นป้อนที่พรอมต์
ฉันจะทำสิ่งนั้นจากเชลล์สคริปต์ได้อย่างไร
คำตอบ:
ในการสร้างคีย์แพร์ SSH โดยไม่ได้รับพร้อมท์สำหรับวลีรหัสผ่านคุณสามารถทำสิ่งต่อไปนี้:
$ ssh-keygen -f id_rsa -t rsa -N ''
ssh-keygen: option requires an argument -- N
" :(
dzdo
คำสั่งอยู่ข้างหน้าดังนั้นฉันจึงต้องเขียน:dzdo -i -u target_user ssh-keygen -f id_rsa -t rsa -N "''"
-N ''
มีความสำคัญ เมื่อฉันเพิ่มพื้นที่มันก็ประสบความสำเร็จ!
หากคุณต้องการทำสิ่งนี้จาก PowerShell ใน windows ให้ใช้:
ssh-keygen -f $Name -t rsa -N '""'
โปรดทราบว่าคุณต้องแน่ใจว่าไดเรกทอรี git bin อยู่ในเส้นทางของคุณ:
$sshPath = "<path>\git\bin\"
$env:path += ";$sshPath"
จากนั้นใช้ใน PoshGit เพียง:
Add-SshKey "<path>\.shh\KeyFilename"
git\usr\bin
เป็น dir ที่ถูกต้อง
ssh-keygen -f $Name -t rsq -N '""'
ราคาเดียวเช่น
'""'
'""'
เป็นรุ่นเดียวที่ทำงานให้ฉัน
เพียงการแก้ไขเพื่อตอบ 2 ... ฉันพบในระบบ OL และ RHEL ของฉันชื่อไฟล์ควรเป็น id_rsa ไม่ใช่ id.rsa
ดังนั้นในระบบ OL หรือ RHEL คำสั่งจะเป็น:
$ ssh-keygen -f id_rsa -t rsa -N ''
id_rsa
คือชื่อไฟล์เริ่มต้นสำหรับคีย์ RSA ดังนั้นหากคุณต้องการใช้ค่าเริ่มต้นคุณจะไม่ถูกบังคับให้ใช้-f
ตัวเลือกนี้อย่างชัดเจน
-f
ตัวเลือกคือเพื่อให้คุณสามารถดำเนินการในสคริปต์ คุณสามารถยืนยันค่าเริ่มต้นอีกครั้งเพื่อปิดใช้งานพรอมต์ที่ตามมา
เกี่ยวกับ:
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
)
ฉันต้องการอัตโนมัติในสคริปต์ทุบตีคำสั่ง ssh-keygen และคำตอบสุดท้ายที่ทำงานได้ดีกับฉัน:
echo -e "\n" | ssh-keygen -N "" &> /dev/null
คำสั่ง echo พร้อมกับ -e ตีความ "\ n" เป็นคีย์ Enter แต่ไม่สามารถทำงานกับวลีรหัสผ่าน จากนั้นใช้ตัวเลือก -N "" (ข้อความรหัสผ่านว่างเปล่า) รหัสผ่านจะว่างเปล่าและจะไม่ถามอะไรเลย &> / dev / null จะส่ง 'stdout' และ 'stderr' ไปยัง / dev / null ดังนั้นจึงไม่มีสิ่งใดพิมพ์ผ่านหน้าจอ
$ printf '\n' | ssh-keygen -N ''