다음은 SSH 프록시 설정을 관리하는 데 사용하는 것입니다.
#!/bin/echo "Must source this:"
## Ensure that ~/.ssh/env contains valid values
unset SSH_AGENT_PID SSH_ENV_REFRESH
[ -r ~/.ssh/env ] && . ~/.ssh/env
[ -n "$SSH_AGENT_PID" ] || {
# No env file (or it's badly corrupted:
eval $(ssh-agent &>/dev/null) &> /dev/null
SSH_ENV_REFRESH=1
}
# Ping the agent process:
kill -0 "$SSH_AGENT_PID" >& /dev/null || {
# No process, so start a new one:
eval $(ssh-agent &>/dev/null) &> /dev/null
SSH_ENV_REFRESH=1
}
ssh-add -l &> /dev/null
[ "$?" -gt 1 ] && {
# Process alive but unable to be contacted
# for some reason (wedged/defunct process,
# or damaged/corrupt UNIX domain socket node?)
# So kill it:
kill "$SSH_AGENT_PID" >& /dev/null
# ... with extreme prejudice if necessary:
kill -0 "$SSH_AGENT_PID" >& /dev/null \
|| kill kill -9 "$SSH_AGENT_PID" >& /dev/null
# ... and start a new one
eval $(ssh-agent &>/dev/null) &> /dev/null
SSH_ENV_REFRESH=1
}
[ -z "$SSH_ENV_REFRESH" ] || {
# Over-write old env file:
printenv | grep "^SSH_A" > ~/.ssh/env
# Append export command:
echo "export SSH_AGENT_PID SSH_AUTH_SOCK" >> ~/.ssh/env
# Load the (null-passphrase) identites into the agent:
ssh-add < /dev/null &> /dev/null
}
. ~/lib/sshagent.sh
그 목적은 ( ) 에서 파생된다 .~/.bashrc또는 다른 로그인이나 쉘 시작 파일...또는 크론 작업도 가능합니다. 그것은 나에게 효과적이었지만 여기 있는 사람들이 그것을 검토하고 내가 놓친 극단적인 사례에 대해 조언을 제공하고 싶습니다.
~/.bash_login에서 실행하곤 했는데... 어떤 경우에는 쉘이 설정을 선택하지 못하는 경우가 있었습니다(X 디스플레이 관리자, 원격 SSH 비로그인 세션인 것 같습니다... 명령 호출 사용) SSH). 어떤 경우에는 어떤 이유로든 에이전트 프로세스가 다시 시작될 때 이전 설정이 유지되고 업데이트되지 않습니다. 그래서 내가 실행해~/.bashrc제안된 대로 가짜 출력을 피하려고 노력하세요.~/.bashrc일반적으로 말하면.
그렇다면 명백한 코너 케이스나 버그가 있나요? 이것이 이와 같은 것에 의미가 있습니까?/etc/bashrc? 다른 쉘에 합리적으로 이식 가능합니까?
답변1
&> /dev/null
스크립트의 이식성 문제 중 하나는 stdout 및 stderr 리디렉션 을 사용하는 것입니다 . 이것은 다른 쉘에는 반드시 적용되지 않는 bashism입니다. (저는 최근 이것에 물렸습니다.) 더 이식 가능한 방법은 > /dev/null 2>&1
.
답변2
왜 직접 쓰고 싶나요? 이라는 편리하고 작은 제품을 사용해 보는 것은 어떨까요 keychain
?
이것은젠투용 키체인 가이드(아마도 최신 버전일 겁니다.Funtoo에 대한 동일한 기사)
이는 기본적으로 항상 비밀번호를 입력할 필요 없이 비밀번호로 보호된 키를 사용할 수 있게 해주는 작은 프로그램입니다. (사용중인 배포판에서 사용할 수 있어야합니다)
Gentoo의 Open SSH Key Management 시리즈에도 관심이 있으실 것입니다:1 부,2 부, 그리고3부. 여기에는 귀하가 하려는 작업이 일부 포함되어 있는 것 같습니다.