로그아웃 시 ssh-agent를 종료해야 하는 이유는 무엇입니까?

로그아웃 시 ssh-agent를 종료해야 하는 이유는 무엇입니까?

저는 macOS 노트북과 연중무휴로 실행되는 서버에 ssh-agent를 설정했습니다. 로그아웃할 때마다 ssh-agent를 종료해야 하는 이유는 무엇입니까?

ssh-agent에 대한 나의 지식의 출처:https://kb.iu.edu/d/aeww

eval `ssh-agent`    # Start ssh-agent
echo $SSH_AGENT_PID    # 20552 (Check ssh-agent is running)
ssh-add    # Add id_rsa key to ssh-agent
kill $SSH_AGENT_PID    # Kill ssh-agent on logout

이 마지막 단계가 필요한 이유는 무엇입니까?

ssh-agent프로세스를 종료하는 방법

실행 중인 모든 shh-agent 프로세스를 찾는 가장 쉬운 방법

ps ax | grep ssh-agent    # outputs details of processes

또는

pgrep ssh-agent    # outputs list of PIDs only

실행 중인 모든 ssh-agent 프로세스를 종료하는 가장 쉬운 방법

pkill ssh-agent

답변1

에이전트를 수동으로 종료하지 않으면 에이전트는 시스템에 남아 있습니다.

일반적으로 어수선한 것 외에도 두 가지 잠재적인 문제가 있습니다.

  1. Kusanalanda가 지적했듯이 이는 ssh-agent로그인할 때마다 다른 프로세스를 생성하여 프로세스 테이블이 약간 엉성해짐을 의미합니다.

  2. 더 심각한 것은 모든 프로세스에 귀하의터놓다메모리에 있는 개인 키입니다. 공격자가 시스템에 액세스하여 ssh-agent커널 메모리 관리 또는 코드 자체의 버그(가설, 현재는 전혀 알지 못함)를 악용하여 잠재적으로 개인 키를 추출하려는 경우.

물론 마지막 가능성은 낮지만 프로세스를 종료하고 위험을 완전히 제거하는 것도 마찬가지로 쉽습니다.

죄송합니다보다 더 안전.

답변2

당신은하지 않습니다가지다도착하다. 그러나 적어도 에이전트 메모리에 잠금 해제된 키가 없고 너무 많은 에이전트를 남겨두지 않는지 확인하고 싶을 것입니다.

이렇게 하려면 다음을 수행할 수 있습니다.

  • ssh-agent -t 1800제한된 시간( 30분 제한 시간으로 시작하거나 ssh-add -t 1800키를 추가할 때) 동안만 키를 메모리에 보관하도록 에이전트에 지시합니다.
  • 로그아웃할 때 에이전트가 모든 키를 삭제하도록 합니다( ssh-add -D로그아웃 스크립트에서).
  • 로그인 시 에이전트가 이미 실행 중인지 확인하고 새 에이전트를 시작하는 대신 해당 에이전트를 사용하세요. 이를 수행하는 한 가지 방법이 있습니다.
# .bashrc
start_ssh_agent() {
        if [ -e ~/.agent ]; then
                . ~/.agent
        fi
        ssh-add -l > /dev/null 2>&1
        if [ "$?" = "2" ] ; then
                # agent not running, start it
                ssh-agent -t 3600 |grep -v ^echo > ~/.agent
                . ~/.agent
                echo "Started SSH agent with PID $SSH_AGENT_PID"
        fi
}
start_ssh_agent

물론 다른 방법도 있습니다. 특히 프록시 소켓에 대한 고정 경로를 사용할 수 있습니다. 예를 들어 참조하십시오.모든 터미널에서 ssh-agent를 작동시키는 방법은 무엇입니까?

반면에 누군가가 SSH 에이전트로부터 키를 얻을 수 있다면(즉, 프로세스의 프로그램 메모리를 읽을 수 있다면) 다른 작업도 수행할 수 있을 것입니다. 시간 초과를 비활성화하기 위해 설정을 변경하거나 ssh-add키와 비밀번호의 복사본을 보내는 수정된 프로그램을 설치하는 등의 작업이 가능합니다 .

관련 정보