SSH 비밀번호를 묻지 않도록 KDE, KWallet 및 SSH를 어떻게 설정합니까?

SSH 비밀번호를 묻지 않도록 KDE, KWallet 및 SSH를 어떻게 설정합니까?

SSH 키를 설정했으며 ksshaskpass 아래의 KWalletManager에서 내 키를 볼 수 있습니다. 예를 들어 SSH 비밀번호를 묻지 않도록 하려면 어떻게 해야 합니까? Git에서 뭔가를 할 때마다. (다음과 같이 표시됩니다. "키 비밀번호를 입력하세요...")

내가 원하는 것은 내 KDE 로그인이 내 암호를 묻는 유일한 시간이 되는 것입니다(Cinnamon과 Gnome에서처럼). 나는 이로 인해 KWallet과 ssh 사이에 일종의 상호 작용이 발생하여 내 비밀번호가 자동으로 ssh에 입력될 것이라고 생각합니다. 정보 검색을 시도했지만 쿠분투에 대한 단계별 솔루션을 찾을 수 없습니다. 내가 무엇을해야 하나?

답변1

설명이 있지만여기대부분 정확합니다. 작동하려면 몇 가지 변경이 필요했습니다.

1단계 "로그인 시 자동으로 KDE 지갑 잠금 해제"가 Kubuntu 22.10에서 완료되었습니다. 저에게는 2단계 "KDE 지갑을 사용하여 SSH 키 비밀번호 저장"을 수정해야 하지만 3단계 "KDE 지갑을 사용하여 Git 자격 증명 저장"은 수정해야 합니다(Ssh를 사용하는 Git은 그것 없이도 잘 작동합니다).

  1. 파일을 만들었어요~/.local/bin/delayed_ssh_add

  2. 파일에 다음 줄을 넣었습니다.

#!/bin/bash
sleep 15
/usr/bin/ssh-add -k ~/.ssh/YOUR_SSH_KEY

를 사용하여 SSH 키를 원하는 만큼 추가할 수 있습니다 /usr/bin/ssh-add -k .... 내 홈 디렉터리를 /home사용하는 대신 SSH 키의 전체 경로를 사용해야 한다는 사실을 발견했습니다 .~

  1. 파일을 실행 가능하게 만들었습니다.

  2. 파일을 만들었어요~/.config/autostart/delayed-ssh-add.desktop

  3. 나는 다음을 넣었다:

[Desktop Entry]
Comment[en_NZ]=
Comment=
Exec=/home/YOUR_HOME_FOLDER/.local/bin/delayed_ssh_add
GenericName[en_NZ]=
GenericName=
MimeType=
Name[en_NZ]=delayed-ssh-add
Name=delayed-ssh-add
Path=
StartupNotify=true
Terminal=false
TerminalOptions=
Type=Application
X-DBUS-ServiceName=
X-DBUS-StartupType=none
X-KDE-SubstituteUID=false
X-KDE-Username=
  1. 파일을 만들었어요~/.config/environment.d/ssh_askpass.conf

  2. 나는 다음을 넣었다:

SSH_ASKPASS='/usr/bin/ksshaskpass'
SSH_ASKPASS_REQUIRE=prefer

위의 내용을 설명하자면 SSH 키를 즉시 추가하는 것이 아니라 15초 지연 후에 추가하도록 변경했습니다. 이는 자동 시작 응용 프로그램이 실행된 후 KWallet 또는 관련 서비스가 시작되기 때문인 것으로 추정됩니다. Skype 시작도 지연해야 하기 때문입니다(KWalletManager에서도 자격 증명을 볼 수 있습니다).

Python 코더가 관심이 있는 경우: 비밀번호를 묻는 메시지를 표시하지 않고 Python 프로젝트의 request.txt에서 GitHub 요청을 받으려면 https 대신 다음 형식을 사용해야 합니다.

git+ssh://[email protected]/anntzer/defopt@main#egg=defopt

답변2

존재하다우분투 스튜디오 23.04그리고KDE 플라즈마내가 사용하는 것은체계적 접근@Polymerase가 언급한 @lightsing에서.

또한 함께 제공됩니다SSH > 7.2.ssh/config실행 중인 SSH 에이전트에 항상 키를 추가하도록 SSH 클라이언트에 지시하여 이를 방지할 수 있습니다 ssh-add. 이렇게 하면 일이 더 쉬워집니다. 다음은 스레드입니다.필요한 경우에만 SSH 키 비밀번호를 요청하는 방법은 무엇입니까?

이 접근 방식은 터미널, github 및 Apache Netbeans의 SSH 연결을 통해 작동합니다.

ssh-agent를 systemd 서비스로 설치

  • ~/.config/systemd/user/ssh-agent.servicessh-agent는 사용자 격리이므로 파일을 생성합니다 .
[Unit]
Description=SSH key agent

[Service]
Type=simple
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
ExecStart=/usr/bin/ssh-agent -D -a $SSH_AUTH_SOCK

[Install]
WantedBy=default.target
  • 생성 ~/.config/environment.d/ssh_auth_socket.conf및 추가
SSH_AUTH_SOCK="${XDG_RUNTIME_DIR}/ssh-agent.socket"
  • AddKeysToAgent yes추가하다~/.ssh/config
  • SSH의 보안 경고 실행 chmod 600 ~/.ssh/config및 방지chown $USER ~/.ssh/config
  • 서비스를 활성화하고 시작합니다.systemctl --user enable --now ssh-agent

ksshaskpass 설치

sudo apt install ksshaskpass

환경 변수 추가

생성 ~/.config/environment.d/ssh_askpass.conf및 추가

SSH_ASKPASS='/usr/bin/ksshaskpass'
SSH_ASKPASS_REQUIRE=prefer

로그아웃했다가 다시 로그인하세요.

모든 환경 변수를 활성화하려면 로그아웃했다가 다시 로그인하세요. 이제부터는 KWallet이 비밀번호를 관리해야 합니다.

답변3

@mcarans의 답변은 매우 효과적입니다. 위의 6단계( ksshaskpassSSH 핀트리를 생성하여 설정 ~/.config/environment.d/ssh_askpass.conf)는 다음과 같이 단순화할 수 있습니다.

# check
update-alternatives --list ssh-askpass
# /usr/bin/kssaskpass

# set if needed
update-alternatives --force --verbose --set ssh-askpass /usr/bin/kssaskpass

ssh-agent답변에는 설명되어 있지 않지만 시작되었는지 확인해야 합니다 . eval $(ssh-agent)추천 명령이 자주 표시됩니다 . 하지만 난 그게 더 편한 것 같아ssh-agent를 시스템 서비스로 시작하고 사용하는 방법은 무엇입니까?

실제로 ssh-agent서비스가 이미 활성화되어 시작되었을 수도 있습니다. 적어도 데비안 12, KDE에서는요. ssh-agent가 이미 실행 중이므로 제가 취할 조치는 없습니다.

관련 정보