실행 중인 헤드리스 CentoS 7.5.1804 Docker 컨테이너에 비밀을 안전하게 저장하기 위해 명령을 사용하려고 하는데 secret-tool
이 작업을 성공적으로 수행하는 데 필요한 패키지 및/또는 구성을 찾을 수 없는 것 같습니다.
특히 다음 명령을 실행할 수 있기를 원합니다.
printf "aPassword" | secret-tool store --label="test" foo bar
다음을 실행하여 해당 비밀번호를 볼 수 있습니다.
secret-tool lookup foo bar
secret-tool store
명령을 실행하면 다음과 같은 결과가 나타납니다.
printf 'aPassword' | secret-tool store --label="test" foo bar
** Message: Remote error from secret service: org.freedesktop.DBus.Error.UnknownMethod: No such interface 'org.freedesktop.Secret.Collection' on object at path /org/freedesktop/secrets/collection/login
secret-tool: No such interface 'org.freedesktop.Secret.Collection' on object at path /org/freedesktop/secrets/collection/login
나는 팔로우했다ArchLinux Gnome/Keyring 위키 페이지그리고 다음 단계에 따라 CentOS Docker 컨테이너에서 동일한 작업을 수행해 보세요.
docker run --privileged -it centos:centos7.5.1804 /bin/bash
# remainder of commands are in the container bash shell:
printf 'search localhost.localdomain\nnameserver 8.8.8.8\nameserver 8.8.4.4' > /etc/resolv.conf
yum -y update
yum -y install sudo gnome-keyring libsecret dbus-x11
yum clean all && rm -rf /var/cache/yum
export DISPLAY=“:0.0”
eval "$(dbus-launch --sh-syntax)"
mkdir -p ~/.cache
mkdir -p ~/.local/share/keyrings
eval $(gnome-keyring-daemon --start)
export SSH_AUTH_SOCK
내가 아는 한, 이~해야 한다secret-tool store
명령이 성공하는 데 필요한 모든 것(gnome-keyring 데몬, dbus 세션 및 비밀 도구 + libsecret)을 제공 하지만 실패할 경우.
내가 무엇을 놓치고 있나요?
답변1
1년 후, 나는 이것을 다시 방문할 수 있었습니다. 긴 하루 동안 연구하고 다양한 것을 시도한 끝에 마침내 이것을 알아냈습니다. 이 답변이 다른 사람이 제가 잃어버린 생산성을 구하는 데 도움이 되기를 바랍니다!
체인에서 누락된 링크는 항목을 저장하기 전에 키링을 생성해야 한다는 것입니다. 이 도커 컨텍스트에는 사용자 계정, 로그인 등이 없습니다. 따라서 Gnome과 같은 데스크탑 관리자가 자동으로 생성한 키링이 없습니다.
따라서 다음을 수행해야 합니다.
- 먼저 키링을 수동으로 생성한 다음
- 키링 데몬을 수동으로 시작
명령이 작성되면 키링을 초기화하기 위해 표준 입력의 비밀번호가 필요합니다. 이 도커 예제에서는 테스트용일 뿐 실제 사용자가 실제로 사용하지 않기 때문에 장면(첫 번째 호출에서 키링 생성)과 실제 시작 데몬 시나리오 \n
로 파이프되는 줄 바꿈된 더미 비밀번호를 사용합니다 .--unlock
--start
이것이 궁극적인 작업 명령 세트입니다. 공식 기본 centos
도커 이미지는 사용되지 않습니다. systemd 서비스는 DBus에 대해 실행되어야 하므로 공식 centos/systemd
이미지를 사용해야 합니다.
docker run --privileged -d -v /sys/fs/cgroup:/sys/fs/cgroup:ro --name centos-systemd centos/systemd
docker exec -it centos-systemd /bin/bash
# remainder of commands are in the container bash shell:
yum -y install gnome-keyring libsecret dbus-x11
eval "$(dbus-launch --sh-syntax)"
mkdir -p ~/.cache
mkdir -p ~/.local/share/keyrings # where the automatic keyring is created
# 1. Create the keyring manually with a dummy password in stdin
eval "$(printf '\n' | gnome-keyring-daemon --unlock)"
# 2. Start the daemon, using the password to unlock the just-created keyring:
eval "$(printf '\n' | /usr/bin/gnome-keyring-daemon --start)"
이 작업이 완료되면 이제 비밀번호를 저장하고 조회할 수 있습니다.
[root@603a122f7555 /]# secret-tool lookup foo bar
[root@603a122f7555 /]# printf "aPassword" | secret-tool store --label="test" foo bar
[root@603a122f7555 /]# secret-tool lookup foo bar
aPassword
[root@603a122f7555 /]#
답변2
Ubuntu 헤드리스 가상 머신에 대한 명령은 다음과 같습니다.
apt install dbus-x11 gnome-keyring libsecret # ~79MB
export $(dbus-launch)
eval "$(echo '\n' | gnome-keyring-daemon --unlock)"
echo [email protected] | secret-tool store --label="main" email address
echo $(secret-tool lookup email address)
kill -9 $(pgrep -f gnome-keyring-daemon)
# echo $(secret-tool lookup email address) # no longer gives password
비밀을 검색하려면 모든 스크립트에서 키링을 잠금 해제해야 하는 것 같습니다.
실제로 비결은 Docker에서만 작동하는 eval 명령을 사용하는 것입니다. 이 오류가 없으면 여러 GitHub 프로젝트를 포함하여 온라인에서 이 오류에 대한 해결책이 없습니다.
"비밀 도구: 잠긴 컬렉션에 항목을 생성할 수 없습니다"
편집하세요. 이것은 한 번만 작동합니다. 이는 -r
재시작 데몬을 사용해 프로세스를 종료하고 재시작한 후에도 마찬가지입니다. 이름이 달라도 새 비밀을 얻을 수 없으며 저장된 비밀을 검색할 수도 없습니다.
"비밀 도구: 잠긴 컬렉션에 항목을 생성할 수 없습니다." 오류