편의상 최적의 방법은 jmtd 와 Faheem 의 답변을 조합 한 것입니다 .
ssh-agent
단독으로 사용 한다는 것은 ssh-agent
열 때마다 새로운 터미널마다 새로운 인스턴스를 생성해야 한다는 것을 의미합니다 . keychain
초기화되면 개인 키의 암호를 묻고 저장합니다. 그렇게하면 개인 키는 비밀번호로 보호되지만 비밀번호를 반복해서 입력 할 필요는 없습니다.
아치 위키 에서 키 체인 초기화 권장 /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
?