ใครเป็นผู้เริ่มต้น ssh-agent ของฉันและทำไมมันถึงไม่จบอย่างถูกต้อง?
นี่เป็นปัญหาที่ฉันมีมาเป็นเวลานาน แต่ทุกครั้งที่ฉันพยายามคิดอะไรบางอย่างที่ฉันหลงทางดังนั้นฉันจึงคิดว่าฉันควรถามที่นี่ว่าอาจมีใครบางคนที่มีประสบการณ์มากกว่าสามารถช่วยฉันได้ พื้นหลัง Raspberry Pi ของฉันใช้ Raspbian Jessie และฉันใช้ SSH บ่อยครั้งเพื่อเข้าสู่ระบบและรันคำสั่งจากระยะไกล ในระหว่างช่วง SSH ครั้งแรกของฉันฉันสังเกตเห็นว่าssh-agentกระบวนการเกิดขึ้นที่ RPiทุกครั้งที่ฉันเข้าสู่ระบบ แต่ไม่เคยถูกฆ่าตายเมื่อexitเข้า: เข้าสู่ระบบออกหลายครั้งทำให้ssh-agentกระบวนการหลายอย่างเกิดขึ้นโดยไม่ต้องทำอะไรเลย เล่นไปรอบ ๆ และอ่านหน้าคนและคำตอบที่นี่และที่นั่นฉันเพิ่งเข้าใจวัตถุประสงค์ของการssh-agentและฉันก็รู้ว่ามันควรจะถูกฆ่าตามปกติเมื่อออกจากระบบดังนั้นฉันเริ่มถามตัวเองว่าทำไมมันไม่ นอกจากนี้ฉันสังเกตเห็นว่าการออกตัวsource ~/.bashrcทำให้เกิดอีกตัวอย่างของssh-agentการเกิด ฉันอ่านหน้าญาติSSH_AGENT_PIDควรกำหนดตัวแปรสภาพแวดล้อมเนื่องจากssh-agentโปรแกรมควรเริ่มทำงานภายในevalเพื่อประมวลผลเอาต์พุตและกำหนดตัวแปรดังกล่าวซึ่งจะถูกใช้โดยคำสั่งที่เกี่ยวข้องกับ SSH อื่น ๆ รวมถึงssh-agent -k(เพื่อฆ่าเอเจนต์ที่สัมพันธ์กับเซสชันปัจจุบัน) ดังนั้นฉัน วิ่งecho $SSH_AGENT_PIDและecho $SSH_AUTH_SOCKแต่ทั้งคู่ก็ว่างเปล่า ฉันรู้ทันที: อาจเป็นไปได้ว่ากระบวนการไม่ได้หยุดทำงานเมื่อออกจากระบบเนื่องจากssh-agent -kพยายามอ่าน PID จากตัวแปรสภาพแวดล้อมที่ไม่ได้ตั้งค่า ปัญหา เนื่องจากssh-agentไม่ได้ถูกฆ่าตายในการออกจากระบบและนี้เพื่อตรวจสอบว่าเกิดขึ้นเพราะตัวแปรสภาพแวดล้อมที่จำเป็นไม่ได้ตั้งค่าก็สามารถสิ่งหนึ่งเท่านั้นเฉลี่ย: ใครก็ตามที่เรียกร้องssh-agentในการเข้าสู่ระบบอาจจะไม่ได้ทำมันในทางที่เหมาะสม (ซึ่งจะเป็นeval "$(ssh-agent -s)" ) ดังนั้นฉันคิดว่า: ดีปัญหาคืออะไร? ฉันจะค้นหาไฟล์การกำหนดค่าบริการหรือสคริปต์การเข้าสู่ระบบใด ๆ ที่ได้รับการดำเนินการเพื่อเริ่มตัวแทนและแก้ไขด้วยตนเอง! มันจะอยู่ที่ไหนในโลก? …