Ubuntu에서 OpenSSH의 키 관리를 gpg-agent에 의뢰합니다 [결정판일 수도 있습니다]
9437 단어 UbuntuSSHcryptographygnupgidea
그러나 Ubuntu를 포함한 Debian 시스템 발행OpenSSH의 키 관리는 ssh-agent를 사용하는 것을 전제로 구성되어 있기 때문에 gpg-agent를 바꾸려면 설정 변경이 필요하다.이 글은 설정 변경[1]을 간략하게 요약할 것이다.
Ubuntu 설정 변경
gpg-agent 서비스의 확인
우선 gpg-agent가 서비스로 운영되는지 확인하세요.
$ systemctl --user status gpg-agent
● gpg-agent.service - GnuPG cryptographic agent and passphrase cache
Loaded: loaded (/usr/lib/systemd/user/gpg-agent.service; static)
Active: inactive (dead)
TriggeredBy: ● gpg-agent-extra.socket
● gpg-agent-browser.socket
● gpg-agent-ssh.socket
● gpg-agent.socket
Docs: man:gpg-agent(1)
에서는 로그인하자마자 gpg-agent가 시작되지 않은 상태이지만 방문TriggeredBy
과 같은 4개의 플러그인을 통해 시작합니다.소켓에 gpg-agent-ssh.socket
이 포함되어 있으면 문제가 없습니다.덧붙여 말하자면, 플러그인의 실질은 gpgconf 명령으로 확인할 수 있다.$ gpgconf --list-dirs | grep socket
socketdir:/run/user/1000/gnupg
dirmngr-socket:/run/user/1000/gnupg/S.dirmngr
agent-ssh-socket:/run/user/1000/gnupg/S.gpg-agent.ssh
agent-extra-socket:/run/user/1000/gnupg/S.gpg-agent.extra
agent-browser-socket:/run/user/1000/gnupg/S.gpg-agent.browser
agent-socket:/run/user/1000/gnupg/S.gpg-agent
Xsession.options 변경
다음은/etc/X11/Xsession입니다.options 파일을 확인합니다.
/etc/X11/Xsession.options
# $Id: Xsession.options 189 2005-06-11 00:04:27Z branden $
#
# configuration options for /etc/X11/Xsession
# See Xsession.options(5) for an explanation of the available options.
allow-failsafe
allow-user-resources
allow-user-xsession
use-ssh-agent
use-session-dbus
그중use-ssh-agent
의 설명을 no-use-ssh-agent
로 바꾸다.물론 변경은 관리자의 권한이 필요하니 주의하세요.백업하면서 일해요.gnome-keyring-ssh.데스크톱을 autostart에 넣을게요.
/etc/xdg/autoostart/디렉터리에서 gnome-keyring-ssh.데스크톱 파일이 있습니다. 우선 이 파일을 ~/에 놓으십시오.디렉토리로 복사합니다.디렉토리가 없을 때 생성됩니다.
$ cp /etc/xdg/autostart/gnome-keyring-ssh.desktop ~/.config/autostart/
gnome-keyring-ssh.데스크톱 파일의 내용은 텍스트이지만 복사된 이 파일의 끝에 있습니다추기 행.
[2021-06-05 추기] 우분투 21.04의 경우
2021년 4월 발매되는 우분투 21.04에서는 이 설정이 좋지 않은 것으로 보인다.이 경우 우선 응급조치를 취해야 한다.bashrc로
Hidden=true
환경 변수 SSHAUTH_SOCK을 직접 지정하면 됩니다.gpg-agent.conf 설정
마지막.gnupg/gpg-agent.conf 파일에 다음 내용을 기록합니다.gpg-agent.conf 파일이 없으면 만드십시오.
~/.gnupg/gpg-agent.conf
export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
dbus-update-activation-environment --systemd SSH_AUTH_SOCK
다음 두 가지 옵션은 임의로 다음과 같은 의미가 있다.옵션 이름
컨텐트
default-cache-ttl-ssh
이전에 액세스한 캐시 항목의 유효 기간을 초 단위로 지정합니다.기본값은 1800max-cache-ttl-ssh
캐시 항목의 최대 유효 기간을 초 단위로 지정합니다.액세스하든 안 하든 이 기간이 지나면 캐시가 지워집니다.기본값은 7200입니다.유효기간이 지나치면 누설 위험이 높아지므로 적당히 해야 한다(웃음)
이렇게 설정하면 완성됩니다.신중을 기하기 위해 다시 로그인하세요.
환경 변수 확인
다시 로그인한 후 환경 변수를 확인합니다.
enable-ssh-support
default-cache-ttl-ssh 1800
max-cache-ttl-ssh 7200
의 느낌AUTH_SOCK 환경 변수의 값이 gpg-agent의 플러그라면 OK.GnuPG를 이용한 키 관리
기존 OpenSSH 인증 키 등록
상기 설정이 완료되면 ssh-add 명령으로 기존 OpenSSH 인증 키를 GnuPG 키 묶음에 간단하게 등록할 수 있습니다.
$ env | grep SSH
SSH_AUTH_SOCK=/run/user/1000/gnupg/S.gpg-agent.ssh
이때 ssh-add 명령을 기반으로 한 암호문 입력과 달리 GunPG를 기반으로 한 Pinentry의 암호문 설정을 한다(2곳에 확인을 포함해야 한다).GnuPG 키열에 등록된 인증 키는 이 암호문에 의해 보호됩니다.
중요한 일이기 때문에 중복됩니다. 등록된 기밀 키가 캐시되지 않고 GnuPG 키 묶음 (~/.gnupg/privte-keys-v1.d/디렉터리) 에 들어갑니다.또, 또.gnupg/sshcontrol 파일로 만들기
$ ssh-add ./id_ecdsa
Enter passphrase for ./id_ecdsa:
Identity added: ./id_ecdsa ([email protected])
의 느낌에 키 정보가 추가되었습니다.참고로
A5353D587000D820669B0BD55A0B4AD6897458DB
는 키grip이라고 불리는 값으로 키의 종류와 상관없이 통일적으로 표시된 ID입니다.또 열쇠야.gnupg/private-keys-v1.d/디렉토리에 들어오는 키는 A5353D58700D820669B0D55A0B4AD6897458DB입니다.키처럼 키grip과 관련된 파일 이름으로 저장됩니다.또 말미0
는 현금 주기(초)를 가리키는 것 같다.0
보다 크면 gpg-agent.conf 파일을 지정하는 것보다 우선이죠.행의 첫 번째 태그
!
에 있으면 키 사용을 비활성화할 수 있습니다.GnuPG 키를 OpenSSH 인증 키로 설정
GnuPG 키도 OpenSSH 인증 키로 설정할 수 있습니다.하지만 전용 인증 키를 만들어야 합니다.자세한 내용은 졸문을 참조하시오.
참고해주세요.예컨대
# ECDSA key added on: 2020-06-01 14:05:35
# Fingerprints: MD5:e4:5b:66:a6:03:9a:a4:0e:f2:1b:a5:04:72:93:f3:f0
# SHA256:DtXgQm9rz7Dc5M5yWu/CNVo341o1rcfN9UCyYu+SZU4
A5353D587000D820669B0BD55A0B4AD6897458DB 0
키가 있을 때 마지막 [A]
에 표시된 하위 키는 OpenSSH 인증 키로 사용할 수 있지만 이 키의 키grip 값은 ~/로 사용할 수 있습니다.gnupg/sshcontrol 파일에 로그인합니다.$ gpg --list-keys --with-keygrip alice
pub ed25519 2021-01-06 [SC] [有効期限: 2021-01-13]
011C720B03D2E1D6BCFA98391DFF44901121B61D
Keygrip = 97249ABEB2A2FD9E88F6723BB19D4F84B90E261A
uid [ 究極 ] Alice <[email protected]>
sub cv25519 2021-01-06 [E]
Keygrip = 96CB831965E1A7EB4705577D6A7CB7F9E05C8192
sub ed25519 2021-01-06 [A]
Keygrip = F5C774B5B418B6E0B5B7942F93DE82BF2FEF4C8E
등록된 키 확인
등록된 키는 명령
ssh-add -l
으로 확인할 수 있습니다.공개 키 꺼내기 ssh-add -L
명령이 가능합니까?GnuPG에서 만든 키라면$ echo F5C774B5B418B6E0B5B7942F93DE82BF2FEF4C8E 0 >> ~/.gnupg/sshcontrol
도 빼낼 수 있어요.참조 페이지
참고서
각주
Windows의 경우 오래된 기사가 있어서 죄송합니다. 졸문 "Windows: gpg-agent"을 참조하십시오.↩︎
Reference
이 문제에 관하여(Ubuntu에서 OpenSSH의 키 관리를 gpg-agent에 의뢰합니다 [결정판일 수도 있습니다]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/spiegel/articles/20210109-gpg-agent텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)