키체인을 사용하여 SSH 키에 대한 비밀번호 프롬프트를 관리하고 싶지만 1) 실제로 키를 사용할 때만 요청하고 2) 나중에 잠시 동안 저장해야 합니다. 현재 2가지 옵션이 있습니다.
$ eval `keychain --eval --agents ssh id_rsa`
- 시작 시 항상 비밀번호를 묻지만 저장합니다.$ eval `keychain --eval --noask --agents ssh id_rsa`
-- 시작할 때 아무 것도 묻지 않지만 키를 사용할 때마다 계속해서 비밀번호를 묻습니다.
이러한 방법의 장점을 결합할 수 있는 방법이 있습니까?
답변1
ssh-agent
최신 버전의 OpenSSH를 사용하면 다음과 같은 작업이 쉬워집니다.
ssh-agent
추가된 키에 대한 기본 시간 제한(예: 60분)을 사용하여 정상적으로 시작합니다 .eval `ssh-agent -t 60m`
ssh
에이전트에 사용되는 실제 키를 추가하도록 구성합니다 . ~/.ssh/config`에 새 줄을 추가합니다.AddKeysToAgent yes
이 기능은 최신 OpenSSH 7.2에 포함되어 있습니다. 이전 버전에서는 시간 초과가 발생한 경우 에이전트에 키를 수동으로 추가해야 했지만 다음과 같이 매우 간단하게 bash 기능을 사용하여 자동으로 키를 추가할 수 있습니다.
ssh() { /bin/ssh -o BatchMode=yes $* || \ ssh-add path/to/the-key && /bin/ssh $* }
아이디어: 배치 모드에서 키를 사용하여 연결을 시도하고(키가 없으면 비밀번호를 묻는 메시지를 표시하지 않고 실패함), 실패하면 에이전트에 키를 추가하고 ssh 명령을 다시 실행하십시오.