PKA 기반 ssh 환경에서 passphrase를 묻지 않도록 설정하기

Problem

보통 편의성과 보안성 모두를 위해 ssh는 PKA(Public Key Authentication) 기반으로 운영하는 경우가 많습니다. 특히나 AWS, Azure, GCP 등의 퍼블릭 클라우드 서비스들은 외부에 22 와 같은 ssh 포트를 오픈해야하는 필요성이 있기 때문에(ACL이 있던 없던) 당연히 PKA를 기본 인증 체제로 사용합니다. (패스워드는 되도록이면 사용하지 말라고 가이드하고 있죠.)

저의 일부 분석 환경은 퍼블릭 클라우드 서비스 중 하나인 digitalocean에 구축되어 있습니다. 간혹 여러 도구들을 이용하여 스캐닝 시 ssh 연결을 여러번 붙어야하는 경우가 있는데, 이 때 매번 passphrase를 요구하고 있어 은근히 불편합니다 😭

ssh user@host
Enter passphrase for key '/Users/your_username/.ssh/id_rsa':

ssh 접근이 여러번 일어나는 경우 굉장히 번거로워집니다.

사실 ssh를 직접 붙어서 쓰는거라면 그냥 매번 passphrase를 입력해주는 것도 좋지만, 때로는 불편하기 때문에 passphrase를 묻지 않았으면 하는 바램도 있습니다. 다만 passphrase 값은 PKA에서 필수적으로 쓰이는 값이기 때문에 입력 과정을 건너띌 순 없겠지요.

Solution

다만 ssh-agent를 통해 미리 passphrase 값을 등록해두고 재사용하도록 하여서 해결하는 방법이 있습니다. 우선 ssh-agent가 실행되지 않았을 경우도 있으니 실행합니다.

ssh-agent -s

PKA 기반의 ssh를 구성할 때 만든 키를 ssh-add로 agent에 등록해줍니다.

ssh-add ~/.ssh/id_rsa

-l 옵션을 통해 확인하면

ssh-add -l
3072 SHA256:FCo4hf.....snip....MacBookPro.local (RSA)

이제부터 ssh 접근 시 id_rsa 키를 이용하는 경우 passphrase를 묻지 않고 바로 접근하게 됩니다.

Yeah 😘