비밀번호로 보호 된 SSH 키를 어떻게 영구적으로 저장할 수 있습니까?


9

멋진 창 관리자를 사용하고 있습니다

비밀번호로 개인 키를 영구적으로 추가하려면 어떻게해야합니까?

여기 에 대한 답변 에서 영감을 얻어 ~ / .ssh / config에 개인 키를 추가했습니다.

~ / .ssh / config의 내용 :

IdentityFile 'private key full path'

~ / .ssh / config의 권한 : 0700

그러나 그것은 나를 위해 작동하지 않습니다.

모든 세션에서 수동으로 키를 추가하면 작동하지만 더 우아한 방법을 찾고 있습니다 (.bashrc 아님)

편집 :

  • 사용 그놈 클래식 (효과없이) 버전.

로 SSH 키를 추가 한 후 ssh-copy-if원격 호스트에, 나는에 다음과 같은 메시지를 얻을 터미널 내가 로그인있을 때 (GNOME 터미널 3.0.1) :

ssh -i .ssh/Password-Protected-Key user@host
Enter passphrase for key '.ssh/Password-Protected-Key':
  • 멋진 창 관리자 사용하기 v3.4.10. 나는 이미 gnome-keyring-dameon다른 pid를 죽이고 gnome-keyring-daemon --start | grep SOCK(grep) 출력을 실행합니다 (.profile에 추가했습니다).

SSH_AUTH_SOCK=/tmp/keyring-2LXXXX/ssh

나는 똑같은 단계를 밟았으며 GUI ssh-add 대화 상자가 없습니다.

편집 2 :

Ubuntu 11.10 가상 머신에서 새 암호로 보호 된 키를 생성했지만 여전히 암호 프롬프트가 표시되지 않습니다.

편집 3 : 이것은 멋진 창 관리자에서 작동 할 수없는 것 같습니다 :( 및 아마도 다른 ..


1
비밀번호로 보호 된 SSH 키를 추가하는 시점은 무엇입니까? 그것은 목적을 패배 ...
MarkovCh1

3
@Syzygy 글쎄, 당신은 항상 다른 서비스와 응용 프로그램에서 암호를 입력합니까 또는 당신은 당신의 로그인 암호로 암호의 잠금을 해제하기 위해 열쇠 고리를 사용하고 있습니까?
pl1nk 2016 년

더 이상의 생각이나 질문이 있으십니까? 현상금 유예 기간이 곧 만료됩니다 :-)
ish

@izx 나는 당신이 언급 한 모든 것을 확인했으며 예상대로입니다. 내 업데이트에서 언급했듯이 그놈도 사용했습니다. 버그를 신고해야합니까?
pl1nk 2016 년

여기에서 힌트를 얻을 수 있습니다 . 일이 시작되는 순서가 중요하고 그놈 키링 데몬이 dbus에 도착하는 것도 중요합니다.
존 S Gruber

답변:


2

Unity 또는 gnome-keyring-daemon을 시작하는 세션 관리자를 사용하는 경우 Seahorse (비밀번호 및 키)를 사용하여 키를 설정하고 키를 정의하고 암호를 설정하고 공개 키를 배포 할 수 있습니다. ssh와 함께 사용할 컴퓨터. 터미널 명령이 필요하지 않습니다.

다음을 수행하여 비밀번호를 작성하십시오.

  1. File-> New를 선택하고 Secure Shell Key를 선택하십시오. 계속을 누릅니다.

  2. 설명이 포함 된 이름을 입력하고을 선택하십시오 Create and set up.

  3. 키 구문을 두 번 입력하라는 메시지가 나타납니다 (두 번째로 잘못 입력하지 않았는지 확인하기 위해 두 번째).

  4. 공개 키를 사용할 컴퓨터와 키를 사용할 컴퓨터의 사용자 이름을 입력하십시오. 공개 키는 다른 컴퓨터로 복사되어 필요한 경우 해당 컴퓨터에서 암호를 입력하라는 메시지가 표시됩니다.

이제 My Personal Keys탭에 키가 표시됩니다.

Lightdm에 로그인 할 때 gnome-keyring-daemon이 올바르게 시작되었다고 가정하고 세션 관리자가 다시 ssh와 함께 키를 사용할 때 키 구문을 입력하라는 메시지가 표시됩니다. 이 대화 상자에서 키 프레이즈를 제공하고 Details컨트롤을 선택하고 로그인 할 때마다 키링을 잠금 해제하도록 요청하여 자동으로이 키를 제공합니다. 프레스OK

원격 컴퓨터에 로그인 할 수있는 다른 키가 있으면이 방법으로 프롬프트가 표시되지 않을 수 있습니다.

이 작업이 완료되면 첫 번째 해마 탭 Passwords에 키 이름에 대한 "암호 잠금 해제"가 표시됩니다. " 비밀번호 : 로그인" 앞의 삼각형을 클릭 하여 확인하십시오.


따라서이 기능은 Awesome WM에서 작동하지 않습니다. Awesome을 계속 사용하고 싶습니다. 해결 방법을 계속 사용하겠습니다.
pl1nk 2016 년

19

비밀번호로 보호 된 SSH 키를 여러 세션에서 유지하고 재부팅

키 패스 프레이즈를 한 번 입력하면 로그인 할 때마다 언제든 사용할 수 있습니다. Unity 또는 Gnome 데스크탑을 사용하는 대부분의 사용자에게 적합합니다.

  • 공개 키를 원격 서버에 추가 한 후 연결하면 GUI ssh-add 대화 상자가 나타납니다.

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

  • 삼각형을 클릭하여 "세부 사항"을 펼치면 아래가 표시됩니다. 기본값은 "로그 아웃 할 때 키링 잠금"이며 세션 당 한 번 암호를 입력해야합니다.

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

  • 로그인 할 때마다 자동 잠금 해제로 변경하십시오. 즉, 세션에 로그인 할 때마다 작동합니다. 사용자 비밀번호로 "제어"됩니다. 재부팅 후에도 지속됩니다.

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

  • 키 암호를 한 번 입력하면됩니다. 키는 데스크탑 환경에 처음 로그인하여 인증됩니다.


AwesomeWM을 사용하는 경우

새로운 사용자 ID에 AwesomeWM을 새로 설치하여 테스트했습니다.

  • 기본적으로 AwesomeWMssh-agent다음을 사용합니다 .

    $ 수출 | grep SSH
    -x SSH_AGENT_PID = "5479"선언
    -x SSH_AUTH_SOCK = "/ tmp / ssh-fWCKNnPq5440 / agent.5440"선언
    
  • 위 단계를 수행하려면 gnome-keyring-daemonssh-agent가 아닌 SSH 인증 데몬으로 사용해야합니다 . lightdm을 사용하여 로그인하면 PAM이 시작 gnome-keyring-daemon되어 잠금 해제 암호로 로그인 키를 잠금 해제하려고 시도하지만 실행 상태를 유지하고 사용하려면 구성에 추가해야합니다.

  • 끝에 다음을 추가하십시오 ~/.xprofile.

      #! / bin / bash
      평가 $ (gnome-keyring-daemon --start)
      SSH_AUTH_SOCK 내보내기
      GNOME_KEYRING_PID 내보내기
      GNOME_KEYRING_CONTROL 내보내기
    

~/.xprofile파일 의 명령 은 굉장한 창 관리자 를 시작하기 전에 xsession에 의해 실행되며 gnome-keyring-daemon --login위의 환경 변수를 통해 PAM에 의해 시작된 프로세스 와 연결됩니다 .

  • lightdm으로 다시 로그 아웃하고 다시 로그인하면 이제 ssh user@host위와 같은 팝업이 표시됩니다.이 팝업을 사용하여 ~ / .ssh /의 개인 키를 해독하고 개인 키를 그놈 키링 로그인 키 링에 저장하십시오.

모든 창 관리자 / 데스크톱 환경을위한 일반적인 솔루션

  • gnome-keyring-daemon대신 사용하는 것입니다 ssh-agent. 이를 위해, 당신은 실행해야 gnome-keyring-daemon 하고 그것을 초기화해야 하고 ,이 후이 할 중 하나를 ssh-agent시작하거나 시작하지 ssh-agent전혀.

  • ssh(실제로 ssh-add)는 SSH_AUTH_SOCK입력하여 확인할 수있는 환경 변수 의 값을 기반으로 호출 할 인증 에이전트를 결정합니다.export | grep SOCK

  • 이것은 ssh-agent 형식 SSH_AUTH_SOCK=/tmp/ssh-MMFyVlI22130/agent.22130입니다 (키를 저장할 수있는 것은 아닙니다)

  • 그러나 양식 SSH_AUTH_SOCK="/tmp/keyring-mEQB5g/ssh"에 대한 그놈 - 키링 - 데몬 (당신이 원하는)

  • 값을 확인 ps aux | grep keyring하고 gnome-keyring-daemon 이 실행 중인지 확인하고, 그렇다면 그 결과로 초기화하십시오.gnome-keyring-daemon --start

  • 그런 다음 ssh-add -l"에이전트 없음"이 표시되면 gnome-keyring-daemon을 구성하는 중에 실수로 콘솔에 저장된 저장된 ID를 입력하여 확인할 수 있습니다 .


글쎄, 나는 이것을 보지 못했다! 이 대화 상자에서 어떤 명령을 사용하거나 더 나은 명령을 사용할 수 있습니까?
pl1nk

@izx 사용시 ssh-add를 사용해야합니까?
John S Gruber

@JohnSGruber 아니요, 개인 키가있는 한 ~/.ssh사용할 필요가 없습니다 ssh-add. 처음 사용할 때 대화 상자가 나타납니다. 이것은 Unity / Gnome에서만 작동합니다. 채팅에서 OP가 AwesomeWM을 사용하고 있음을 발견했습니다 .
ish

1
@ pl1nk : 답변이 끝날 때까지 AwesomeWM에 대한 업데이트 된 솔루션을 참조하십시오.
ish

@izx-전반적인 지원에 감사드립니다. 업데이트 된 질문을 확인하십시오.
pl1nk

2

문제의 해결책은 ssh 에이전트를 사용하는 것입니다. 키 비밀번호를 한 번만 잠금 해제하면 에이전트가 메모리에 보관하고 자동으로 사용됩니다.

  • 와 개인 / 공개 키 쌍 생성 ssh-keygen -t dsa
  • 공개 키를 원격 컴퓨터에 복사하십시오. 일반적으로 ~ / .ssh / authorized_keys입니다 (이 용도로 사용 ssh-copy-id).
  • ssh-add원격 시스템에 로그인하기 전에 실행 하면 암호를 묻고 저장합니다
  • 비밀번호가 필요하지 않은 원격 시스템에 로그인

ssh-agent는 .net에 잘 설명되어 있습니다. 예를 들면 다음과 같습니다.

ssh-agent의 또 다른 장점은 원격 시스템에 로그인 ssh -A user@domain.name하면 domain.name 컴퓨터에서 개인 키를 domain.name 컴퓨터에 복사 할 필요없이 domain.name 컴퓨터에서 공개 키를 포함하는 세 번째 컴퓨터로 ssh를 더 추가 할 수 있다는 것입니다. 개인 키, 일회성 챌린지 / 응답 만 표시).


어떻게해야합니까? 보내신 지시 사항이 명확하지 않습니다. 또한이 우분투와 관련이 있습니까?
pl1nk

자세한 지시 사항으로 게시물을 편집했습니다
Floyd

귀하의 솔루션은 세션 당 암호를 저장합니다. 추가로 제 경우에는 내 대답에서 볼 수 있듯이 그놈 키 링과 충돌하는 것 같습니다.
pl1nk 2016 년

@ pl1nk : 세션 전체에 암호를 저장해야합니다. 즉, 부팅 할 때마다 한 번 씩만 요청 합니까?
ish

예, 세션 당 한 번씩 비밀번호를 제공해야합니다. 이것은 암호로 보호 된 ssh 키의 기본 개념으로, 로그인 후 개인 키 파일에 액세스 할 수있는 것 이상의 다른 보안 계층을 제공합니다.
Floyd

-1

당신이 사용할 수있는

ssh-add 'filename or fullpath'

키가 있으면 암호를 묻는 메시지가 표시됩니다

그런 다음 비밀번호없이 연결할 수 있습니다


1
내 질문에 언급했듯이 더 우아한 방법을 찾고 있습니다.
pl1nk

-2

개인 키로 작업하려면 다음을 수행하십시오.

ssh-keygen -t rsa -N ''

그때:

scp .ssh/id_rsa.pub.ssh/authorized_keys통해 컴퓨터 대상으로 복사

scp .ssh/id_rsa.pub user@remote_machine:~/.ssh/authorized_keys

다 했어요

비밀번호없이 원격 컴퓨터에 연결

ssh user@remote_machine

그리고 우리는 암호 프롬프트가 없습니다.


매번 키 암호를 묻는 메시지가 계속 표시됩니다.
pl1nk

1
ssh-keygen -t rsa -N ''을 실행할 때 암호를 입력했기 때문일 수 있습니다. 따라서 위 명령을 실행할 때 비밀번호를 입력하지 말고 "ENTER"키만 누르십시오.
Octávio Filipe Gonçalves

음 암호가있는 키를 갖고 싶습니다. 내 질문을 업데이트했습니다
pl1nk

1
좋아, 암호로 왜 이것을하고 싶은지 모르겠다. 일반적으로이 개념은 인증없이 클라이언트 시스템을 인식 할 수있는 원격 시스템과 연결하는 데만 사용됩니다. 따라서이 시나리오를 원하지 않으면 정상적인 ssh 연결 만 실행하면됩니다. 권리?
Octávio Filipe Gonçalves

1
사람들에게 원격 시스템의 authorized_keys를 통해 공개 키를 복사하도록하는 것은 약간의 힘입니다 ... ssh-copy-id user @ remotemachine 명령을 사용하는 것이 훨씬 좋습니다. APPEND는 키를 덮어 쓰지 않습니다.
플로이드
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.