วิธีหลีกเลี่ยงการพิมพ์ ssh-add ทุกครั้ง


11

ฉันอ่านและปฏิบัติตามเอกสารออนไลน์บางอย่างเกี่ยวกับวิธีตั้งค่าssh-agentเพื่อให้ฉันไม่จำเป็นต้องพิมพ์รหัสผ่านทุกครั้งที่ฉัน ssh ไปยังเครื่องระยะไกล

อย่างไรก็ตามด้วยความช่วยเหลือของssh-agentฉันยังคงต้องทำssh-addทุกครั้งที่ฉันรีสตาร์ทเชลล์ ssh-addแล้วขอให้ฉันใส่รหัสผ่านเพื่อปลดล็อคกุญแจส่วนตัว

Enter passphrase for key '/home/xx/.ssh/id_rsa':

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

The agent has no identities.

ฉันขอถามวิธีการจัดเก็บคีย์อย่างถาวร (id_rsa) ใน ssh-agent ได้อย่างไร ขอบคุณ

แก้ไข: ssh-agentนี่คือสิ่งที่ผมกับ ฉันต่อท้ายบล็อกต่อไปนี้~/.bash_profile

SSHAGENT=/usr/bin/ssh-agent                                                                                        
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "SSHAGENT" ]; then
  eval `$SSHAGENT $SSHAGENTARGS`
  trap "kill $SSH_AGENT_PID" 0
fi

คุณหมายความว่าคุณต้องพิมพ์ข้อความรหัสผ่านทุกครั้งที่คุณเข้าสู่ระบบหรือทุกครั้งที่คุณเปิดหน้าต่างเปลือก? คุณบอกว่าคุณได้ทำตามเอกสารออนไลน์แล้ว แต่ ssh-agent ใช้งานไม่ได้ใน Ubuntu ดังนั้นคุณไม่ควรทำอะไรเลย คุณทำอะไรกันแน่
Gilles 'หยุดความชั่วร้าย'

ฉันต้องพิมพ์ข้อความรหัสผ่านทุกครั้งที่ฉันเข้าใช้เครื่องระยะไกล แต่มันไม่ได้เป็นวลีรหัสผ่านเพื่อเข้าถึงเครื่องระยะไกลมันเป็นข้อความรหัสผ่านเพื่อปลดล็อคกุญแจส่วนตัวของฉัน (id_rsa)
ssgao

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

ผลจะคงอยู่จนกว่าฉันจะออกจากระบบ (ในระบบ) ฉันใส่สิ่งที่ฉันทำssh-agentในโพสต์
ssgao

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

คำตอบ:


6

ฉันติดตั้งพวงกุญแจแล้ว

พวงกุญแจติดตั้ง sudo apt-get

หากคุณใช้ bash คุณจะต้องเพิ่มคำสั่งสองสามคำลงใน. bash_profile ของคุณหากคุณไม่มี. bash_profile ให้สร้างคำสั่งในโฟลเดอร์บ้านของคุณ เพิ่มบรรทัดเหล่านี้:

### START-Keychain ###
# Let  re-use ssh-agent and/or gpg-agent between logins
/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh
### End-Keychain ###

เมื่อเริ่มต้นวันทำงานฉันจะเข้าสู่ระบบ เมื่อฉันเปิดเทอร์มินัลฉันจะได้รับแจ้งหนึ่งครั้งสำหรับข้อความรหัสผ่านของฉัน สำหรับเทอร์มินัลและการเชื่อมต่อใหม่อื่น ๆ ทั้งหมดฉันจะไม่ถามรหัสผ่านของฉันอีก


4
สิ่งนี้แตกต่างจากการพิมพ์ssh-addในเครื่องอย่างไร
ssgao

ใช่ แต่แล้วคุณจะต้องพิมพ์ ssh-add ทุกครั้ง ... การทำเช่นนี้จะตัด 2 ขั้นตอนของคุณ -> eval "$ (ssh-agent)" และ ssh-add
abhishek

1

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

หากต้องการใช้ ssh โดยไม่ต้องถามวลีรหัสผ่านใด ๆ คุณต้องสร้าง keypair ของคุณในขณะที่ปล่อยให้ฟิลด์ passphrase ว่าง

หากต้องการตรวจสอบว่าคุณได้สร้าง keypair แล้วให้ตรวจสอบไฟล์ id_rsa และ id_rsa.pub ในไดเรกทอรี ~ / .ssh ของคุณ หากพวกเขามีอยู่แล้วคุณสามารถลบหรือย้ายพวกเขาเพื่อสร้าง keypair ใหม่

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

หากต้องการสร้าง keypair ใหม่ให้รันคำสั่งต่อไปนี้:

ssh-keygen -t rsa

ยอมรับตำแหน่งเริ่มต้นสำหรับคีย์และปล่อยให้ข้อความรหัสผ่านว่างเปล่า

ในการมอบพับลิกคีย์ของคุณให้กับเซิร์ฟเวอร์ ssh ที่คุณต้องการเชื่อมต่อให้ใช้คำสั่งต่อไปนี้:

ssh-copy-id -i ~/.ssh/id_rsa.pub username@remotehost

หลังจากทำตามขั้นตอนเหล่านี้แล้วคุณจะสามารถเข้าสู่เซิร์ฟเวอร์ระยะไกลได้โดยไม่ต้องใช้รหัสผ่านจากคอมพิวเตอร์ที่คุณใช้งานอยู่

การอ้างอิง: http://tombuntu.com/index.php/2008/02/20/public-key-authentication-for-ssh-made-easy/


0

เวลาที่ผ่านมาผมก็เริ่มถูกถามหารหัสผ่านสำหรับการที่จะปลดล็อคกุญแจ SSH git pushของฉันเมื่อทำ ปรากฎว่าการหยุดถามรหัสผ่านมันเพียงพอที่จะเพิ่มตัวแทนคีย์ SSH (พวงกุญแจ GNOME: ตัวแทน SSH) ไปยังแอปพลิเคชันเริ่มต้น (ในกรณีของฉัน - เพียงเพื่อตรวจสอบช่องทำเครื่องหมาย):

ป้อนคำอธิบายรูปภาพที่นี่


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