컴퓨터를 다시 시작하는 동안 SSH 에이전트에서 ID가 손실 됨


12

id_rsa기본 위치에 이름 을 가진 키를 만든 후 command를 사용하여 SSH 에이전트에 ID를 ssh-add ~/.ssh/id_rsa추가하고 있습니다. 성공적으로 추가 중입니다.

SSH 에이전트와 함께 이미 암호 문구를 입력하지 않고 SSH를 사용할 수 있습니다.

그러나 컴퓨터 또는 서버를 다시 시작한 다음 명령으로 ID를 확인하면 ssh-add -L메시지가 나타납니다 The agent has no identities.

컴퓨터를 다시 시작할 때 에이전트가 ID를 잃어 버렸습니까? 이 정상적인 행동입니까 아니면 내가 여기서 놓친 것입니까?

SSH에 익숙하지 않습니다.


Unix & Linux 사이트 에서이 스레드 를 참조하십시오 .
janosdivenyi

답변:


12

정상입니다. 키 에이전트의 목적은 해독 된 키 를 메모리 에 보관하는 것이지만 디스크에는 쓰지 않습니다. (이것은 목적을 무너 뜨릴 것입니다. 왜 대신 기본 키를 보호 해제하지 않겠습니까?)

따라서 로그인 할 때마다 키를 잠금 해제해야하며이를 자동화해야합니다. Linux pam_ssh에서는 하나의 옵션을 사용합니다. 에이전트의 잠금을 해제하기 위해 자동으로 OS 비밀번호사용합니다 . 또 다른 유사한 모듈은 pam_envoy약간 더 안정적인 afaik이지만 systemd가 필요합니다.

두 모듈 모두 에이전트 자체를 시작하고 키를 자동으로로드합니다.


Mac OSX 터미널에서 자동화하는 방법에 대한 아이디어가 있습니까?
Niks

명령을 실행할 때 $SSH_AUTH_SOCK 다음 -bash: /tmp/ssh-gT43vE99vk/agent.511과 같은 결과가 나타납니다.
Niks

이것은 명령으로 사용하기위한 것이 아니라 다른 명령의 일부로 사용 하는 변수 입니다. 예를 들어 echo $SSH_AUTH_SOCK값을 인쇄합니다.
user1686

이봐 친구 .. 어떤 생각? stackoverflow.com/questions/31916395/…
Niks

2

~ / .bashrc 에 이것을 시도하십시오 :

if [ ! -S ~/.ssh/id_rsa ]; then
  eval `ssh-agent`
  ln -sf "$SSH_AUTH_SOCK" ~/.ssh/id_rsa
  ssh-add
fi
export SSH_AUTH_SOCK=~/.ssh/id_rsa

로그인하면 비밀번호를 묻는 메시지 만 표시됩니다.


답장을 보내 주셔서 감사합니다. SSH 에이전트가 제대로 작동하고 있음을 의미합니다. 그리고 이것을 추가 한 후에는 기계를 시작할 때마다 ID를 추가 할 필요가 없습니까? 이것이 바보 같은 질문이라면 죄송하지만 ssh를 처음 접했습니다.
Niks

ssh 키에 비밀번호가 있으면 로그인 할 때마다 프롬프트가 표시됩니다.
시로

이 답변은 해 롭습니다 . 말한대로하면 개인 키 가 삭제 됩니다. 인증 할 다른 방법이 없으면 공개 키 인증을 사용하고있는 시스템에 액세스 할 수 없게됩니다.
kasperd

2

OS X에서 ssh-add에는 개인 키를 저장하기로 결정한 경우 Keychain에 연결하는 특수 플래그가 있습니다.

그냥 실행하십시오 ssh-add -K ~/.ssh/id_rsa.

나는 이것이 당신의 질문에 더 완전하게 대답한다고 생각합니다. 이 OS X 전용 플래그는 문서를 찾기가 어렵지만 OS X Leopard 이상부터 작동했습니다.


2
이것은 정답이며, ssh-add -A키 체인에 모든 키를 추가 할 것입니다. 또한,도를 작성 ~/.ssh/config하고 추가 UseKeychain yes맥 OS 항상 키를 보존 할 수 있도록 여기에 설명 된대로 : unix.stackexchange.com/questions/140075/...
lucasarruda

이 작업을 시도한 후에도 재부팅해도 MacBook이 여전히 내 신분을 잊어 버립니다.
Dominic Sayers 2018 년

0

이 솔루션은 ssh 키가 암호로 보호 된 경우에 유용합니다.

위의 모든 답변의 문제는 개인 키가 암호로 보호되어 있으면 새 터미널을 시작하고 개인 키를 사용하려고 할 때마다 암호를 입력해야하며 암호의 여러 사본을 실행하게 ssh-agent됩니다. 기억. 해결책은 ~/.bashrc또는에 다음을 추가하는 것입니다 ~/.zshrc.

##### START Fix for ssh-agent #####
# Ref: http://mah.everybody.org/docs/ssh

SSH_ENV="$HOME/.ssh/environment"

function start_agent {
     echo "Initialising new SSH agent..."
     /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
     echo succeeded
     chmod 600 "${SSH_ENV}"
     . "${SSH_ENV}" > /dev/null
     /usr/bin/ssh-add;
}

# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
     . "${SSH_ENV}" > /dev/null
     #ps ${SSH_AGENT_PID} doesn't work under cywgin
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
     }
else
     start_agent;
fi
##### END Fix for ssh-agent #####

이것은 터미널을 시작할 때 한 번만 ssh 개인 키의 암호를 묻습니다. 이후에 새로운 터미널 세션 (또는 tmux 참조)을 열면 위의 코드 조각으로 생성 된 ssh-agent가 재사용됩니다.

참고

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.