단일 명령줄을 통해 SSH를 통해 gpg-agent를 사용하는 데 문제가 있습니다.
내 구성은 다음과 같습니다.
서버 A : SSH를 통해 명령을 트리거합니다.
ssh user@serverB "sudo -E /path/to/script.sh"
서버 B : 암호 서명이 필요한 스크립트를 실행합니다.
시스템 정보 : 우분투 12.04
서버 B에 gpg-agent를 설정하고 이 구성을 /home/user/.bashrc에 추가했습니다.
Invoke GnuPG-Agent the first time we login.
# Does `~/.gpg-agent-info' exist and points to gpg-agent process accepting signals?
if test -f $HOME/.gpg-agent-info && \
kill -0 `cut -d: -f 2 $HOME/.gpg-agent-info` 2>/dev/null; then
GPG_AGENT_INFO=`cat $HOME/.gpg-agent-info | cut -c 16-`
else
# No, gpg-agent not available; start gpg-agent
eval `gpg-agent --daemon --write-env-file $HOME/.gpg-agent-info`
fi
export GPG_TTY=`tty`
export GPG_AGENT_INFO
/home/user/.gnupg/gpg-agent.conf의 에이전트 구성은 다음과 같습니다.
enable-ssh-support
#1 year cache support
default-cache-ttl 31536000
default-cache-ttl-ssh 31536000
max-cache-ttl 31536000
max-cache-ttl-ssh 31536000
#debug-all
따라서 이 작업을 수행하기 위해 ssh를 통해 serverB에 연결합니다.
ssh user@serverB
gpg-agent가 시작되면 스크립트를 수동으로 트리거합니다.
sudo -E /path/to/script.sh
그런 다음 gpg-agent에서 암호를 묻는 메시지를 표시합니다. 암호를 설정한 후에는 스크립트를 다시 실행할 수 있으며 암호를 묻지 않고 작업을 수행합니다.
내 문제는 다음을 통해 원격으로 트리거하려고 할 때입니다.
ssh user@serverB "sudo -E /path/to/script.sh"
스크립트가 계속해서 암호를 요구하기 때문에 gpg-agent가 작동하지 않는 것 같습니다.
편집하다:
sudo 비밀번호 없이 원격으로 스크립트를 실행하고 환경 변수를 유지하기 위해 /etc/sudoers.d/user에 다음 내용을 추가했습니다.
user ALL=(ALL)NOPASSWD:SETENV:/path/to/script.sh
어떤 아이디어가 있나요?
답변1
로그인한 ssh user@serverB
다음 스크립트를 수동으로 실행하면 처음으로 암호를 입력하라는 메시지가 표시되고, 스크립트를 실행하면 shh-agent가 저장된 암호를 제공합니다.
그러나 실행할 때 ssh user@serverB "sudo -E /path/to/script.sh
마다 새로운 로그인을 수행하게 되며 ssh-agent가 별도의 SSH 로그인을 통해 암호 문구 저장을 지원하지 않을 것이라고 생각합니다.
키체인이 필요한 작업을 수행하는 것 같습니다.http://www.funtoo.org/키체인
키체인을 사용하면 로컬 컴퓨터를 재부팅할 때마다 암호를 한 번만 입력하면 됩니다. 또한 키체인을 사용하면 원격 cron 작업이 장기간 실행되는 ssh-agent 프로세스에 안전하게 "연결"되어 스크립트가 키 기반 로그인을 활용할 수 있습니다.
현재 버전의 키체인은 gpg-agent와 ssh-agent를 지원합니다.