authorized_keys
Jenkins를 사용하여 Docker 컨테이너를 시작할 때 호스트에 Jenkins Pubkey를 추가해야 합니다. 솔루션을 찾고 있지만 인터넷에서 준비된 솔루션을 찾을 수 없습니다. 당연해 보일 수도 있지만 적어도 나에게는 그렇지 않습니다. :)
답변1
PUBKEY=$(cat ~/.ssh/id_rsa.pub); grep -q "$PUBKEY" ~/.ssh/authorized_keys || echo "$PUBKEY" >> ~/.ssh/authorized_keys
이 한 줄의 코드는 authorized_keys
pubkey가 파일에 이미 있는지 확인하고, 그렇지 않은 경우 파일 끝에 추가합니다.
~/.ssh/id_rsa.pub
추가된 공개키의 경로입니다
~/.ssh/authorized_keys
이는 대상 파일의 경로입니다 authorized_keys
( ~
기호는 홈 디렉터리입니다 /home/accountname/
).
원격 호스트의 경우 다음을 사용할 수 있습니다.ssh-copy-id
답변2
~/.ssh/authorized_keys 사용에 대한 전체 아이디어를 건너뛰고 다음과 같이 SSH CA 기능을 사용하는 것이 좋습니다.https://www.digitalocean.com/community/tutorials/how-to-create-an-ssh-ca-to-validate-hosts-and-clients-with-ubuntu('사용자 키 구성 방법'까지 아래로 스크롤하세요).
이것의 이점은 컨테이너를 한 번만 구성하면 되고( 로컬 시스템에서 생성된 CA 키의 공개 부분이 포함된 TrustedUserCAKeys /etc/ssh/users_ca.pub
위치를 추가하여 users_ca.pub
) 그 시점부터 컨테이너에 대한 액세스 권한을 다른 사용자에게 부여하려는 경우입니다. 키, CA 개인 키로 키의 공개 부분에 서명하고 서명한 키를 사용할 수 있는 계정을 지정하기만 하면 됩니다. 마술처럼 작동합니다 :)
답변3
공개 키가 에 있다고 가정 하면 이를 무조건 파일 ~/.ssh/id_rsa.pub
에 추가 하고 해당 파일에서 사용하여 중복 항목을 제거할 수 있습니다.~/.ssh/authorized_keys
sort -u
# Make sure that the file exists and has the correct permissions
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
# Add new key, removing duplicates.
sort -u -o ~/.ssh/authorized_keys ~/.ssh/authorized_keys ~/.ssh/id_rsa.pub