Tôi sử dụng gpg-agent
để quản lý cả hai danh tính PGP e SSH. Các tác nhân được bắt đầu với một kịch bản như thế này
gpg_agent_env="$XDG_CACHE_HOME/gpg-agent.env"
export GPG_TTY="$(tty)"
if ! ps -U "$USER" -o ucomm | grep -q gpg-agent; then
eval "$({gpg-agent --daemon | tee $gpg_agent_env} 2> /dev/null)"
else
source "$gpg_agent_env" 2> /dev/null
fi
được cung cấp bất cứ khi nào tôi chạy một vỏ tương tác. Tất cả mọi thứ hoạt động tốt với thiết lập này nhưng có một vấn đề. Hãy nói tôi:
- mở một thiết bị đầu cuối (khởi chạy tác nhân trong nền) và bắt đầu làm việc
- sau một thời gian mở một thiết bị đầu cuối thứ hai
- thực hiện một hành động yêu cầu nhập cụm mật khẩu trong thiết bị đầu cuối thứ hai
Tại thời điểm gpg-agent
này sẽ bắt đầu pinentry-curses
nhắc một cụm mật khẩu nhưng nó sẽ thực hiện điều này trong thiết bị đầu cuối đầu tiên dẫn đến kết quả đầu ra của nó bị trộn lẫn với bất cứ thứ gì đang chạy (thường là trình soạn thảo văn bản) mà không có cách nào để tiếp tục chương trình hoặc dừng pinentry (nó bắt đầu sử dụng 100% cpu và tôi phải giết nó).
Tôi phải làm điều gì đó sai ở đây. Bất cứ ai đã có kinh nghiệm này?
Cập nhật:
Tôi đã tìm ra điều này chỉ xảy ra đối với lời nhắc mở khóa khóa SSH, trông giống như thế này , trong khi lời nhắc cho khóa PGP luôn mở trên tty chính xác (tức là hiện tại).
export GPG_TTY="$(tty)"
sửa nó cho tôi