리눅스 서버를 공부하거나 실제로 운영하다 보면 반드시 접하게 되는 기술이 있습니다. 바로 SSH(Secure Shell)입니다.
처음 리눅스 서버를 접하는 사람에게 SSH는 다소 낯선 용어일 수 있습니다. 하지만 SSH의 기본 개념과 사용 방법을 이해하면 서버 관리가 훨씬 편리해집니다.
일반적인 개인용 컴퓨터는 사용자가 직접 모니터와 키보드를 연결하여 컴퓨터를 조작하는 경우가 많습니다. 하지만 서버는 데이터센터나 별도의 장소에 설치되어 있는 경우가 많기 때문에 서버 앞에 직접 가지 않고 원격으로 관리할 수 있는 기능이 필요합니다.
SSH는 이러한 원격 서버 관리에 널리 사용되는 방법입니다.
이번 글에서는 리눅스 서버 SSH란 무엇인지, SSH를 사용하는 이유와 기본적인 접속 원리, SSH 원격 접속을 위해 알아야 할 개념, 기본 명령어까지 초보자의 관점에서 자세히 알아보겠습니다.
SSH란 무엇인가?
SSH는 Secure Shell의 약자로, 네트워크를 통해 다른 컴퓨터에 안전하게 접속하여 명령을 실행할 수 있도록 해주는 프로토콜입니다.
쉽게 표현하면 내 컴퓨터에서 멀리 떨어져 있는 리눅스 서버를 원격으로 조작할 수 있도록 해주는 기술이라고 생각하면 됩니다.
예를 들어 서버가 다른 장소에 설치되어 있다고 가정해 보겠습니다.
서버를 관리할 때마다 직접 서버가 있는 장소로 이동하는 것은 매우 불편합니다.
SSH를 사용하면 관리자의 컴퓨터에서 서버에 원격으로 접속한 후 터미널을 통해 명령어를 입력할 수 있습니다.
파일을 확인하거나 프로그램을 설치하고, 서버의 상태를 확인하거나 서비스를 재시작하는 등의 작업을 원격으로 수행할 수 있습니다.
이러한 특징 때문에 SSH는 리눅스 서버 관리에서 매우 중요한 기술로 사용됩니다.
리눅스 서버에서 SSH를 사용하는 이유
SSH의 가장 큰 장점은 원격으로 서버를 관리할 수 있다는 점입니다.
서버가 사무실이나 데이터센터에 있더라도 네트워크 연결만 가능하다면 관리자가 자신의 컴퓨터에서 서버에 접속할 수 있습니다.
또한 SSH를 이용한 통신은 암호화된 연결을 사용하기 때문에 일반적인 평문 통신 방식보다 안전하게 원격 관리를 할 수 있습니다.
물론 SSH를 사용한다고 해서 서버가 자동으로 안전해지는 것은 아닙니다.
외부 인터넷에서 SSH 접속을 허용할 경우 계정 관리, 인증 방식, 방화벽, 접근 제어 등 여러 가지 보안 요소를 함께 고려해야 합니다.
따라서 SSH는 편리한 원격 관리 도구인 동시에 적절한 보안 설정이 필요한 서비스라고 이해하는 것이 좋습니다.
SSH 원격 접속을 위해 필요한 것
리눅스 서버에 SSH로 접속하기 위해서는 몇 가지 정보가 필요합니다.
대표적으로 다음과 같은 정보가 있습니다.
- 서버의 IP 주소 또는 호스트 이름
- SSH 접속에 사용할 사용자 계정
- 인증 정보
- SSH 서비스가 실행되고 있는지 여부
- SSH가 사용하는 포트
- 서버와 접속하는 컴퓨터 사이의 네트워크 연결
예를 들어 서버의 주소가 특정 IP이고 사용자 계정이 user라면 일반적인 SSH 접속 형태는 다음과 같은 구조가 됩니다.
ssh user@서버주소
이 명령을 접속할 컴퓨터의 터미널에서 실행하면 서버에 연결을 시도하게 됩니다.
다만 실제 접속 과정에서는 서버의 설정에 따라 비밀번호나 SSH 키 등의 인증 방법이 필요할 수 있습니다.
SSH는 어떻게 작동할까?
SSH 연결 과정을 간단하게 살펴보겠습니다.
먼저 사용자가 자신의 컴퓨터에서 SSH 클라이언트를 실행합니다.
SSH 클라이언트는 접속하려는 서버의 주소를 이용하여 서버와 연결을 시도합니다.
서버에서는 SSH 서버 프로그램이 연결 요청을 기다리고 있습니다.
연결이 이루어지면 서버와 클라이언트 사이에서 인증 과정이 진행됩니다.
사용자가 정상적인 계정과 인증 정보를 가지고 있다면 서버에 로그인할 수 있습니다.
로그인이 완료되면 사용자는 원격 서버의 터미널에서 명령어를 입력할 수 있습니다.
이때 입력하는 명령은 자신의 컴퓨터가 아니라 원격 리눅스 서버에서 실행됩니다.
이 부분을 정확하게 이해하는 것이 중요합니다.
예를 들어 자신의 컴퓨터에서 SSH로 서버에 접속한 뒤 파일 목록을 확인하는 명령어를 실행하면 자신의 컴퓨터에 있는 파일이 아니라 서버에 저장된 파일 목록을 확인하게 됩니다.
SSH 기본 접속 방법
리눅스나 macOS에서는 터미널을 이용해 SSH 접속을 할 수 있습니다.
Windows에서도 최근 운영체제에서는 SSH 클라이언트를 사용할 수 있는 환경이 제공되는 경우가 많습니다.
기본적인 SSH 명령은 다음과 같은 형태입니다.
ssh 사용자이름@서버주소
예를 들어 사용자 이름이 admin이고 서버 주소가 192.168.1.100이라면 다음과 같은 형태로 접속할 수 있습니다.
ssh admin@192.168.1.100
실제 환경에서는 서버의 사용자 이름과 IP 주소에 맞게 변경해야 합니다.
SSH 접속이 정상적으로 이루어지면 서버의 터미널 환경이 나타나고 원격 서버에서 명령어를 실행할 수 있습니다.
SSH 포트란 무엇인가?
SSH를 공부하다 보면 포트(port)라는 개념을 만나게 됩니다.
컴퓨터 한 대에서는 웹 서버, SSH 서버, 데이터베이스 서버 등 여러 네트워크 서비스를 동시에 실행할 수 있습니다.
이때 각각의 네트워크 서비스를 구분하기 위해 포트 번호를 사용합니다.
SSH는 일반적으로 TCP의 22번 포트를 기본 포트로 사용합니다.
하지만 서버 환경에 따라 다른 포트를 사용하도록 설정할 수도 있습니다.
따라서 SSH 접속이 되지 않을 때는 단순히 IP 주소만 확인할 것이 아니라 SSH 서비스가 사용하는 포트와 방화벽 설정도 함께 확인해야 합니다.
다만 SSH 포트 번호를 변경하는 것만으로 서버 보안이 완벽하게 해결되는 것은 아닙니다.
포트 변경은 특정 상황에서 불필요한 자동화된 접근을 줄이는 데 도움이 될 수 있지만, 계정 보안과 인증 방식, 접근 제어 등 다른 보안 설정도 함께 고려해야 합니다.
SSH 비밀번호 인증과 SSH 키 인증
SSH 인증 방식에는 여러 가지가 있지만 초보자가 가장 먼저 접하는 방식은 비밀번호 인증입니다.
사용자 이름과 비밀번호를 입력하여 서버에 로그인하는 방식입니다.
하지만 실제 운영 환경에서는 SSH 키 기반 인증도 많이 사용합니다.
SSH 키 인증은 공개키와 개인키를 이용하여 사용자를 인증하는 방식입니다.
개인키는 사용자의 컴퓨터에 보관하고 공개키는 서버에 등록합니다.
접속할 때 서버는 사용자가 올바른 개인키를 가지고 있는지 확인하여 인증합니다.
SSH 키를 사용할 경우 복잡한 비밀번호를 반복해서 입력하지 않고도 안전하게 서버에 접속할 수 있다는 장점이 있습니다.
다만 개인키는 매우 중요하게 관리해야 합니다.
개인키가 다른 사람에게 노출되면 서버 접근 권한이 침해될 수 있기 때문에 안전한 장소에 보관하고 불필요하게 공유해서는 안 됩니다.
SSH로 접속한 후 자주 사용하는 리눅스 명령어
SSH로 서버에 접속했다고 해서 SSH 전용 명령어만 사용하는 것은 아닙니다.
SSH는 서버에 접속할 수 있도록 해주는 통로이고, 접속한 이후에는 리눅스의 다양한 명령어를 사용할 수 있습니다.
초보자가 자주 사용하는 명령어는 다음과 같습니다.
현재 위치 확인
pwd
현재 작업 중인 디렉터리의 경로를 확인할 수 있습니다.
파일 목록 확인
ls
현재 디렉터리에 있는 파일과 폴더를 확인할 수 있습니다.
디렉터리 이동
cd
다른 디렉터리로 이동할 때 사용합니다.
파일 복사
cp
파일이나 디렉터리를 복사할 때 사용할 수 있습니다.
파일 이동 및 이름 변경
mv
파일을 다른 위치로 이동하거나 이름을 변경할 때 사용합니다.
파일 삭제
rm
파일을 삭제할 때 사용하는 명령어입니다.
관리자 권한으로 실행할 경우 시스템에 중요한 파일까지 삭제할 수 있으므로 사용에 주의해야 합니다.
디스크 사용량 확인
df
파일 시스템의 전체 용량과 사용 가능한 공간 등을 확인할 때 활용할 수 있습니다.
프로세스 확인
ps
현재 실행 중인 프로세스를 확인할 때 사용할 수 있습니다.
이러한 기본 명령어를 익히면 SSH를 통해 접속한 리눅스 서버를 보다 효율적으로 관리할 수 있습니다.
SSH 접속이 되지 않을 때 확인할 사항
SSH를 처음 공부하다 보면 접속 과정에서 오류가 발생할 수 있습니다.
이때 무작정 설정을 변경하기보다 원인을 하나씩 확인하는 것이 중요합니다.
먼저 서버의 IP 주소가 정확한지 확인합니다.
그다음 서버가 네트워크에 정상적으로 연결되어 있는지 확인합니다.
SSH 서버 프로그램이 실행 중인지 확인하고, SSH가 사용하는 포트가 올바르게 설정되어 있는지도 확인해야 합니다.
또한 서버의 방화벽에서 해당 포트에 대한 연결을 차단하고 있지 않은지도 확인해야 합니다.
마지막으로 사용자 이름이나 인증 정보가 올바른지도 확인합니다.
SSH 연결 문제는 크게 네트워크 문제, 서버 서비스 문제, 방화벽 문제, 인증 문제 등으로 나누어 생각하면 원인을 찾기가 쉬워집니다.
리눅스 서버 SSH 보안에서 주의할 점
SSH를 인터넷에 공개하여 사용한다면 보안 관리가 중요합니다.
첫째, 사용하지 않는 계정이나 불필요한 접근 권한을 정리하는 것이 좋습니다.
둘째, 운영체제와 SSH 관련 소프트웨어를 적절하게 업데이트해야 합니다.
셋째, 방화벽을 이용하여 필요하지 않은 네트워크 접근을 제한하는 것이 좋습니다.
넷째, 가능하다면 SSH 키 인증 등 적절한 인증 방식을 사용하는 것을 고려할 수 있습니다.
다섯째, 서버의 로그인 기록과 관련 로그를 주기적으로 확인하는 것이 좋습니다.
특히 인터넷에 공개된 서버에서는 반복적인 로그인 시도가 발생할 수 있기 때문에 이상한 접근이 없는지 확인하는 습관을 들이는 것이 좋습니다.
SSH를 처음 공부하는 사람에게 추천하는 실습 방법
SSH를 처음 접한다면 실제 운영 서버에서 바로 실습하기보다는 별도의 테스트 환경을 만드는 것이 좋습니다.
가상 머신에 리눅스 서버를 설치한 다음 SSH 서비스를 구성하고 자신의 PC에서 원격 접속을 시도해 보는 방법이 대표적입니다.
처음에는 같은 내부 네트워크에서 접속해 보는 것부터 시작합니다.
SSH 접속에 성공했다면 파일과 디렉터리를 이동하고 간단한 명령어를 실행해 봅니다.
그 다음 사용자 계정을 추가하고 권한을 변경하거나 SSH 키 인증을 설정해 볼 수 있습니다.
이러한 과정을 반복하면 단순히 SSH 명령어 하나를 외우는 것보다 서버와 클라이언트가 어떻게 연결되는지를 훨씬 쉽게 이해할 수 있습니다.
마무리
SSH는 리눅스 서버를 원격으로 관리하기 위한 대표적인 기술입니다.
서버가 다른 장소에 있더라도 SSH를 이용하면 자신의 컴퓨터에서 서버에 접속하여 명령어를 실행하고 파일과 프로그램을 관리할 수 있습니다.
SSH를 제대로 이해하려면 단순히 접속 명령어만 외우기보다는 IP 주소, 포트, 사용자 계정, 인증 방식, 네트워크, 방화벽 등의 개념을 함께 이해하는 것이 좋습니다.
특히 실제 운영 환경에서는 SSH 키 인증, 사용자 권한 관리, 방화벽, 업데이트, 로그 확인 등 다양한 보안 요소를 함께 고려해야 합니다.
리눅스 서버를 처음 공부한다면 가상 머신에 리눅스 서버 구축 → SSH 설정 → 원격 접속 → 기본 명령어 실습 → 사용자 및 권한 관리 → SSH 키 인증 → 방화벽 설정 순서로 학습하는 것을 추천합니다.
SSH는 처음에는 단순히 서버에 접속하는 기능처럼 보이지만, 리눅스 서버를 관리하는 과정에서 매우 자주 사용하게 되는 핵심 기술입니다.
따라서 리눅스 서버를 제대로 공부하고 싶다면 SSH의 기본 개념과 사용 방법을 확실하게 익혀두는 것이 좋습니다.