Tutoriel Linux

Linux에서 SSH 에이전트를 사용하는 방법: 암호를 다시 입력하지 않고도 키를 함부로 보관하지 않고 안전하게 사용하는 방법

Débutant2 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

암호로 보호된 SSH 키를 사용한다면, 아마도 다음과 같은 문제를 경험해 보셨을 겁니다. 안전하기는 하지만, 접속할 때마다 또는 로그아웃할 때마다 암호를 다시 입력해야 하는 것은 매우 번거롭습니다. 자식 당겨잘못된 해결책은 키에서 암호를 제거하는 것입니다. 많은 경우 가장 좋은 해결책은 다음과 같습니다. ssh-agent.

ssh-agent 이 기능은 세션 동안 잠금 해제 키를 메모리에 저장합니다. 암호를 한 번만 입력하면 에이전트가 SSH 요청에 응답합니다. 편리하지만 두 가지 주의 사항이 있습니다. 어떤 에이전트가 사용되고 있는지 확인해야 하고, 공유 컴퓨터나 관리 서버에서 작업할 때는 사용 시간을 제한해야 합니다.

Tux는 Linux 서버에 연결된 보안 에이전트에서 SSH 키를 보호합니다.
ssh-agent는 암호를 다시 입력할 필요 없이 SSH 키를 안전하게 보호합니다.

ssh-agent가 이미 실행 중인지 확인하십시오.

그래픽 인터페이스를 제공하는 많은 Linux 배포판에서는 SSH 에이전트가 이미 실행 중입니다. 하지만 순수 SSH 환경, 서버 또는 최소 세션에서는 그렇지 않은 경우가 있습니다. 먼저 SSH 도구에서 사용하는 환경 변수를 확인해 보세요.

"$SSH_AUTH_SOCK"에 에코

출력이 비어 있으면 셸이 어떤 에이전트와 통신해야 할지 모르는 것입니다. 이미 로드된 키를 확인할 수도 있습니다.

ssh-add -l

다음과 같은 메시지를 받으면 요원은 신분을 밝히지 않습니다.

세션에서 ssh-agent를 시작하세요

현재 셸에서 에이전트를 실행하려면 다음을 사용하십시오.

"$(ssh-agent -s)"를 평가합니다.

이 명령은 다음을 포함한 필수 변수를 정의합니다. SSH_AUTH_SOCK 그리고 SSH_AGENT_PID. 없이 평가에이전트는 시작되지만 셸이 환경 변수를 제대로 가져오지 못합니다. 너무 서둘러 테스트하면 이런 사소한 문제 때문에 시간이 낭비되는 경우가 있습니다.

바로 다음에 확인하실 수 있습니다.

"$SSH_AUTH_SOCK"에 에코

개인용 컴퓨터에서는 그 정도면 충분한 경우가 많습니다. 하지만 공유 서버에서는 시간 제한 없이 에이전트를 하루 종일 켜두는 것을 피하는 편입니다.

유효기간이 제한된 SSH 키를 추가하세요

표준 USB 드라이브에 데이터를 로드하려면 다음 단계를 따르세요.

ssh-add ~/.ssh/id_ed25519

암호는 한 번만 입력하면 됩니다. 그 후, 이 키를 사용하는 연결은 에이전트를 통해 이루어집니다. 로드된 항목을 확인하려면 다음을 참조하십시오.

ssh-add -l -E sha256

에이전트에서 키의 수명을 제한하려면 다음을 사용하십시오. -티한 시간을 기준으로 한 예시:

ssh-add -t 1h ~/.ssh/id_ed25519

관리자용 워크스테이션에서 제가 선호하는 설정입니다. 에이전트의 편리함은 그대로 유지하면서도, 로그아웃을 잊어버린 경우 키가 영구적으로 저장되지는 ​​않습니다.

암호를 다시 입력하지 않고 연결 테스트하기

키가 로드되면 정상적인 연결을 테스트하십시오.

ssh 사용자@서버

키가 서버와 일치하면 SSH는 암호를 다시 묻지 않습니다. 실패하면 상세 모드(verbose mode)로 다시 시도하십시오.

ssh -v user@server

어떤 키가 제공되는지, 에이전트가 응답하는지, 그리고 연결이 차단된 위치를 확인할 수 있습니다. 문제가 서버 측 SSH 서비스와 관련된 것일 가능성이 더 높다면, 해당 문제에 대한 가이드도 게시했으니 참고하세요. 우분투에서 SSH를 깔끔하게 재시작하세요 그리고 또 다른 SSH가 응답하지 않으면 다시 설치하세요..

에이전트에서 키를 제거하세요

특정 키를 제거하려면:

ssh-add -d ~/.ssh/id_ed25519

로드된 키를 모두 비우려면:

ssh-add -D

에이전트를 수동으로 시작했고 중지하려면 다음 단계를 따르세요.

ssh-agent -k

이 명령들을 키 파일을 삭제하는 명령과 혼동하지 마십시오. ~/.ssh여기서는 에이전트의 메모리에서 키만 제거하는 것입니다.

SSH 에이전트를 전송할 때 주의하십시오.

에이전트 전송은 일반적으로 다음과 같이 활성화됩니다. ssh -A이 기능을 사용하면 원격 시스템이 로컬 에이전트를 이용하여 트래픽을 다른 서버로 전달할 수 있습니다. 일부 환경에서는 유용하지만 기본적으로는 사용하지 않는 것이 좋습니다.

중간 서버가 손상되더라도 개인 키는 복사되지 않지만, 세션이 열려 있는 동안에는 에이전트에 계속 접근할 수 있습니다. 배스천 호스트나 완전히 제어할 수 없는 시스템의 경우, 전용 키 사용, 사용 기간 제한 또는 더욱 엄격한 SSH 구성 설정을 고려하십시오.

작업 내용을 잃지 않고 장시간 세션을 유지하려면, Linux의 화면 이는 서버 측에서 관리자 세션을 유지하는 또 다른 필요성을 해결합니다. 하지만 이는 기존의 방식을 대체하는 것은 아닙니다. ssh-agent하지만 두 도구는 서로를 잘 보완합니다.

내가 고수할 타협안은

몇 초를 절약하려고 SSH 키에서 암호를 제거하지 마세요. 대신 키를 로드하세요. ssh-agent활성화된 키를 확인하세요 ssh-add -l기간을 제한하다 ssh-add -t 컨텍스트가 민감한 경우, 개입이 끝나면 에이전트를 비우십시오.

매뉴얼 페이지 ssh-agent, ssh-add 그리고 SSH 사용 가능한 옵션들을 자세히 설명해 줍니다. 모든 것을 기억할 필요는 없습니다. 중요한 것은 안전한 키를 보관하되, 모든 연결을 번거롭게 만들지 않고도 사용할 수 있는 키를 유지하는 것입니다.

sudo apt update && sudo apt upgrade