SSH 에이전트 사용

SSH 에이전트 사용

내 데스크탑은 사무실에 있어요. X시작 시 ssh-agent자동으로 시작됩니다. 처음에 한 번만 추가하면 매번 비밀번호를 입력하지 않고도 SSH key사용할 수 있어요 .ssh

SSH그러나 집에서 등을 통해 데스크톱에 연결하면 ssh-agent액세스할 수 없으며 매번 키를 제공해야 합니다. 그리고 새 인스턴스를 시작해도 ssh-agent여전히 연결할 수 없습니다.

ssh-agent원격 시스템에서 이것을 사용할 수 있는 방법이 있습니까 ssh?

답변1

원격 셸에서 다음을 실행하세요.

ssh-agent bash

bash그러면 필요한 환경 변수가 설정된 새 SSH 에이전트 인스턴스와 새 셸이 제공됩니다 . SSH 에이전트는 exit셸을 사용하거나 종료할 때도 종료됩니다.logout

직접 사용하고 있는 장치에 동일한 키가 있는 경우 다음을 ssh -A사용할 수도 있습니다.현지의새로 출시된 에이전트는 액세스할 수 있습니다.원격 쉘. 일부 보안 관련 사항이 있지만 두 장치 모두에서 키를 사용할 수 있으면 별 차이가 없습니다.

기존 프록시에 연결하려면 그래픽 셸에서 설정하는 것과 마찬가지로 관련 환경 변수를 설정해야 합니다. GUI 세션의 자동 시작 기능을 사용하여 변수를 어딘가에 저장하는 것이 편리할 수 있습니다. 를 사용하여 환경 변수를 가져올 수 있습니다 env.

env | grep SSH

프록시에 액세스하려면 기본적으로 프록시에 신호를 보내는 SSH_AUTH_SOCK데만 필요하며 다른 SSH 변수는 도우미 도구용입니다.SSH_AGENT_PID

다른 프로세스의 환경에도 액세스할 수 있습니다 /proc/*/environ. 그러나 이러한 항목은 LF가 아닌 NUL로 끝납니다. 이 경우에는 파일 접근 방식이 더 바람직하다고 생각합니다.

답변2

ForwardAgent yes프록시 전달을 사용할 수 있습니다. 클라이언트 구성( ~/.ssh/config) 에 포함되어 있는지 확인하거나 -A명령줄 옵션을 사용하세요. (이 기능은 서버 측( AllowAgentForwardingin sshd_config)에서 비활성화할 수 있지만 임의의 셸 명령을 실행할 수 없는 제한된 계정에만 유용합니다.) 이렇게 하면 로컬 컴퓨터의 모든 키를 원격 세션에서 사용할 수 있습니다. 클라이언트에서 프록시 전달을 활성화하면 보안에 영향을 미칩니다. 즉, 원격 컴퓨터의 관리자가 키에 액세스할 수 있게 됩니다(예를 들어 A에 있고 B의 키와 C의 키가 있고 B에 연결되어 있는 경우 프록시 전달을 활성화하는 경우). 그러면 B가 C에 로그인할 수 있는 키에 액세스할 수 있습니다.

사무실 컴퓨터의 X 세션에 있는 에이전트를 집의 SSH 세션에서도 사용할 수 있게 하려면 SSH_AUTH_SOCKX 세션에서와 동일한 파일을 가리키도록 환경 변수를 설정해야 합니다. 수동으로 수행하는 것은 쉽습니다.

export SSH_AUTH_SOCK=/tmp/ssh-XXXXXXXXXXXX/agent.12345

여기서 XXXXXXXXXXXX는 임의의 문자열이고 12345는 에이전트 프로세스의 PID입니다. 실행 중인 프록시( )가 있으면 find /tmp -maxdepth 1 -user $USER -name 'ssh-*'이를 쉽게 자동화할 수 있지만 , 프록시가 여러 개인 경우 원하는 프록시를 검색하는 것이 더 복잡합니다.

SSH_AUTH_SOCK실행 중인 프로세스에서 추출할 수 있는 값입니다. 예를 들어 Linux에서 창 관리자가 Metacity(기본 Gnome 창 관리자)인 경우:

env=$(grep -z '^SSH_AUTH_SOCK=' /proc/$(pidof -s metacity)/environ')
if [ -n "$env" ]; then export "$env"; fi

또는 단일 SSH 에이전트를 사용하도록 사무실 컴퓨터를 구성할 수 있습니다. 로그인할 때 에이전트가 자동으로 시작되는 경우 대부분의 배포판에서는 SSH_AUTH_SOCK호출된 변수가 환경에 이미 있으면 에이전트가 시작되지 않습니다. 따라서 또는 SSH_AUTH_SOCK에 정의를 추가 ~/.profile하고 아직 시작되지 않은 경우 수동으로 시작하십시오 ~/.pam_environment.ssh-agent.profile

export SSH_AUTH_SOCK=~/.ssh/$HOSTNAME.agent
if [ -z "$(pgrep -U "$USER" ssh-agent)" ]; then
  ssh-agent >/dev/null
fi

관련 정보