ssh-add는 재부팅 후에도 지속되지 않습니다.

ssh-add는 재부팅 후에도 지속되지 않습니다.

다음을 통해 에이전트에 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.

왜 이런 일이 발생합니까?

답변1

에이전트에 키를 추가하는 것은 일시적입니다. 에이전트가 실행되는 동안에만 지속됩니다. 종료하거나 컴퓨터를 다시 시작하면 다시 추가할 때까지 해당 항목이 손실됩니다. ssh-agent매뉴얼 페이지 에서 :

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

에이전트에는 처음에는 개인 키가 없습니다. 키를 추가하려면 ssh-add(1)를 사용하세요. 인수 없이 실행되면 ssh-add(1) 는 파일을 추가 하고 ~/.ssh/id_rsa. ID에 비밀번호가 있으면 ssh-add(1)는 터미널(터미널에 비밀번호가 있는 경우) 또는 작은 X11 프로그램(X11에서 실행되는 경우)에서 비밀번호를 묻습니다. 둘 중 어느 것도 해당되지 않으면 인증이 실패합니다. 그런 다음 ID를 에이전트에 보냅니다. 여러 ID를 에이전트에 저장할 수 있으며 에이전트는 이러한 ID 중 하나를 자동으로 사용할 수 있습니다. 현재 에이전트가 보유하고 있는 ID를 표시합니다.~/.ssh/id_dsa~/.ssh/id_ecdsa~/.ssh/identityssh-add -l

macOS 시에라리온

macOS Sierra 10.12.2부터 시작, Apple은 SSH 구성을 위한 UseKeychain 구성 옵션을 추가했습니다. UseKeychain yes에 추가하여 이를 수행할 수 있습니다 ~/.ssh/config.

Host *
  UseKeychain yes

OSX 키체인

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

내가 아는 한, Keychain은 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 키체인을 사용하는 방법은 무엇입니까?

세라 위에?

이후 버전의 MacOS에서는 -K또는 스위치를 사용하려고 할 -A때 이 메시지가 나타날 수 있습니다 . 예를 들어:

 $ ssh-add -K
WARNING: The -K and -A flags are deprecated and have been replaced
         by the --apple-use-keychain and --apple-load-keychain
         flags, respectively.  To suppress this warning, set the
         environment variable APPLE_SSH_ADD_BEHAVIOR as described in
         the ssh-add(1) manual page.

따라서 경고 메시지에서 제공하는 지침을 대신 사용하세요.

$ ssh-add --apple-load-keychain --apple-load-keychain
Identity added: /Users/slm/.ssh/somekey1_id_rsa (/Users/slm/.ssh/somekey1_id_rsa)
Identity added: /Users/slm/.ssh/somekey2_id_rsa (/Users/slm/.ssh/somekey2_id_rsa)

또한 이 환경 변수와 해당 APPLE_SSH_ADD_BEHAVIOR값을 사용하여 경고를 표시하지 않을 수도 있습니다 macos. ssh-add매뉴얼 페이지 에서 :

$ man ssh-add
...
APPLE_SSH_ADD_BEHAVIOR
        Enables or disables the older processing of the -A and -K 
        options used in earlier macOS releases.  These options have 
        been renamed --apple-load-keychain and --apple-use-keychain
        respectively. However, -A and -K still behave as in earlier 
        releases except in the following circumstances.  If a 
        security provider was specified with -S or SSH_SK_PROVIDER, 
        or if APPLE_SSH_ADD_BEHAVIOR is set to the value “openssh”, 
        then ssh-add uses standard OpenSSH behavior: the -A flag is 
        not recognized and the -K flag behaves as documented in the 
        DESCRIPTION section above.

        Otherwise, ssh-add -A and -K will behave as in earlier macOS 
        releases. A warning will be output to standard error unless
        APPLE_SSH_ADD_BEHAVIOR is set to the value “macos”.  Note: 
        Future releases of macOS will not support neither -A nor -K
        without setting this environment variable.

답변2

이것은ssh-agent키를 임시로 저장하는 세션 서비스사용자용.

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

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

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

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

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

답변3

존재하다세라:

사용키체인 사용. (해보지는 않았지만 가장 정확한 해결책인 것 같습니다.)

또는

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

또는plist 파일 만들기에 추가하는 대신 ~/.bash_profile.

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

답변4

위의 답변 중 이 문제를 해결하는 답변은 거의 없습니다. 아래 나열된 Linux 및 MacOs 솔루션이 있습니다.

Linux에서도 동일한 문제가 발생합니다. 다른 사람들이 말했듯이 ssh-add이것은 일시적이기 때문입니다. 해결책은 ssh-add명령을 추가 .bashrc하거나 단순히 사용하지 않는 것입니다.

해결책은 아래에 언급되어 있습니다이 답변도착하다git에게 어떤 개인 키를 사용할지 알려주는 방법은 무엇입니까?

옵션 4:~/.ssh/config

다른 답변에 제안된 파일을 사용하여 ~/.ssh/config개인 키의 위치를 ​​지정하세요.

Host github.com
  User git
  Hostname github.com
  IdentityFile ~/.ssh/id_rsa

Mac에서는 구성에 다음 줄을 추가하면 ~/.ssh/config나에게 효과적이었습니다.

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/github

나는 테스트하지 않았습니다이 답변도착하다macOS Sierra는 재부팅 사이에 SSH 키를 기억하지 못하는 것 같습니다.하지만 내 생각엔 그게 당신이 찾고 있는 것 같아요.

관련 정보