사이버 보안을 중시한다면 SSH 키를 활용하여 원격 로그인에 접근하는 것이 좋습니다. 이는 비밀번호보다 훨씬 안전한 접속 방식입니다. Linux 환경에서 SSH 키를 생성하고 설치하여 사용하는 방법을 소개합니다.
비밀번호의 한계점
SSH(Secure Shell)는 암호화된 통신 프로토콜로, 원격의 Linux 또는 Unix 계열 시스템에 사용자의 계정으로 로그인할 때 주로 사용됩니다. 일반적으로 이러한 계정들은 비밀번호로 보호됩니다. 원격 컴퓨터에 접속할 때, 해당 계정의 사용자 이름과 비밀번호를 입력해야 합니다.
비밀번호는 컴퓨팅 자원에 대한 접근을 보호하는 데 가장 보편적으로 사용되는 수단입니다. 그러나 비밀번호 기반 보안에는 여러 가지 약점이 있습니다. 사용자들은 종종 추측하기 쉬운 비밀번호를 사용하거나, 비밀번호를 다른 사람과 공유하거나, 여러 시스템에서 동일한 비밀번호를 재사용하는 경향이 있습니다.
SSH 키는 이러한 단점을 보완하여 보안성을 크게 향상시키며, 설정 후에는 비밀번호만큼 편리하게 사용할 수 있습니다.
SSH 키의 안전성
SSH 키는 한 쌍으로 생성되어 사용됩니다. 이 두 키는 서로 연결되어 있으며 암호학적으로 안전합니다. 하나는 공개 키이고 다른 하나는 개인 키입니다. 이 키들은 사용자 계정에 연결되어 있으며, 한 컴퓨터 내에서 여러 사용자가 SSH 키를 사용할 경우 각자 고유한 키 쌍을 가지게 됩니다.
개인 키는 일반적으로 사용자의 홈 폴더에 저장되며, 공개 키는 접근하고자 하는 원격 컴퓨터에 설치됩니다.
개인 키는 철저히 보호해야 합니다. 만약 다른 사람이 개인 키에 접근할 수 있다면, 이는 다른 사람이 귀하의 비밀번호를 알아낸 것과 같은 상황이 됩니다. 개인 키에 강력한 암호를 설정하는 것이 합리적이며 적극적으로 권장됩니다.
공개 키는 보안에 영향을 주지 않으면서 자유롭게 공유할 수 있습니다. 공개 키만으로는 개인 키를 추론하는 것이 불가능합니다. 개인 키는 개인 키만이 해독할 수 있는 방식으로 메시지를 암호화할 수 있습니다.
연결 요청이 발생하면 원격 컴퓨터는 해당 공개 키의 복사본을 사용하여 암호화된 메시지를 생성합니다. 이 메시지에는 세션 ID와 같은 메타데이터가 포함되어 있습니다. 개인 키를 소유한 컴퓨터만이 이 메시지를 해독할 수 있습니다.
컴퓨터는 개인 키를 사용하여 메시지를 해독하고, 해독된 메시지를 기반으로 또 다른 암호화된 메시지를 원격 컴퓨터로 전송합니다. 이 메시지에는 원격 컴퓨터로부터 받은 세션 ID가 포함되어 있습니다.
원격 컴퓨터는 이제 연결을 시도하는 컴퓨터가 올바른 개인 키를 가지고 있다는 것을 알게 됩니다. 이는 해당 컴퓨터만이 세션 ID를 추출하여 회신할 수 있기 때문입니다.
원격 컴퓨터 접속 가능성 확인
SSH 키 설정을 시작하기 전에, 원격 컴퓨터에 정상적으로 연결하고 로그인할 수 있는지 확인해야 합니다. 이는 사용자 이름과 비밀번호가 정확하고, 원격 컴퓨터에 유효한 계정이 설정되어 있음을 검증하는 단계입니다.
SSH 키를 사용하기 전에, 먼저 비밀번호를 사용하여 원격 컴퓨터에 연결할 수 있는지를 확인하는 것이 중요합니다.
예를 들어, ‘dave’라는 사용자 계정을 가진 사용자가 ‘wdzwdz’라는 컴퓨터에서 ‘Sulaco’라는 다른 컴퓨터에 연결하려고 합니다.
다음 명령어를 입력합니다.
ssh [email protected]
비밀번호를 입력하라는 메시지가 표시되면 입력하고 Sulaco에 연결합니다. 프롬프트가 변경되어 연결되었음을 확인할 수 있습니다.
연결 확인이 완료되면 ‘dave’ 사용자는 ‘exit’ 명령어를 사용하여 Sulaco에서 연결을 종료할 수 있습니다.
exit
연결이 끊어졌다는 메시지와 함께 프롬프트가 ‘dave@wdzwdz’로 돌아옵니다.
SSH 키 쌍 생성
이 지침은 Ubuntu, Fedora, Manjaro Linux 배포판에서 테스트되었습니다. 이 모든 환경에서 동일한 과정으로 진행되었으며, 추가적인 소프트웨어 설치가 필요하지 않았습니다.
SSH 키를 생성하려면 다음 명령어를 입력합니다.
ssh-keygen
키 생성 프로세스가 시작됩니다. SSH 키를 저장할 위치를 묻는 메시지가 나타나면 Enter 키를 눌러 기본 위치를 사용합니다. 이 폴더에 대한 권한은 사용자만 사용할 수 있도록 설정됩니다.
이제 키에 대한 암호를 입력해야 합니다. 강력한 암호를 설정하는 것이 좋습니다. 입력한 암호를 반드시 기억해야 합니다! 암호 없이 키를 생성할 수도 있지만 좋은 생각은 아닙니다. 여러 개의 단어를 조합하여 만든 암호는 매우 강력한 보안을 제공할 수 있습니다.
입력한 암호를 다시 한 번 확인하기 위해 동일한 암호를 다시 입력하라는 메시지가 표시됩니다.
SSH 키가 생성되고 저장됩니다.
표시되는 “randomart”는 무시해도 됩니다. 일부 원격 컴퓨터는 연결할 때마다 임의의 아트를 표시할 수 있습니다. 이러한 임의의 아트가 변경되면 연결을 의심해야 합니다. 이는 해당 서버의 SSH 키가 변경되었음을 의미하기 때문입니다.
공개 키 설치
원격 컴퓨터 ‘Sulaco’가 사용자의 공개 키를 인식할 수 있도록 해당 컴퓨터에 공개 키를 설치해야 합니다.
이 작업은 ‘ssh-copy-id’ 명령을 사용하여 수행합니다. 이 명령어는 일반적인 ssh 명령어처럼 원격 컴퓨터에 연결되지만, 로그인하는 대신 공개 SSH 키를 전송합니다.
ssh-copy-id [email protected]
원격 컴퓨터에 로그인하지는 않지만, 키를 전송하기 위한 인증 과정으로 비밀번호를 입력해야 합니다. 이 때 요구되는 비밀번호는 키를 전송하려는 사용자 계정의 비밀번호입니다. 이전에 생성한 SSH 키의 암호가 아닙니다.
비밀번호가 확인되면 ‘ssh-copy-id’ 명령어가 공개 키를 원격 컴퓨터로 전송합니다.
명령 프롬프트로 돌아오며, 원격 컴퓨터에 연결된 상태는 아닙니다.
SSH 키를 이용한 연결
이제 SSH 키를 사용하여 원격 컴퓨터에 연결해 보겠습니다.
ssh [email protected]
개인 키에 접근해야 하며, SSH 키를 암호로 보호했으므로 연결을 진행하려면 암호를 제공해야 합니다.
암호를 입력하고 잠금 해제 버튼을 클릭합니다.
터미널 세션에서 암호를 입력하면 해당 터미널 창이 열려 있는 동안에는 다시 입력할 필요가 없습니다. 원하는 만큼 원격 세션에 연결하고 연결을 끊을 수 있습니다.
“로그인할 때마다 자동으로 이 키 잠금 해제” 옵션을 선택할 수 있지만, 이는 보안을 저해할 수 있습니다. 컴퓨터를 잠금 해제하지 않은 상태로 방치하면 누구나 공개 키가 있는 원격 컴퓨터에 접근할 수 있습니다.
암호를 입력하면 원격 컴퓨터에 연결됩니다.
전체 과정을 다시 확인하기 위해 ‘exit’ 명령으로 연결을 끊고 동일한 터미널 창에서 다시 원격 컴퓨터에 연결해 보겠습니다.
ssh [email protected]
암호나 암호 구문 없이 원격 컴퓨터에 즉시 연결됩니다.
비밀번호 없는 강력한 보안
사이버 보안 전문가들은 ‘보안 마찰’이라는 개념을 자주 언급합니다. 이는 추가적인 보안을 얻기 위해 감수해야 하는 불편함을 의미합니다. 안전한 작업 방식을 채택하려면 보통 몇 가지 추가적인 단계를 거쳐야 하며, 많은 사람들이 이러한 불편함을 싫어합니다. 실제로 대부분의 사람들은 보안 수준이 낮더라도 편리한 방식을 선호합니다. 이것이 인간의 본성입니다.
SSH 키를 사용하면 보안을 강화하면서도 편의성을 높일 수 있습니다. 이는 분명히 모두에게 이득이 되는 방법입니다.