너무 많은 프로세스를 생성하지 않고 비밀번호를 사용하는 ssh-agent
문제
Linux에서 비밀번호로 보호된 키와 함께 ssh-agent를 사용합니다.특정 컴퓨터에 로그인할 때마다 다음을 수행합니다.
eval `ssh-agent` && ssh-add
이것은 충분히 잘 작동하지만 로그인하여 이 작업을 수행할 때마다 또 다른 ssh-agent를 생성합니다.가끔씩은 내가 할게 killall ssh-agent
그들을 거두려고.여러 세션에서 동일한 ssh-agent 프로세스를 재사용하는 간단한 방법이 있습니까?
해결책
키체인을 살펴보세요.자신과 비슷한 상황에 처한 사람들이 쓴 글입니다.열쇠고리
다른 팁
당신은 이 기계를 얼마나 통제할 수 있나요?한 가지 대답은 ssh-agent를 데몬 프로세스로 실행하는 것입니다.다른 옵션은 다음에 설명되어 있습니다. 이 웹페이지, 기본적으로 에이전트가 주변에 있는지 확인하고 그렇지 않은 경우 실행하는 테스트입니다.
여기에 아이디어 중 하나를 재현하려면 다음을 수행하십시오.
SSH_ENV="$HOME/.ssh/environment"
function start_agent {
echo "Initialising new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add;
}
# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
#ps ${SSH_AGENT_PID} doesn’t work under cywgin
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
넌 할 수있어:
ssh-agent $SHELL
이로 인해 쉘이 종료될 때 ssh-agent가 종료됩니다.여전히 세션 간에 공유되지는 않지만 공유하면 최소한 사라집니다.
사용하는 셸에 따라 로그인 셸과 일반 새 셸에 대해 서로 다른 프로필을 설정할 수 있습니다.일반적으로 로그인 쉘에 대해 ssh-agent를 시작하려고 하지만 모든 하위 쉘에 대해 시작하지는 않습니다.Bash에서 이러한 파일은 다음과 같습니다. .bashrc
그리고 .bash_login
, 예를 들어.
요즘 대부분의 데스크탑 리눅스는 ssh-agent를 실행합니다.ssh-add를 사용하여 키를 추가한 다음 다음을 실행하여 키를 원격 SSH 세션으로 전달하면 됩니다.
ssh -A