macOS로 업그레이드 한 후이 명령을 실행해야합니다.
ssh-add -K
재부팅 후 문제를 해결하지만 컴퓨터에 로그온 할 때마다이 명령을 실행해야합니다.
위의 명령을 실행하지 않으면 내 키를 ~/.ssh건너 뛰고 연결을 설정하기 위해 서버 비밀번호를 묻는 메시지가 표시됩니다.
-K. 해결 방법은 @JakeGould의 답변을 참조하십시오.
macOS로 업그레이드 한 후이 명령을 실행해야합니다.
ssh-add -K
재부팅 후 문제를 해결하지만 컴퓨터에 로그온 할 때마다이 명령을 실행해야합니다.
위의 명령을 실행하지 않으면 내 키를 ~/.ssh건너 뛰고 연결을 설정하기 위해 서버 비밀번호를 묻는 메시지가 표시됩니다.
-K. 해결 방법은 @JakeGould의 답변을 참조하십시오.
답변:
macOS Sierra 10.12.2부터 Apple 은 문제에 대한 '적절한'해결을 허용 하는 ssh_config옵션을 추가했습니다 UseKeychain. ~/.ssh/config파일에 다음을 추가 하십시오.
Host *
AddKeysToAgent yes
UseKeychain yes
ssh_config man10.12.2 의 페이지에서 :
키 체인 사용
macOS에서 특정 키를 사용하려고 할 때 시스템이 사용자 키 체인에서 암호를 검색해야하는지 여부를 지정합니다. 사용자가 암호를 제공 할 때이 옵션은 암호가 올바른 것으로 확인되면 암호를 키 체인에 저장해야하는지 여부도 지정합니다. 인수는 'yes'또는 'no'여야합니다. 기본값은 '아니오'입니다.
IdentityFile ~/.ssh/id_rsa중복적이고 필요하지 않다고 생각한다 (기본 옵션을 볼 때). 내 ssh 구성 파일에서 해당 옵션을 설정하지 않았습니다.
~/.ssh/config~은 ssh레벨 의 문제를 해결하기 때문에 선호됩니다 . .bash_profile셸을 사용하지 않고 ssh를 사용하는 GUI 클라이언트 에서 mod가 작동 하는지 100 % 확신 할 수 없습니다.
Capistrano 사용하여 일부 코드를 배포하려고 할 때도이 문제가 발생했습니다 . 매우 실망 스럽습니다. 이 문제를 해결하기 위해 내가 아는 두 가지 방법이 있습니다.
내가 찾은 한 가지 해결책은 다음 ssh-add과 -A같이 키 체인에 저장된 암호를 사용하여 SSH 에이전트에 알려진 모든 ID를 추가 하는 옵션 으로 실행 하는 것입니다.
ssh-add -A
이제는 작동하지만 재부팅해도 지속되지 않습니다. 따라서 다시 걱정하지 않으려면 다음 ~/.bash_profile과 같이 사용자 파일을여십시오.
nano ~/.bash_profile
그리고 아래에이 줄을 추가하십시오 :
ssh-add -A 2>/dev/null;
이제 새로운 터미널 창을 열면 모든 것이 좋을 것입니다!
따라서 ssh-add -A가장 기본적인 경우 에는 옵션이 작동하지만 최근에 가장 일반적인 시스템 위에 6-7 Vagrant 상자 (액세스에 SSH 키 / ID를 사용하는)가 설치된 문제 id_rsa.pub가 발생했습니다.
간단히 말해, 서버 액세스는 비밀번호를 기반으로하고 SSH 키 / 아이덴티티는 SSH 키 / 아이덴티티이므로 SSH 키 / 아이덴티티를 기반으로 너무 많은 실패한 시도로 인해 원격 서버에서 잠겼습니다. 그래서 SSH 에이전트는 모든 SSH 키를 시도했지만 실패했으며 암호 프롬프트를 볼 수 없었습니다.
문제는 ssh-add -A필요하지 않더라도 에이전트에 필요한 모든 단일 SSH 키 / 아이덴티티를 임의로 추가 한다는 것입니다. 방랑 상자의 경우와 같이.
많은 테스트 후 내 솔루션은 다음과 같습니다.
먼저, 필요한 것보다 많은 SSH 키 / 아이덴티티를 에이전트에 추가 ssh-add -l한 경우 다음 과 같이 에이전트에서 모두 제거하십시오.
ssh-add -D
그런 다음 SSH 에이전트를 백그라운드 프로세스로 시작하십시오.
eval "$(ssh-agent -s)"
이제 이상 해져서 왜 그런지 잘 모르겠습니다. 경우에 따라 다음 ~/.ssh/id_rsa과 같이 에이전트에 키 / ID를 구체적으로 추가 할 수 있습니다 .
ssh-add ~/.ssh/id_rsa
암호를 입력하고 맞으면 Return가십시오.
그러나 다른 경우에는 단순히 이것을 실행하면 키 / 아이덴티티를 추가하기에 충분합니다.
ssh-add -K
모두 제대로 작동하면 입력하고 ssh-add -l하나의 고독한 SSH 키 / 아이덴티티가 표시되어야합니다.
문제 없다? 이제 당신의 .bash_profile:
nano ~/.bash_profile
그리고이 줄을 맨 아래에 추가하십시오. 해당 -A버전이있는 경우 주석을 달거나 버전을 제거하십시오 .
ssh-add -K 2>/dev/null;
이렇게하면 시작 / 재부팅 할 때마다 SSH 키 / 아이덴티티를 SSH 에이전트로 다시로드 할 수 있습니다.
UseKeychain열린 SSH 구성 옵션에 옵션을 추가 ssh-add -A했으며 솔루션도 고려 합니다.macOS Sierra 10.12.2부터 Apple은UseKeychain SSH 구성을위한 구성 옵션 을 추가했습니다 . 을 통해 매뉴얼 페이지를 확인하면 man ssh_config다음 정보가 표시됩니다.
UseKeychain
On macOS, specifies whether the system should search for
passphrases in the user's keychain when attempting to use a par-
ticular key. When the passphrase is provided by the user, this
option also specifies whether the passphrase should be stored
into the keychain once it has been verified to be correct. The
argument must be ``yes'' or ``no''. The default is ``no''.
중 하나를 추가로 애플이 솔루션을보고 아래로 비등하는 ssh-add -A에 .bash_profile 이 열기 레이더 티켓에 설명 된대로 또는 추가 UseKeychain사용자 당에있는 옵션 중 하나 ~/.ssh/config.
ssh-add -K [path to key]있으면 프롬프트가 표시되면 비밀번호를 입력하고 입력하십시오. Keychain은 암호를 저장하고 ssh-add는 그 후에 암호를 얻습니다.
UseKeychain하고 AddKeysToAgent자동으로 추가했습니다. 쉘 스크립팅이 필요하지 않습니다. 10.12.2에 대한 업데이트 된 정보는 아래 @mluisbrown 답변을 참조하십시오.
ssh-add -A당신은 당신의 열쇠는 항상로드 할 할 경우 rc 스크립트에." ¯\_(ツ)_/¯
여기 에 설명 된대로 , macOS 10.12.2 이후 권장되는 방법입니다 .
~/.ssh/config파일에 다음 줄을 추가 하십시오.
Host *
UseKeychain yes
AddKeysToAgent yes명령을 사용하여 ssh-agent에 추가 한 모든 키 ssh-add /path/to/your/private/key/id_rsa는 자동으로 키 체인에 추가되며 재부팅시 자동로드되어야합니다.
다음과 같은 이유로이 답변을 추가하고 있습니다.
IdentityFile ~/.ssh/id_rsa줄 을 추가하라는 메시지가 표시 되지만 키를 자동로드하는 데 해당 옵션이 필요하지 않습니다 (실제로 다른 키를 사용하는 경우 원하지 않는 호스트 섹션의 특정 키를 바인딩합니다) 다른 핫).UseKeychain하지만 ssh-agent재부팅 후 키를 유지하기에는 충분하지 않습니다 .ssh-add -L보고 The agent has no identities합니다. 연결하기 전까지는 아무것도 없습니다. 은 AddKeysToAgent어떤 방식으로 재부팅 사이의 키를 유지하지 않습니다!
도움이 될만한 이 주제에 대한 간단한 게시물을 작성 했습니다 .
솔루션은 ssh-add -A모든 시작시 명령을 호출 합니다.
그냥 추가 .plist경로에 다음과 같은 내용으로 파일 ~/Library/LaunchAgents/이나 하나 만들 Lingon의 응용 프로그램을 :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>ssh-add-a</string>
<key>ProgramArguments</key>
<array>
<string>ssh-add</string>
<string>-A</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
<!-- @@@@LingonWhatStart:ssh-add -A@@@@LingonWhatEnd -->
macOS 10.12.2부터는 UseKeychain옵션을 사용할 수 있습니다 .
자세한 내용은 여기 읽기 또는 조사 man ssh_config.
UseKeychain
On macOS, specifies whether the system should search for passphrases in the user's keychain
when attempting to use a particular key. When the passphrase is provided by the user, this
option also specifies whether the passphrase should be stored into the keychain once it has
been verified to be correct. The argument must be ``yes'' or ``no''. The default is ``no''.
따라서 다음을 수행하십시오.
echo "UseKeychain yes" >> ~/.ssh/config
나는 전에이 문제가 있었고 이것을 우회 할 수있는 방법을 찾았습니다. 난 그냥라는 파일을 만들어 config내에서 ~/.ssh나는 다음과 같은 라인을 추가 한 폴더를 :
Host github.com
HostName github.com
IdentityFile ~/.ssh/github
IdentitiesOnly yes
그 이유를 잘 모르겠지만, Host그리고 HostName둘 다 중요하다. 제 경우에는 그들 중 하나가 존재하지 않으면 해결책이 작동하지 않았습니다.
그런 다음 방금 시작했는데 ssh-add -K다시 시작한 후에도 작동했습니다.
다른 버전의 ssh (예 : homebrew를 통해 설치)를 사용하는 경우 위의 솔루션이 기본적으로 작동하지 않습니다. 예를 들어, AddKeysToAgent yes및 UseKeychain yes에 .ssh/config파일이 아닌 애플 SSH 버전 인식되지 않고 오류가 발생합니다. 클라이언트 의 -A또는 -K옵션 과 동일합니다 ssh.
@mluisbrown 의 답변이 전혀 작동하지 않음을 의미 합니다. @JakeGould 의 답변 1 방법을 사용하고 macOS ssh-add유틸리티를 명시 적으로 사용하여 .bash_profile키 체인에 모든 키를 추가하십시오.
/usr/bin/ssh-add -A
위 의 주석에서 언급했듯이 먼저 키 체인에 키를 추가해야 할 수도 있습니다. 예 :/usr/bin/ssh-add -K .ssh/github
$ ssh-add -K제공ssh-add: illegal option -- K