현재 실행 중인 ssh-agent에 연결

현재 실행 중인 ssh-agent에 연결

에이전트가 생성되면 상위 프로세스에서 자동으로 분리됩니다.

someUser@MyPC:~$ eval "$(ssh-agent -s)"
Agent pid 10222
someUser@MyPC:~$ ps -e --forest | grep ssh-agent
  10222 ?        00:00:00 ssh-agent

다른 에이전트를 생성하기 위해 터미널을 닫고 새 터미널을 열면 이제 두 개의 에이전트가 실행되고 있습니다.

someUser@MyPC:~$ eval "$(ssh-agent -s)"
Agent pid 10503
someUser@MyPC:~$ ps -e --forest | grep ssh-agent
  10222 ?        00:00:00 ssh-agent
  10503 ?        00:00:00 ssh-agent

일부 제어 터미널이 닫히거나 종료되지 않는 한 기존 ssh-agent에 연결할 수 있는 명령이 있습니까?

답변1

시작하면 ssh-agent두 가지 환경 변수가 제공됩니다: SSH_AUTH_SOCKSSH_AGENT_PID. 그렇기 때문에 eval "$(...)"에이전트를 시작하려면 명령이 필요합니다. 에이전트는 변수를 설정하기 위한 셸 명령을 출력하고 eval해당 명령이 현재 셸 세션에서 실행되도록 합니다.

기존 프록시에 연결하려면 SSH_AUTH_SOCK기존 프록시의 소켓을 가리키도록 환경 변수를 설정합니다. 다른 터미널이 해당 파일을 가져올 수 있도록 시작 후 변수와 해당 값을 파일로 출력하면 됩니다.

예를 들어:

eval "$(ssh-agent -s)"
echo "SSH_AUTH_SOCK=$SSH_AUTH_SOCK" > ~/.ssh_auth_sock_info

그런 다음 다른 터미널에서 프록시 연결 정보를 가져옵니다.

. ~/.ssh_auth_sock_info

다시 말하지만, 이 SSH_AGENT_PID변수에는 에이전트의 PID가 포함되므로 로그아웃 스크립트 등에서 이를 사용하여 에이전트를 종료할 수 있습니다.

프록시 PID를 알고 있지만 소켓 경로를 모르는 경우 이를 사용하여 소켓을 찾을 수 있으며 lsof이를 사용하는 데 필요한 권한이 있습니다. 예를 들어 실행 중에 sudo lsof -p 10222첫 번째 SSH 에이전트에 대해 열린 파일과 소켓이 표시됩니다. 일반적으로 파일 설명자 #3은 프록시 소켓입니다.

관련 정보