สร้างคู่กุญแจจากระยะไกลโดยไม่ต้องใช้วลีรหัสผ่าน


2

ฉันกำลังพยายามสร้างคู่คีย์ (ไม่มีข้อความรหัสผ่าน) บนเครื่องระยะไกล คำสั่งที่ฉันใช้สำหรับสิ่งนี้คือ:

ssh root@REMOTEIP ssh-keygen -t rsa -f /root/.ssh/id_rsa_new -q -N ""

ผลลัพธ์ของคำสั่งนี้คือ:

ssh-keygen: option requires an argument -- N
Usage: ssh-keygen [options]
Options:
  -a trials   Number of trials for screening DH-GEX moduli.
  -B          Show bubblebabble digest of key file.
  -b bits     Number of bits in the key to create.
  -C comment  Provide new comment.
  -c          Change comment in private and public key files.
  -e          Convert OpenSSH to IETF SECSH key file.
  -F hostname Find hostname in known hosts file.
  -f filename Filename of the key file.
  -G file     Generate candidates for DH-GEX moduli.
  -g          Use generic DNS resource record format.
  -H          Hash names in known_hosts file.
  -i          Convert IETF SECSH to OpenSSH key file.
  -l          Show fingerprint of key file.
  -M memory   Amount of memory (MB) to use for generating DH-GEX moduli.
  -N phrase   Provide new passphrase.
  -P phrase   Provide old passphrase.
  -p          Change passphrase of private key file.
  -q          Quiet.
  -R hostname Remove host from known_hosts file.
  -r hostname Print DNS resource record.
  -S start    Start point (hex) for generating DH-GEX moduli.
  -T file     Screen candidates for DH-GEX moduli.
  -t type     Specify type of key to create.
  -v          Verbose.
  -W gen      Generator to use for generating DH-GEX moduli.
  -y          Read private key file and print public key.

เมื่อฉันใช้วลีรหัสผ่านคำสั่งทำงานได้ดี:

ssh root@REMOTEIP ssh-keygen -t rsa -f /root/.ssh/id_rsa_new -q -N "12345"

คำตอบ:


1

เพื่อหลีกเลี่ยงปัญหานี้คุณต้องอ้างอิงคำสั่งทั้งหมดเพื่อหลีกเลี่ยงการถูกแยกโดยเชลล์ในเครื่อง:

ssh root@REMOTEIP "ssh-keygen -t rsa -f /root/.ssh/id_rsa_new -q -N ''"

ปัญหาคือว่า sshเพื่อให้เข้ากันได้กับ rsh (ซึ่งมันถูกแทนที่ในขั้นต้น) ส่งบรรทัดคำสั่งทั้งหมดเป็น เดียว อาร์กิวเมนต์ที่ส่งผ่านไปยังเปลือกระยะไกล (บน Unix $SHELL -c "your command" )

  1. เมื่อคุณวิ่ง

    ssh root@REMOTEIP ssh-keygen -t rsa -f /root/.ssh/id_rsa_new -q -N ""

  2. เชลล์โลคัลรัน

    ["ssh", "root@REMOTEIP", "ssh-keygen", "-t", "rsa", "-f", "/root/.ssh/id_rsa_new", "-q", "-N", ""]

  3. ที่ ssh เชื่อมต่อเข้าด้วยกันเพื่อรับ

    "ssh-keygen -t rsa -f /root/.ssh/id_rsa_new -q -N "

  4. และรีโมตเชลล์แยกอีกครั้ง

    ["ssh-keygen", "-t", "rsa", "-f", "/root/.ssh/id_rsa_new", "-q", "-N"]

    - สังเกตเห็นอาร์กิวเมนต์ว่างที่หายไป

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