เพื่อความสะดวกของวิธีการที่ดีที่สุดคือการรวมกันของคำตอบของjmtdและFaheem
การใช้ssh-agent
เพียงอย่างเดียวหมายความว่าคุณssh-agent
จำเป็นต้องสร้างอินสแตนซ์ใหม่สำหรับทุกเทอร์มินัลใหม่ที่คุณเปิด keychain
เมื่อเริ่มต้นจะถามรหัสผ่านสำหรับคีย์ส่วนตัวและเก็บไว้ วิธีนี้ทำให้รหัสส่วนตัวของคุณได้รับการป้องกันด้วยรหัสผ่าน แต่คุณไม่จำเป็นต้องใส่รหัสผ่านซ้ำแล้วซ้ำอีก
Arch วิกิพีเดียแนะนำให้เริ่มต้นจากพวงกุญแจ/etc/profile.d/
หรือรายละเอียดเปลือกของคุณเช่นหรือ.bash_profile
.bashrc
สิ่งนี้มีข้อเสียคือมันจะทำให้พวงกุญแจของคุณติดขึ้นทันทีที่คุณเปิดเทอร์มินัล
แนวทางที่ยืดหยุ่นมากขึ้นคือการรวมเข้าkeychain
กับtmux
เซสชันที่เฉพาะเจาะจง ดังนั้นใน.bash_profile
:
tsess=$(tmux ls 2>&1)
if [[ "${tsess%%:*}" = "secured" ]] &&
[[ -f $HOME/.keychain/$HOSTNAME-sh ]]; then
# start keychain
/usr/bin/keychain -Q -q --nogui ~/.ssh/id_rsa
. $HOME/.keychain/$HOSTNAME-sh
fi
... และจากนั้นเป็นเพียงกรณีของการเริ่มtmux
เซสชันที่ปลอดภัยตามที่และเมื่อจำเป็น (เปิดตัวจากการผูกกุญแจ):
#!/bin/bash
PID=$(pgrep tmux)
new="tmux -f $HOME/.tmux/conf new -s secured"
old="tmux attach -t secured -d"
if [[ -z "$SSH_AUTH_SOCK" ]]; then
eval `ssh-agent`
trap "kill $SSH_AGENT_PID" 0
fi
if [[ -z "$PID" ]]; then
urxvtc -title "SSH" -e sh -c "${new}"
else
urxvtc -title "SSH" -e sh -c "${old}"
fi
ssh-add
ตอนนี้พวงกุญแจของคุณจะเริ่มต้นได้เพียงครั้งเดียวเมื่อคุณเริ่มtmux
เซสชันนั้น ตราบใดที่เซสชันนั้นยังคงอยู่คุณจะสามารถเข้าถึงssh
คีย์เหล่านั้นและผลักดันไปยังที่เก็บข้อมูลระยะไกลของคุณ
eval
คุณสามารถเพียงแค่พิมพ์ssh-agent
?