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
man
10.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