SSH 키를 제거하는 방법?


154

현재 서버에 이전 SSH 키가 업로드되어 있습니다. 문제는 ~/.ssh원본 id_rsaid_rsa.pub파일 이있는 디렉토리를 잃어 버렸습니다 .

결과적으로 서버에서 이전 SSH 키를 직접 제거하고 새 SSH 키를 업로드하고 싶습니다.

나는 성공하지 않고 다음 명령을 시도했다.

$> ssh-add -D

여기에 이미지 설명을 입력하십시오

SSH 키를 완전히 제거하는 방법이 있습니까?


무엇 ssh-add -d?
user2196728

5
젠장, 그것은 ssh를 - 추가 -D 대문자이다
알렉산더 밀스

ssh-agent (1)에서 사용중인 소켓을 확인하십시오.
드와이트 스펜서

답변:


129

키를 제거 ssh-add -d/-D 하지 않은 경우 적어도 두 가지 버그 보고서가 있습니다 .

정확한 문제는 다음과 같습니다.

ssh-add -d/-D그놈 키링에서 수동으로 추가 한 키만 삭제합니다 .
자동으로 추가 된 키를 삭제할 방법이 없습니다.
이것은 원래 버그이며 여전히 존재합니다.

예를 들어, 두 개의 서로 다른 GitHub 계정과 연결된 두 개의 서로 다른 자동로드 된 ssh ID (예 : 직장 및 가정)가있는 경우 서로 전환 할 수있는 방법없습니다 . GitHub는 첫 번째 항목과 일치하므로 GitHub의 '홈'사용자로 표시되어 작업중인 프로젝트를 업로드 할 방법이 없습니다.

허용 ssh-add -d에 적용 할 자동으로로드 키 (그리고 ssh-add -t X대부분의 사용자가 기대하는 동작을 복원 할 자동으로로드 된 키의 수명을 변경).


보다 정확하게 문제에 대해 :

범인은 gpg-keyring-daemon:

  • 그것은 ssh-agent의 정상적인 작동을 방해합니다. 대부분 암호화 된 ssh 키의 암호를 입력 할 수있는 예쁜 상자가 나타납니다.
  • 그리고 그것은 당신의 .ssh디렉토리를 밟아서 발견 한 키를 자동으로 에이전트에 추가합니다.
  • 그리고 그 키를 삭제할 수 없습니다.

우리는 이것을 어떻게 미워합니까? 인생은 너무 짧습니다.

최신 ssh 클라이언트는 호스트에 연결할 때 ssh-agent의 모든 키를 자동으로 시도하기 때문에 실패가 발생합니다.
너무 많으면 서버가 연결을 거부합니다.
그리고 gnome-keyring-daemon은 ssh-agent가 갖고 싶은 키의 수를 스스로 결정하고 자동로드했으며,이를 삭제하지 않도록하기 위해 건배했습니다.

이 버그는 최근 2 일 전 (2014 년 8 월 21 일) 우분투 14.04.4에서 확인되었습니다.


가능한 해결 방법 :

  • 수행 ssh-add -D모든 삭제 수동으로 추가 키를. 또한 자동으로 추가 된 키 gnome-keyring를 잠그지 만을 시도 할 때 잠금을 해제하라는 메시지가 표시 되므로 많이 사용되지 않습니다 git push.
  • 이동 사용자에 ~/.ssh폴더와 백업라는 별도의 폴더에 동일시 할 제외한 모든 키 파일을 이동합니다. 필요한 경우 해마를 열고 키를 삭제할 수도 있습니다.
  • 이제 git push문제없이 할 수 있어야합니다 .

다른 해결 방법 :

당신이 정말로하고 싶은 것은 gpg-keyring-daemon완전히 끄는 것 입니다.
로 이동 System --> Preferences --> Startup Applications하여 " SSH Key Agent (Gnome Keyring SSH Agent)"상자를 선택 해제하십시오 . 아래로 스크롤하여 찾아야합니다.

당신은 여전히를 얻을 수 있습니다 ssh-agent자동으로 적재 더 키, 당신은 추가 할 SSH-추가를 실행하지 않으며, 당신이 키를 삭제하려는 경우, 당신은 할 수 있습니다 만 지금은 올바로 수행 동작합니다. 상상 해봐.

이 의견은 실제로 다음을 제안합니다.

해결책은 gnome-keyring-manager시작 하지 않는 것입니다. 프로그램 파일의 실행 권한을 제거하여 마침내 달성하기가 이상해졌습니다.


라이언 루 (Ryan Lue) 는 다음 과 같이 댓글에 흥미로운 또 다른 사례 추가합니다 .

이것이 누군가에게 도움이되는 경우 : 심지어 파일 id_rsaid_rsa.pub파일을 모두 삭제하려고 시도했지만 키가 여전히 나타났습니다.

턴 아웃 gpg-agentA의 그들을 캐싱 된 ~/.gnupg/sshcontrol파일 ; 거기에서 수동으로 삭제해야했습니다.

즉의 경우 keygrip 추가되었습니다 여기처럼 .


1
우분투 14-16의 또 다른 옵션은 gui '비밀번호 및 키'를 사용하는 것입니다 (ssh가 찾기 위해 검색 할 수 있음). 예를 들어 OpenSS 키를 선택한 다음 키를 마우스 오른쪽 버튼으로 클릭하고 삭제를 선택하십시오. 시스템이 제거 된 것을 확인하기 위해 시스템을 다시 시작해야 할 수도 있습니다.
user3257693

2
이 정보 ssh-agentssh-add선택한 답변 에 대한 정보는 무엇 입니까? 원래 포스터는 그가 원한다고 말했다 remove the old SSH key directly on the server and upload a new one. ~/.ssh/authorized_keys원격 호스트 에서 편집하고 싶은 것 같습니다 .
H2ONaCl

1
이 답변을 통해 ssh 전달 기능을 사용하여 나타나는 문제를 해결할 수 있습니다. Ubuntu 16.04 시스템에서 모든 ssh 자격 증명이 전달되는 데비안 시스템으로 이동 git clone하면 Ubuntu 상자의 구성 파일에있는 버전 대신 체인의 첫 번째 키를 사용하고있었습니다. 나쁜 열쇠는 자동으로 빨려 들어가 데비안 상자로 전달되었습니다.
redfive

1
이것은 뒤쪽에 진짜 고통입니다. 저는 회사 프로젝트를 진행 중이며 다른 회사에서 일하기로 계약했습니다. 이것은 둘 다 관리하는 데 낭비되는 시간을 추가합니다. 곧 수정이 이루어지기를 바랍니다.
joshlsullivan 2016 년

1
이것이 누군가에게 도움이되는 경우 : 심지어 파일 id_rsaid_rsa.pub파일을 모두 삭제하려고 시도했지만 키가 여전히 나타났습니다. gpg-agent가 ~/.gnupg/sshcontrol파일 에서 캐싱하는 것으로 나타났습니다 . 거기에서 수동으로 삭제해야했습니다.
Ryan Lue

10

ssh 관련 작업을 수행하려고하면 다음 오류가 발생합니다.

$ git fetch
no such identity: <ssh key path>: No such file or directory

다음을 사용하여 ssh 에이전트에서 누락 된 ssh 키를 제거 할 수 있습니다.

$ eval `ssh-agent -s`  # start ssh agent
$ ssh-add -D <ssh key path>  # delete ssh key

9

내가 오해하지 않는 한 .ssh로컬 컴퓨터의 개인 키가 포함 된 디렉토리 를 잃어 버렸 으므로 서버에 있었고 키 기반 로그인을 허용 한 공개 키를 제거하려고합니다. 이 경우 .ssh/authorized_keys서버의 홈 디렉토리에있는 파일에 저장됩니다 . 텍스트 편집기를 사용하여이 파일을 편집하고 관련 행을 식별 할 수있는 경우 해당 행을 삭제할 수 있습니다 (유일한 항목 인 경우에도 더 쉽습니다). 키가 서버에 대한 유일한 액세스 방법이 아니기 때문에 파일을 로그인하고 편집하는 다른 방법이 있기를 바랍니다. authorised_keys파일에 새 공개 키를 수동으로 추가하거나을 사용할 수 있습니다 ssh-copy-id. 어느 쪽이든 서버의 계정에 비밀번호 인증을 설정하거나 서버의 authorized_keys파일에 액세스하려면 다른 ID 또는 액세스 방법 이 필요합니다.

ssh-add로컬로 ID 관리를 처리하는 ssh 에이전트에 ID를 추가하고 "에이전트에 대한 연결은 SSH 원격 로그인을 통해 전달되므로 사용자는 네트워크의 어느 곳에서든 보안 방식으로 ID가 제공 한 권한을 사용할 수 있습니다." (man page), 그래서 나는 이것이 당신이 원하는 것이라고 생각하지 않습니다. 내가 아는 한 ssh 로그인을 통해 해당 서버에 액세스하지 않으면 공개 키를 서버에 가져올 수있는 방법이 없습니다.


이 파일을 삭제했는데 여전히 연결할 수 있습니다. 여기에 포함되지 않았습니다. 자동으로 추가 된 키 였지만 여전히 존재하지 않습니다.
Larry

5

Unity에서 "Passwords and Keys"애플리케이션을 열고 Secure Keys- > OpenSSH keys 에서 원치 않는 키를 제거했으며 ssh-agent -l 에서도 자동으로 제거되었습니다 .


2
이렇게하면 디렉토리에서도 삭제됩니다 ~/.ssh
.

1

이 버그가 여전히 우분투 19.04에 있음을 확인할 수 있습니다. @VonC가 제안한 해결 방법은 내 버전에 대해 요약하여 완벽하게 작동했습니다.

  • 왼쪽 상단에서 활동 탭을 클릭하십시오
  • 검색 창이 나타나면 "startup applications"를 입력하십시오.
  • "시작 응용 프로그램"아이콘을 클릭하십시오
  • 팝업 상자에서 gnome key ring manager 응용 프로그램을 선택하고 (GUI에서 정확한 이름을 기억할 수는 없지만 충분히 구별 할 수 있음) 제거하십시오.

내가 다음에 한 일은 시도했다 ssh-add -D다시하고 다시 부팅 한 후 ssh-add -l나에게 말했다 에이전트는 어떤 정체성이 없습니다. 나는 여전히 ssh-agent데몬을 실행하고 있음을 확인했다 ps aux | grep agent. 그래서 GitHub ( ssh-add ~/.ssh/id_ecdsa)에서 가장 자주 사용하는 키를 추가했으며 모두 좋습니다!

이제 가장 자주 사용되는 리포지토리를 사용하여 정상적인 작업을 수행 할 수 있으며 RSA 키를 사용하는 다른 리포지토리에 액세스해야하는 경우에는 터미널 하나를 전용으로 사용합니다 export GIT_SSH_COMMAND="ssh -i /home/me/.ssh/id_rsa.pub". 해결되었습니다! 버그와 해결책을 지적 해 준 크레딧은 @VonC로갑니다.


1

시스템에서 .ssh 키 확인

  1. 폴더로 이동-> /Users/administrator/.ssh/id_ed25519.pub

그렇지 않은 경우

  1. 터미널을 엽니 다.

터미널에서 과거

  1. 사용자 확인-> ssh -T git@gitlab.com

기존 .ssh 키 제거

  1. 기존 .ssh 키 제거-> rm ~ / .ssh / github_rsa.pub

새로 만들기

  1. 새 .ssh 키 생성-> ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

  2. 공개 키는 "/Users/administrator/.ssh/id_ed25519.pub" 에 저장되었습니다 .

  3. 공개 키 저장 경로를 엽니 다.
  4. .ssh 키 -> GitLab 계정-> 설정-> SSH 키-> 키 추가
  5. 터미널에서 다시 테스트 -> ssh -T git@gitlab.com

0

나를위한 해결책 (OpenSuse Leap 42.3, KDE)은 ~/.gnupg캐시 된 키와 프로파일이 포함 된 폴더의 이름을 바꾸는 것이 었습니다 . KDE 로그 아웃 / 로그온 후 ssh-add / agent가 다시 실행되고 폴더가 처음부터 작성되지만 이전 키는 모두 사라집니다.

다른 접근법으로는 성공하지 못했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.