나는 그것이 ssh-add
"프론트 엔드"라는 것을 알고 있습니다 ssh-agent
.
하지만 ssh-agent
내 컴퓨터에서는 이미 실행 중입니다(에서 찾을 수 있습니다 top
). 입력하면 ssh-add
"인증 프록시에 대한 연결을 열 수 없습니다"라는 메시지가 나타납니다.
어떻게 자세하게 의사소통을 할 수 있나요 ssh-add
?ssh-agent
내 상황은
#! /bin/sh
# hello.sh
eval $(ssh-agent -s)
ssh-add
그 다음에,
bash ./hello.sh
내가 입력하는 동안
ssh-add some-new-key
터미널에서는
이 오류 메시지가 출력됩니다.
답변1
출력은 일부 ssh-agent -s
환경 변수 할당입니다. SSH_AUTH_SOCK=blahblah; export SSH_AUTH_SOCK
이를 실행하면 eval $(ssh-agent -s)
셸은 이를 코드로 실행하고 이러한 변수는 셸에 설정됩니다. 여기에 있는 변수에는 ssh-add
에이전트에 연결하는 데 필요한 정보가 포함되어 있으며 셸에서 프로세스로 상속됩니다 ssh-add
.
하지만 여기에서는 hello.sh
. 스크립트를 실행하는 셸은 에서 시작된 상위 수준 대화형 셸과 별도의 프로세스 hello.sh
이며 변수는 "상위"로 상속되지 않습니다.
source hello.sh
대신 을 사용하거나 스크립트를 . hello.sh
얻으면같은 껍질, 변수가 올바르게 할당되었습니다.
그러나 여러 셸(여러 터미널 에뮬레이터, SSH 세션, screen/tmux 창 등)을 실행하는 경우 실제로는 하나만 필요합니다 ssh-agent
. 변수 할당을 일부 파일에 저장한 다음 .bashrc
. 하지만 정확히 무엇을 하고 있는지는 모르겠습니다.