재부팅 사이에 ssh-add가 지속되지 않습니다


150

에이전트에 ssh 키를 추가했습니다.

$ ssh-add ~/.ssh/id_rsa_mac
Identity added: /Users/alex/.ssh/id_rsa_mac (/Users/alex/.ssh/id_rsa_mac)

재부팅 후 에이전트는이 키를 더 이상 추가하지 않습니다.

$ ssh-add -l
The agent has no identities.

왜 이런 일이 일어 났습니까?


지금은 완전히 대답 할 시간이 없지만 ssh 모드의 gpg-agent는 원하는 것을 수행합니다. 레거시 ssh-agent 대신 사용해보십시오. 이것이 도움이된다면 나중에 시간이 걸릴 때 시도하고 확장 할 수 있습니다.
Vality

@Vality : gpg-agent가 영구적으로 재부팅 될지 의심됩니다.
Pavel Šimerda

@ PavelŠimerda 사용자 암호를 사용하여 개인 키를 암호화 한 다음 $HOME/.gnupg/private-keys-v1.dssh-add로 추가하는 즉시 키를 배치합니다 . 정말 영구적입니다. 비 휘발성 홈 디렉토리가 있다고 가정하십시오.
Vality

@Vality : 보안 문제로 간주해서는 안됩니까? 암호없이 키를 사용하고 에이전트가 없어도 키를 사용할 수 없습니까?
Pavel Šimerda

1
@ PavelŠimerda 키가 사용자 암호로 암호화되어 저장되어 있기 때문에 실제로 보안 문제는 아닙니다. 암호를 해독하려면 사용자가 로그인 할 때마다 암호를 입력해야합니다. 암호화되지 않은 키를 저장한다는 것은 루트 (또는 하드 디스크를 가져간 도둑)를 가진 사용자가 홈 디렉토리에서 사용자를 훔칠 수 있음을 의미합니다.
Vality

답변:


174

에이전트에 키를 추가하는 것은 일시적입니다. 에이전트가 실행되는 동안에 만 지속됩니다. 당신이 그것을 죽이거나 컴퓨터를 다시 시작하면 다시 추가 할 때까지 그들은 손실됩니다. 로부터 ssh-agent매뉴얼 페이지

ssh-agent는 공개 키 인증 (RSA, DSA, ECDSA)에 사용되는 개인 키를 보유하는 프로그램입니다. 아이디어는 ssh-agent가 X 세션 또는 로그인 세션의 시작에서 시작되고 다른 모든 창 또는 프로그램은 ssh-agent 프로그램의 클라이언트로 시작된다는 것입니다. 환경 변수를 사용하면 ssh (1)를 사용하여 다른 시스템에 로그인 할 때 에이전트를 찾아 인증에 자동으로 사용할 수 있습니다.

에이전트에는 처음에 개인 키가 없습니다. 키는 ssh-add (1)을 사용하여 추가됩니다. 인수없이 실행하면, (1) 파일을 추가 SSH는-추가 ~/.ssh/id_rsa, ~/.ssh/id_dsa, ~/.ssh/id_ecdsa~/.ssh/identity. 아이디에 비밀번호 문구가있는 경우 ssh-add (1)은 X11에서 실행중인 경우 단말기에 비밀번호 문구가 있는지 또는 작은 X11 프로그램인지를 묻습니다. 둘 중 하나라도 해당되지 않으면 인증이 실패합니다. 그런 다음 ID를 에이전트에 보냅니다. 에이전트에 여러 ID가 저장 될 수 있습니다. 에이전트는 이러한 ID를 자동으로 사용할 수 있습니다. ssh-add -l에이전트가 현재 보유한 ID를 표시합니다.

맥 OS 시에라

macOS Sierra 10.12.2 부터 Apple은 SSH 구성을위한 UseKeychain 구성 옵션을 추가했습니다. 당신은 추가하여이 기능을 활성화 할 수 있습니다 UseKeychain yes당신에게 ~/.ssh/config.

Host *
  UseKeychain yes

OSX 키 체인

OSX를 사용하지 않지만 SuperUser에서이 Q & A를 찾았 습니다. SSH 키와 함께 Mac OS X 키 체인을 사용하는 방법은 무엇입니까? .

Mac OS X Leopard 이후 키 체인은 SSH 키 저장을 지원한다는 것을 알고 있습니다. 누군가이 기능이 어떻게 작동하는지 설명해 주시겠습니까?

따라서이 명령을 사용하여 SSH 키를 키 체인으로 가져올 수 있습니다.

$ ssh-add -K [path/to/private SSH key]

그런 다음 키는 부팅마다 유지되어야합니다.

Mac을 재부팅 할 때마다 키 체인의 모든 SSH 키가 자동으로로드됩니다. Keychain Access 앱의 키와 명령 줄에서 다음을 통해 키를 볼 수 있어야합니다.

  ssh-add -l

출처 : 수퍼 유저-SSH 키와 함께 Mac OS X 키 체인을 사용하는 방법은 무엇입니까?


정말? Linux에서는이 문제가 없습니다. 컴퓨터를 다시 시작할 때마다 "ssh-add my_key"가 필요합니까?
ア レ ッ ク ス

2
@Alex 답변에 설명 된대로 에이전트는 자동으로을 추가합니다 ~/.ssh/id_rsa. 나는 이것이 리눅스에서 키 파일의 위치라고 생각합니다. 표준 ssh 키 에이전트를 사용하지 않을 수도 있습니다. gnome-keyring-daemon과 같은 다른 동작이있을 수 있습니다.
Patrick

그러나 Mac에서는 이름이 "id_rsa_mac"입니다. 에이전트가 자동으로 추가하도록하려면 어떻게합니까?
ア レ ッ ク ス

@ 패트릭 : 클래식이 ssh-agent자동으로 키를 추가 하는지 확실하지 않습니다 . 제 생각 ssh-add에는 표준 위치를 읽거나 ssh에이전트를 사용하지 않는 경우 클라이언트입니다.
Pavel Šimerda

5
ssh-add 명령이 -K 플래그를 인식하지 못하면 아마도 ssh-add의 macports 버전을 사용하고있을 것입니다 ... ssh-add의 OSX 버전에 대한 전체 경로를 지정하여 macports 버전을 무시할 수 있습니다 이 같은/usr/bin/ssh-add -K /path/to/private/key
ChrisR

20

ssh-agentA는 일시적으로 키를 저장하는 세션 서비스 사용자에 대해.

SSH 에이전트의 주요 목적은 암호를 사용하여 보안 된 키의 일반 텍스트 버전을 기억하는 것입니다. 즉, 키는 암호를 사용하여 암호화 된 디스크에 저장되며 키 소유자 ssh-add또는 일부 GUI 도구는 암호를 제공하고 세션이 종료되거나 사용자가 명시 적으로 제거를 요청할 때까지 에이전트가 암호를 기억하도록 지시합니다.

비밀번호 문구를 사용하지 않고 에이전트 전달을 사용하지 않는 경우 (대부분의 경우 안전 하지 않음 ) 에이전트가 전혀 필요하지 않습니다 . 모든 SSH 클라이언트는 표준 위치 또는 명시 적으로 지정된 키에서 디스크의 키를 읽을 수 있어야합니다.

표준 위치는 매뉴얼 페이지에 나열되어 있습니다 ssh(1).

프로토콜 버전 1의 경우 기본값은 ~ / .ssh / identity이고 프로토콜 버전 2의 경우 ~ / .ssh / id_dsa, ~ / .ssh / id_ecdsa, ~ / .ssh / id_ed25519 및 ~ / .ssh / id_rsa입니다.

비표준 위치를 사용하는 경우 동일한 매뉴얼 페이지 -issh설명 된대로 스위치를 사용 하거나 사용중인 SSH 클라이언트의 해당 옵션을 사용할 수 있습니다.


4
+1의 사용을 옹호하는 +1ssh-agent
dg99

7

에서 시에라 :

UseKeychain을 사용하십시오 . (나는 이것을 시도하지 않았지만 가장 정확한 해결책처럼 들린다.)

또는

ssh-add -K /your/key
echo ssh-add -A | cat >> ~/.bash_profile

또는 에 추가하는 대신 plist 파일을 작성하십시오~/.bash_profile .

면책 조항 : 다른 사람들이 지적했듯이 ssh 암호 문구를 키 체인에 저장하는 것이 얼마나 안전한지 모르겠습니다.


위의 모든 방법을 시도했지만이 방법 만 작동합니다. 감사합니다!
Duannx
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.