다음을 통해 에이전트에 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/identity
ssh-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 키를 기억하지 못하는 것 같습니다.하지만 내 생각엔 그게 당신이 찾고 있는 것 같아요.