Tôi gặp sự cố khi sử dụng tác nhân gpg qua ssh thông qua một dòng lệnh.
Đây là cấu hình của tôi:
Máy chủ A: kích hoạt lệnh thông qua ssh.
ssh user@serverB "sudo -E /path/to/script.sh"
Máy chủ B: Thực thi tập lệnh yêu cầu chữ ký mật khẩu.
Thông tin hệ thống: Ubuntu 12.04
Tôi đã thiết lập tác nhân gpg trên máy chủ B, tôi đã thêm cấu hình này vào /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
Đây là cấu hình của tác nhân trong /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
Vì vậy, để làm cho điều này hoạt động, tôi kết nối với máy chủB thông qua ssh:
ssh user@serverB
Tác nhân gpg được bắt đầu, tôi kích hoạt tập lệnh theo cách thủ công:
sudo -E /path/to/script.sh
Sau đó, tác nhân gpg nhắc tôi yêu cầu cụm mật khẩu, một khi tôi đã thiết lập cụm mật khẩu, tôi có thể chạy lại tập lệnh và nó đang thực hiện nhiệm vụ của mình mà không yêu cầu mật khẩu.
Vấn đề của tôi là, khi tôi cố gắng kích hoạt nó ở xa, ví dụ: thông qua:
ssh user@serverB "sudo -E /path/to/script.sh"
Có vẻ như tác nhân gpg không hoạt động, vì tập lệnh liên tục yêu cầu tôi nhập cụm mật khẩu.
Biên tập:
Tôi đã thêm nội dung sau vào /etc/sudoers.d/user để kích hoạt tập lệnh ở xa mà không cần mật khẩu sudo và để giữ các biến môi trường:
user ALL=(ALL)NOPASSWD:SETENV:/path/to/script.sh
Có ý kiến gì không?
sudo
lệnh.