SSH로 서버 접속하는 방법 정리
클라우드 서버나 원격 서버를 관리하려면 SSH를 사용해야 합니다. SSH는 안전하게 원격 서버에 접속해서 명령어를 실행할 수 있게 해주는 필수 도구입니다. 처음 접하면 복잡해 보이지만, 기본 원리와 방법만 익히면 누구나 쉽게 사용할 수 있습니다. 이번 글에서는 SSH가 무엇인지부터 실제 접속 방법, 보안 설정까지 초보자도 따라할 수 있도록 자세히 설명하겠습니다.
SSH란 무엇인가?
SSH(Secure Shell)는 네트워크를 통해 다른 컴퓨터에 안전하게 접속하기 위한 프로토콜입니다. 마치 자신의 컴퓨터 앞에 앉아 있는 것처럼 원격 서버의 터미널을 제어할 수 있습니다.
SSH를 원격 제어 리모컨에 비유할 수 있습니다. 집에서 TV 리모컨으로 TV를 제어하는 것처럼, 여러분의 컴퓨터에서 SSH로 멀리 떨어진 서버를 제어하는 것입니다. 차이점은 리모컨은 적외선을 사용하지만, SSH는 인터넷을 사용한다는 점입니다.
SSH의 가장 큰 특징은 보안성입니다. 이전에 사용되던 Telnet은 모든 데이터를 평문으로 전송해서 중간에 누군가 가로채면 비밀번호까지 다 볼 수 있었습니다. 하지만 SSH는 모든 통신을 암호화하기 때문에, 중간에 누가 가로채도 내용을 알 수 없습니다. 마치 비밀 암호로 대화하는 것과 같습니다.
SSH는 기본적으로 22번 포트를 사용합니다. 서버의 22번 포트가 열려 있어야 SSH로 접속할 수 있습니다. 보안을 강화하기 위해 22번 대신 다른 포트 번호를 사용하도록 변경하는 경우도 많습니다.
SSH 접속에 필요한 것들
SSH로 서버에 접속하려면 몇 가지가 필요합니다.
서버의 IP 주소 또는 도메인이 가장 먼저 필요합니다. 예를 들어 “123.456.789.012” 같은 IP 주소나 “server.example.com” 같은 도메인 주소입니다. 이것은 서버의 위치를 나타내는 주소입니다.
사용자 계정도 필요합니다. 서버에 등록된 사용자 이름입니다. 리눅스 서버에는 보통 ‘root’, ‘ubuntu’, ‘ec2-user’ 같은 기본 계정이 있거나, 직접 생성한 계정을 사용합니다.
인증 방법이 필요합니다. 비밀번호 방식과 SSH 키 방식 두 가지가 있습니다. 비밀번호는 간단하지만 보안에 취약하고, SSH 키는 설정이 복잡하지만 훨씬 안전합니다. 최근에는 대부분 SSH 키 방식을 권장합니다.
SSH 클라이언트 프로그램도 있어야 합니다. 맥과 리눅스는 기본적으로 터미널에 SSH가 설치되어 있습니다. 윈도우 10 이후 버전도 기본 탑재되어 있지만, 그 이전 버전은 PuTTY 같은 별도 프로그램을 설치해야 합니다.
비밀번호 방식으로 SSH 접속하기
가장 기본적인 접속 방법은 비밀번호를 사용하는 것입니다.
맥/리눅스에서는 터미널을 열고 다음과 같이 입력합니다:
ssh 사용자명@서버주소
예를 들어 사용자명이 ‘ubuntu’이고 서버 IP가 ‘123.456.789.012’라면:
ssh ubuntu@123.456.789.012
처음 접속하는 서버라면 “The authenticity of host … can’t be established. Are you sure you want to continue connecting?”이라는 메시지가 나타납니다. 이것은 “이 서버를 신뢰할 수 있는지 확인할 수 없는데 정말 연결하시겠습니까?”라는 뜻입니다. ‘yes’를 입력하면 계속 진행됩니다.
그러면 비밀번호를 입력하라는 메시지가 나타납니다. 비밀번호를 입력할 때는 화면에 아무것도 표시되지 않습니다. *이나 점도 나타나지 않지만 정상이니 그대로 입력하고 엔터를 누르면 됩니다.
접속에 성공하면 터미널 프롬프트가 바뀌면서 “ubuntu@server:~$” 같은 형태로 표시됩니다. 이제 원격 서버에 접속한 상태이며, 입력하는 모든 명령어는 원격 서버에서 실행됩니다.
윈도우에서는 Windows PowerShell이나 명령 프롬프트를 열고 같은 방식으로 입력하면 됩니다. 윈도우 10 이전 버전이라면 PuTTY를 다운로드해서 설치하고, GUI 화면에서 Host Name에 서버 주소를 입력하고 Open 버튼을 클릭하면 됩니다.
SSH 키 방식으로 접속하기
SSH 키 방식은 비밀번호 대신 암호화 키 쌍을 사용합니다. 공개키(Public Key)는 서버에 저장하고, 개인키(Private Key)는 자신의 컴퓨터에 보관합니다. 마치 자물쇠와 열쇠의 관계와 같습니다.
SSH 키 생성부터 시작합니다. 터미널에서 다음 명령어를 입력합니다:
ssh-keygen -t rsa -b 4096
이 명령어는 4096비트 RSA 암호화 방식의 키 쌍을 생성합니다. 엔터를 누르면 키를 저장할 위치를 묻는데, 기본 위치(~/.ssh/id_rsa)를 사용하려면 그냥 엔터를 누르면 됩니다.
다음으로 passphrase(비밀번호)를 설정하라고 합니다. 추가 보안을 위한 것인데, 설정하지 않으려면 엔터를 두 번 누르면 됩니다. 설정하면 SSH 키를 사용할 때마다 이 비밀번호를 입력해야 합니다.
키 생성이 완료되면 ~/.ssh/ 디렉토리에 두 개의 파일이 만들어집니다. id_rsa는 개인키(절대 공유하면 안 됨)이고, id_rsa.pub는 공개키(서버에 등록할 키)입니다.
공개키를 서버에 등록해야 합니다. 가장 쉬운 방법은 ssh-copy-id 명령어를 사용하는 것입니다:
ssh-copy-id ubuntu@123.456.789.012
비밀번호를 한 번 입력하면 공개키가 자동으로 서버의 ~/.ssh/authorized_keys 파일에 추가됩니다.
ssh-copy-id 명령어가 없다면 수동으로 등록할 수도 있습니다. 먼저 공개키 내용을 복사합니다:
cat ~/.ssh/id_rsa.pub
나타나는 내용을 복사한 후, 서버에 비밀번호로 접속해서 다음 명령어를 실행합니다:
mkdir -p ~/.ssh
echo "여기에_복사한_공개키_붙여넣기" >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
이제 SSH 키로 접속할 수 있습니다. 비밀번호 입력 없이 바로 접속됩니다:
ssh ubuntu@123.456.789.012
편리한 SSH 접속 설정
매번 긴 명령어를 입력하는 것은 번거롭습니다. SSH 설정 파일을 만들면 짧은 이름으로 접속할 수 있습니다.
자신의 컴퓨터에서 ~/.ssh/config 파일을 편집합니다:
nano ~/.ssh/config
다음과 같이 설정을 추가합니다:
Host myserver
HostName 123.456.789.012
User ubuntu
Port 22
IdentityFile ~/.ssh/id_rsa
이제 “ssh myserver”라고만 입력하면 서버에 접속됩니다. 여러 서버를 관리한다면 각각 다른 이름으로 설정해두면 매우 편리합니다.
포트 번호를 변경한 서버에 접속할 때는 -p 옵션을 사용합니다:
ssh -p 2222 ubuntu@123.456.789.012
SSH 보안 강화 방법
서버 보안을 위해 몇 가지 설정을 변경하는 것이 좋습니다.
root 직접 접속 금지: 서버의 /etc/ssh/sshd_config 파일에서 “PermitRootLogin no”로 설정하면 root 계정으로 직접 접속할 수 없습니다. 일반 계정으로 접속한 후 sudo 명령어로 관리자 권한을 얻는 것이 더 안전합니다.
비밀번호 인증 비활성화: SSH 키만 사용하도록 설정하려면 “PasswordAuthentication no”로 변경합니다. 이렇게 하면 비밀번호 무차별 대입 공격을 원천 차단할 수 있습니다.
포트 번호 변경: 기본 22번 포트 대신 다른 번호를 사용하면 자동화된 공격을 줄일 수 있습니다. “Port 2222” 같은 식으로 변경합니다.
설정을 변경한 후에는 SSH 서비스를 재시작해야 합니다:
sudo systemctl restart sshd
SSH 접속 종료
작업을 마치고 SSH 접속을 종료하려면 “exit”를 입력하거나 Ctrl+D를 누르면 됩니다. 접속이 끊기고 다시 자신의 컴퓨터 터미널로 돌아옵니다.
문제 해결
“Permission denied” 오류가 나타나면 비밀번호가 틀렸거나, SSH 키 권한이 잘못된 것입니다. 개인키 파일의 권한이 너무 느슨하면 보안상의 이유로 SSH가 사용을 거부합니다. “chmod 600 ~/.ssh/id_rsa”로 권한을 수정하세요.
“Connection refused” 오류는 서버가 SSH 연결을 받지 않는다는 뜻입니다. 서버의 SSH 서비스가 실행 중인지, 방화벽이 22번 포트를 차단하지 않는지 확인해야 합니다.
“Host key verification failed” 오류는 서버의 키가 변경되었을 때 발생합니다. 서버를 재설치했거나 중간자 공격일 수 있습니다. 정상적인 상황이라면 ~/.ssh/known_hosts 파일에서 해당 서버 항목을 삭제하고 다시 접속하면 됩니다.
SSH는 서버 관리의 가장 기본이 되는 도구입니다. 처음에는 낯설지만, 몇 번 실습하면 금방 익숙해질 것입니다. 안전하게 원격 서버를 관리할 수 있는 SSH를 꼭 마스터하세요.
Leave a Reply