매번 원격 서버에 접속할 때마다 긴 비밀번호를 입력하느라 번거로웠던 경험 있으시죠. 보안을 유지하면서도 매번 타이핑하는 수고를 덜 수 있는 가장 효율적인 방법이 바로 공개키 인증 방식입니다.

SSH가 무엇인지 궁금하다면
보통 원격 서버에 접속할 때 비밀번호를 사용하지만, 이는 네트워크를 통해 암호화되어 전송되더라도 무차별 대입 공격에 취약할 수 있습니다. SSH는 원격 컴퓨터에 안전하게 로그인하기 위한 프로토콜로, 암호화된 통신을 통해 데이터 유출을 방지합니다. 이때 비밀번호 대신 암호화된 쌍을 이루는 키를 사용하면 보안성은 훨씬 높아지고 접속 과정은 간소화됩니다.
ssh-keygen으로 나만의 키 쌍 만들기
가장 먼저 본인의 로컬 컴퓨터에서 키 쌍을 생성해야 합니다. 키 쌍은 공개키와 개인키로 나뉘는데, 공개키는 서버에 전달하고 개인키는 내 컴퓨터에 안전하게 보관합니다. 터미널을 열고 다음 명령어를 입력하면 됩니다.
- 터미널에 ssh-keygen 입력
- 저장 경로와 암호 설정 단계 확인
- idrsa와 idrsa.pub 파일 생성 확인

ssh-copy-id를 활용한 복사 방법
키 생성이 완료되었다면, 이제 공개키를 원격 서버로 전달할 차례입니다. 일일이 파일을 열어 복사하고 붙여넣을 필요 없이, ssh-copy-id 명령어를 사용하면 됩니다. 이 도구는 자동으로 서버의 authorized_keys 파일에 공개키를 추가해 줍니다.
- 명령어 입력: ssh-copy-id 사용자명@서버주소
- 서버 비밀번호 입력 후 완료
- 이후부터는 별도 비밀번호 없이 접속 가능
known_hosts 파일이 관리하는 목록
known_hosts 파일은 SSH 접속 시 서버의 신원을 검증하기 위한 신뢰할 수 있는 서버 목록을 관리합니다. 이 파일이 있기에 클라이언트는 자신이 의도한 서버에 실제로 연결되었는지 확인할 수 있고, 공격자가 중간에서 트래픽을 가로채는 중간자 공격(MITM)을 방어할 수 있습니다.
원격 서버에 처음 접속할 때 서버의 지문이 맞는지 확인하는 절차를 거치게 됩니다. 이때 승인한 서버의 정보는 로컬 컴퓨터의 known_hosts 파일에 기록됩니다. 만약 서버를 재설치하거나 IP가 변경되면 이 파일 때문에 접속이 거부될 수 있는데, 이때는 해당 항목을 삭제하고 다시 등록하면 해결됩니다.

~/.ssh/config 파일로 SSH 접속을 간편하게 관리
~/.ssh/config 파일을 활용하면 자주 접속하는 서버의 호스트명, 사용자명, 포트, 키 파일 경로 등을 미리 저장해둘 수 있습니다. 설정을 마치면 ssh user@192.168.0.1 -p 2222 -i ~/.ssh/mykey 같은 긴 명령어 대신 ssh myserver처럼 짧은 별칭만으로 접속할 수 있어 편리합니다. 여러 서버를 관리할수록 그 효과가 커집니다.
Host myserver
HostName 192.168.0.1
User user
Port 2222
IdentityFile ~/.ssh/mykey
왜 비밀번호 대신 키를 써야 할까
비밀번호는 기억하기 어렵거나 유출될 위험이 있지만, SSH 키는 매우 긴 무작위 문자열로 되어 있어 사실상 해독이 불가능합니다. 또한 접속 시마다 비밀번호를 입력하는 과정을 생략할 수 있어 업무 흐름이 끊기지 않습니다. 한 번 세팅해두면 개발이나 서버 관리의 생산성이 크게 올라갑니다.
접속이 안 될 때 점검하는 법
키를 설정했음에도 접속이 원활하지 않다면 몇 가지를 살펴봐야 합니다. 가장 흔한 실수는 파일 권한 문제인데, 서버의 .ssh 폴더는 700, authorized_keys 파일은 600 권한으로 설정되어 있어야 작동합니다. 또한 개인키가 로컬 컴퓨터의 ~/.ssh 디렉토리에 정확히 존재하는지 확인하는 것도 필수입니다.

마무리하며
SSH를 통해 더 안전하고 편리한 원격 접속 환경을 구축해 보세요. 처음에는 낯설게 느껴질 수 있지만, 한번 설정해두면 매일 접속하는 서버와의 거리가 훨씬 가깝게 느껴질 겁니다. 보안과 편의성이라는 두 마리 토끼를 모두 잡는 이 과정을 지금 바로 시작해 보시길 권장합니다.