Để thuận tiện, phương pháp tối ưu là sự kết hợp giữa câu trả lời của jmtd và Faheem .
Sử dụng ssh-agent
một mình có nghĩa là một thể hiện mới của ssh-agent
nhu cầu được tạo cho mỗi thiết bị đầu cuối mới mà bạn mở. keychain
khi khởi tạo sẽ yêu cầu cụm mật khẩu cho (các) khóa riêng và lưu trữ nó. Bằng cách đó, khóa riêng của bạn được bảo vệ bằng mật khẩu nhưng bạn sẽ không phải nhập lại mật khẩu nhiều lần.
Các Arch wiki khuyến cáo khởi keychain từ /etc/profile.d/
hoặc hồ sơ shell của bạn, chẳng hạn như .bash_profile
hay .bashrc
. Điều này có một nhược điểm ở chỗ nó thâm nhập vào móc khóa của bạn ngay khi bạn mở một thiết bị đầu cuối.
Một cách tiếp cận linh hoạt hơn là kết hợp keychain
với một tmux
phiên cụ thể . Vì vậy, trong .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
... Và sau đó, đây chỉ là trường hợp bắt đầu tmux
phiên bảo mật theo yêu cầu (được khởi chạy từ bàn phím):
#!/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
Bây giờ, móc khóa của bạn sẽ chỉ được khởi tạo một lần khi bạn bắt đầu tmux
phiên cụ thể đó. Miễn là phiên đó vẫn tồn tại, bạn sẽ có thể truy cập các ssh
khóa đó và đẩy vào kho lưu trữ từ xa.
eval
bạn có thể gõ làssh-agent
gì?