주어진 사용자 (예 : 나)의 모든 로그인이 동일한 ssh-agent를 사용하도록하는 편리한 방법이 있습니까? 이 작업을 대부분 수행하기 위해 스크립트를 해킹했지만 방금 놓친 방법이 있다고 생각했습니다. 또한 그 이후로이 웹 사이트와 같은 컴퓨팅 기술의 놀라운 발전이있었습니다.
여기 목표는
- SSH를 통해 또는 gdm / kdm / etc에서 시작된 그래픽 세션 또는 콘솔에서 관계없이 박스에 로그인 할 때마다 :
- 내 사용자 이름에 현재
ssh-agent
실행중인 것이 없으면 시작되고 환경 변수가 내보내지고ssh-add
호출됩니다. - 그렇지 않으면 기존 에이전트의 좌표가 로그인 세션의 환경 변수로 내보내집니다.
- 내 사용자 이름에 현재
이 기능은 문제의 상자 ssh
가 세 번째 상자에 들어갈 때 중계 점으로 사용될 때 특히 유용 합니다. 이 경우 ssh를 입력 한 후 수행 할 때마다 개인 키의 암호를 입력하지 않아도됩니다 git push
.
아래의 스크립트는 X가 충돌했을 때 최근에 멈췄다가 다른 그래픽 세션을 시작했지만 최근에 안정적으로 수행합니다. 해당 인스턴스에서 다른 문제가 발생했을 수 있습니다.
여기 내 나쁜 대본이 있습니다. 나는 이것을 내 출처에서 얻습니다 .bashrc
.
# ssh-agent-procure.bash
# v0.6.4
# ensures that all shells sourcing this file in profile/rc scripts use the same ssh-agent.
# copyright me, now; licensed under the DWTFYWT license.
mkdir -p "$HOME/etc/ssh";
function ssh-procure-launch-agent {
eval `ssh-agent -s -a ~/etc/ssh/ssh-agent-socket`;
ssh-add;
}
if [ ! $SSH_AGENT_PID ]; then
if [ -e ~/etc/ssh/ssh-agent-socket ] ; then
SSH_AGENT_PID=`ps -fC ssh-agent |grep 'etc/ssh/ssh-agent-socket' |sed -r 's/^\S+\s+(\S+).*$/\1/'`;
if [[ $SSH_AGENT_PID =~ [0-9]+ ]]; then
# in this case the agent has already been launched and we are just attaching to it.
##++ It should check that this pid is actually active & belongs to an ssh instance
export SSH_AGENT_PID;
SSH_AUTH_SOCK=~/etc/ssh/ssh-agent-socket; export SSH_AUTH_SOCK;
else
# in this case there is no agent running, so the socket file is left over from a graceless agent termination.
rm ~/etc/ssh/ssh-agent-socket;
ssh-procure-launch-agent;
fi;
else
ssh-procure-launch-agent;
fi;
fi;
더 좋은 방법이 있다고 말씀 해주세요. 또한 불일치 / Gaffe를 nitpick하지 마십시오 (예 : var
물건 넣기 etc
). 나는 이것을 얼마 전에 썼고 그 이후 많은 것을 배웠다.