Score:3

เหตุใดสคริปต์ปฏิบัติการจึงทำงานแตกต่างจากเมื่อรันคำสั่งด้วยตนเอง

ธง tr

ฉันกำลังพยายามเพิ่มรหัสส่วนตัวใน sshagent ของฉัน เรียกใช้คำสั่ง

$ eval "$ (ตัวแทน ssh -s)"
$ ssh-เพิ่ม ~/.ssh/id_rsa_personal

ทำงานได้ดีดังนั้นเมื่อฉันวิ่ง ssh-เพิ่ม -lฉันเห็นว่ามีการเพิ่มคีย์แล้ว นี่เป็นกรณีเช่นกันแม้ว่าจะไม่ได้เรียกใช้ อีวาล คำสั่งเลย (ซึ่งอาจทำให้เกิดคำถามว่าทำไมฉันถึงต้องเรียกใช้) อย่างไรก็ตาม หากฉันสร้างไฟล์ปฏิบัติการแทน add_key.sh (ใช้ shebang และ chmod +x) และเพิ่มคำสั่งที่แน่นอนเหล่านั้นเข้าไป แล้วเรียกใช้ ssh-เพิ่ม -l ไม่แสดงคีย์และแสดงแทน "ตัวแทนไม่มีตัวตน".

ถ้าฉันแสดงความคิดเห็นออก อีวาล คำสั่งในสคริปต์และรัน ไม่มีปัญหา และเพิ่มคีย์ให้กับเอเจนต์อย่างถูกต้อง มันเกี่ยวกับสคริปต์ของฉันที่เป็นสาเหตุ ssh-เพิ่ม เพื่อเพิ่มรหัสไม่สำเร็จ และเหตุใดจึงไม่ใช่ปัญหาหากฉันแสดงความคิดเห็น อีวาล คำสั่งจากสคริปต์หรือเพียงแค่เรียกใช้คำสั่งด้วยตนเอง?

waltinator avatar
it flag
ลอง `echo "$(ssh-agent -s)";echo $SHELL` คุณเคลียร์คีย์สเปซของคุณก่อนทำการทดสอบหรือไม่?
Score:5
ธง hr

ssh-ตัวแทน -s เริ่ม ก ใหม่ ตัวแทน; เมื่อคุณ อีวาล ผลลัพธ์ของมัน คุณเปลี่ยนสภาพแวดล้อมของเชลล์เพื่อให้สิ่งต่อไปนี้ ssh-เพิ่ม เพิ่มเอกลักษณ์ให้กับ นั่น ตัวแทน.

หากคุณทำเช่นนั้นในสคริปต์ เมื่อคุณกลับสู่สภาพแวดล้อมพาเรนต์ ค่าใหม่ของ SSH_AUTH_SOCK / SSH_AGENT_PID หายไป ดังนั้น (แม้ว่าตัวแทนใหม่จะยังคงทำงานอยู่) ssh-เพิ่ม -l ไม่สามารถเชื่อมต่อได้

เมื่อคุณเพิ่งวิ่ง ssh-ตัวแทน -s ปราศจาก อีวาลมันเริ่มเอเจนต์ใหม่ แต่เพิ่งพิมพ์สภาพแวดล้อมใหม่ไปยังเอาต์พุตมาตรฐาน ดังนั้น ssh-เพิ่ม เพิ่มข้อมูลประจำตัวใหม่ให้กับตัวแทนใดๆ ที่รันอยู่ในสภาพแวดล้อมพาเรนต์แล้ว

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา