SSH 프로토콜을 사용하는 리눅스 서버에 매번 비밀번호를 입력하는 과정은 번거롭고 비효율적입니다. 이 문제를 해결하기 위해 DSA 키 기반 인증을 사용하면 보안성과 편의성을 동시에 확보할 수 있습니다.
본 글에서는 리눅스 환경에서 DSA 키를 생성하고, 해당 공개 키를 원격 서버에 등록하여 비밀번호 없이 자동으로 SSH 접속하는 과정을 상세히 설명합니다.
ssh 자동 로그인 서버에서 주기적인 백업시 많이 사용되는 방법중 한가지 입니다.
ssh 접속시 비밀번호 없이 자동적으로 로그인 되는것을 확인 할수 있습니다
먼저 로컬 시스템에서 DSA 키 쌍을 생성합니다. 다음 명령어를 실행하세요.
ssh-keygen -t dsa
프롬프트에 따라 저장 경로와 암호 구문(passphrase)을 입력하거나 비워둡니다. 기본 경로는 /root/.ssh/id_dsa
입니다.
다음 명령어로 공개 키 파일의 내용을 확인할 수 있습니다.
cat ~/.ssh/id_dsa.pub
이 파일에 담긴 문자열이 원격 서버에 등록할 SSH 공개 키입니다.
공개 키를 전송하려면 다음 명령어를 사용합니다. 192.168.10.189
는 대상 서버의 IP 주소이며, root
는 접속할 사용자입니다.
cat ~/.ssh/id_dsa.pub | ssh root@192.168.10.189 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
최초 접속 시에는 해당 서버의 호스트 키를 수락해야 하며, 비밀번호 인증도 한 번은 필요합니다. 이후에는 비밀번호 없이 접속이 가능해집니다.
원격 서버에서 SSH 키 인증이 제대로 작동하려면 디렉터리 및 파일 권한이 적절해야 합니다.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
루트 사용자 외의 계정에서도 같은 절차가 적용되며, /home/사용자명/.ssh
경로를 사용하면 됩니다.
다음 명령어를 실행하여 비밀번호 없이 자동 로그인되는지 확인합니다.
ssh root@192.168.10.189
비밀번호 입력 없이 원격 시스템의 쉘에 접근할 수 있다면 설정이 정상적으로 완료된 것입니다.
DSA 키는 보안성 측면에서 RSA나 ED25519보다 열등하다는 평가를 받습니다. 일부 최신 시스템에서는 DSA 키 생성이 비활성화되어 있을 수 있습니다. 따라서 DSA 키는 레거시 환경이나 제한된 목적에 한해 사용하며, 보안을 중시하는 경우 다른 알고리즘을 고려하는 것이 바람직합니다.