리눅스 서버를 관리하는 데 있어서 가장 중요한 도구 중 하나는 바로 SSH(Secure Shell)입니다. SSH는 네트워크를 통해 원격으로 서버에 접속하고, 명령어를 실행하거나 파일을 관리하는 데 사용됩니다. 이번 글에서는 리눅스에서 SSH 서버를 설정하는 방법을 단계별로 설명할 것입니다. SSH 서버 설정을 통해 더 안전하고 효율적으로 서버를 관리할 수 있게 됩니다.
SSH란 무엇인가?
SSH는 보안이 강화된 네트워크 프로토콜로, 암호화를 통해 원격 시스템에 안전하게 접속할 수 있게 해줍니다. FTP나 Telnet 같은 옛날 원격 접속 방법들은 보안에 취약했지만, SSH는 데이터를 암호화하여 중간에서 데이터가 탈취되는 것을 방지합니다. 리눅스 서버의 SSH 서버 설정을 통해 원격에서 서버 관리가 가능해지므로 매우 중요한 설정입니다.
리눅스에서 SSH 서버 설치하기
리눅스에서 SSH 서버를 설치하는 과정은 매우 간단합니다. 대부분의 리눅스 배포판에는 기본적으로 OpenSSH 서버가 포함되어 있으며, 이를 설치하는 방법은 아래와 같습니다.
1. SSH 서버 패키지 설치
우분투, 데비안과 같은 배포판에서는 apt
패키지 관리자를 사용하여 SSH 서버를 설치할 수 있습니다. 터미널을 열고 아래 명령어를 입력하세요:
sudo apt update
sudo apt install openssh-server
CentOS, RHEL과 같은 배포판에서는 yum
을 사용합니다:
sudo yum install openssh-server
2. SSH 서비스 시작하기
SSH 서버 패키지를 설치한 후, SSH 서비스를 시작해야 합니다. 서비스가 자동으로 시작되지 않았다면 아래 명령어로 SSH 서비스를 시작할 수 있습니다:
sudo systemctl start ssh
서비스가 잘 시작되었는지 확인하려면 다음 명령어로 상태를 확인할 수 있습니다:
sudo systemctl status ssh
이 명령어는 SSH 서버가 정상적으로 실행되고 있는지 확인할 수 있습니다.
3. 부팅 시 SSH 서비스 자동 시작 설정
서버가 재부팅될 때마다 SSH 서버가 자동으로 시작되게 설정하려면 아래 명령어를 입력합니다:
sudo systemctl enable ssh
이렇게 설정하면 서버가 다시 시작될 때마다 SSH 서버가 자동으로 실행됩니다.
SSH 서버 설정 파일 편집하기
SSH 서버는 /etc/ssh/sshd_config
파일을 통해 다양한 설정을 조정할 수 있습니다. 이 파일을 수정하여 보안을 강화하고, 서버 접근을 제어할 수 있습니다.
1. SSH 서버 설정 파일 열기
설정 파일을 열려면 터미널에서 다음 명령어를 입력하세요:
sudo nano /etc/ssh/sshd_config
이 파일에는 여러 가지 중요한 설정들이 포함되어 있습니다. 몇 가지 주요 설정 항목에 대해 알아보겠습니다.
2. 포트 번호 변경
기본적으로 SSH는 22번 포트를 사용합니다. 그러나 보안상 이유로 SSH 포트를 변경하는 것이 좋습니다. sshd_config
파일에서 Port
항목을 찾아 새로운 포트 번호로 변경합니다:
Port 2222
위 예시처럼 포트 번호를 2222로 설정하면, SSH는 22번 대신 2222번 포트를 통해 접속을 허용하게 됩니다. 변경 후에는 파일을 저장하고 종료한 뒤, SSH 서비스를 다시 시작해야 합니다.
sudo systemctl restart ssh
3. 루트 로그인 금지 설정
루트(root) 계정으로 직접 로그인하는 것은 보안상 매우 위험합니다. 따라서 PermitRootLogin
설정을 no
로 변경하여 루트 로그인 방지할 수 있습니다:
PermitRootLogin no
이렇게 설정하면 루트 계정으로 SSH 접속을 시도할 수 없게 됩니다. 대신 일반 사용자 계정으로 로그인한 후 sudo
명령어를 사용하여 관리자 권한을 얻을 수 있습니다.
4. SSH 키 인증 설정
암호 인증 대신 SSH 키 인증을 사용하는 것이 보안에 훨씬 더 안전합니다. 먼저, 클라이언트에서 SSH 키를 생성한 후, 서버에 공개 키를 추가하는 방식으로 설정할 수 있습니다.
클라이언트에서 SSH 키를 생성하려면 다음 명령어를 사용합니다:
ssh-keygen -t rsa -b 2048
이렇게 생성된 공개 키를 서버의 ~/.ssh/authorized_keys
파일에 추가합니다. 이후 PasswordAuthentication
설정을 no
로 변경하여 패스워드 로그인을 금지하고, 키 인증만 사용할 수 있도록 설정합니다:
PasswordAuthentication no
5. SSH 서비스 재시작
설정을 완료한 후, SSH 서비스를 다시 시작하여 변경 사항을 적용합니다:
sudo systemctl restart ssh
방화벽 설정하기
서버에서 방화벽을 사용하여 SSH 포트를 보호하는 것도 중요한 부분입니다. 리눅스 서버에서 가장 많이 사용되는 방화벽 도구는 ufw
(Uncomplicated Firewall)입니다. ufw
를 사용하여 SSH 포트를 허용하는 방법은 다음과 같습니다.
1. 기본 방화벽 설정 확인
먼저 방화벽이 활성화되어 있는지 확인합니다:
sudo ufw status
2. SSH 포트 열기
기본적으로 SSH 포트인 22번을 열려면 아래 명령어를 입력합니다:
sudo ufw allow 22
만약 SSH 포트를 다른 번호로 변경했다면 해당 포트를 열어야 합니다. 예를 들어 2222번 포트를 사용한다면:
sudo ufw allow 2222
3. 방화벽 활성화
방화벽을 활성화하려면 다음 명령어를 사용합니다:
sudo ufw enable
이제 방화벽이 활성화되고, SSH 접속이 안전하게 보호됩니다.
SSH 접속 테스트하기
SSH 서버 설정을 완료한 후, 로컬 머신에서 리모트 서버로 접속을 시도하여 정상적으로 동작하는지 확인해야 합니다. 아래 명령어로 SSH 접속을 테스트합니다:
ssh username@server_ip
username
은 접속하려는 서버의 사용자 이름이고, server_ip
는 서버의 IP 주소입니다. SSH 키 인증을 설정했다면 패스워드 대신 SSH 키를 사용해 로그인하게 됩니다.
결론
리눅스에서 SSH 서버를 설정하는 과정은 간단하지만, 보안적인 측면에서 매우 중요한 작업입니다. 기본적인 SSH 서버 설치부터 포트 변경, 루트 로그인 방지, SSH 키 인증 설정, 방화벽 설정까지 안전하게 설정하는 방법을 알아보았습니다. SSH 설정을 올바르게 적용하면 원격에서 서버를 효율적이고 안전하게 관리할 수 있습니다.
이제 SSH 서버를 설정한 후에는 주기적인 보안 점검과 패치 적용을 통해 서버를 안전하게 유지하는 것이 중요합니다. SSH는 강력한 보안을 제공하지만, 그만큼 제대로 설정하지 않으면 보안상의 문제가 발생할 수 있습니다. 항상 최신 보안 패치를 적용하고, 불필요한 포트를 닫고, 강력한 인증 방법을 사용하여 서버를 보호하세요.
이 글은 리눅스에서 SSH 서버 설정을 최적화하는 데 도움을 주는 정보를 제공하며, 안정적인 서버 운영을 위해 필요한 모든 기본적인 절차를 안내합니다.
'Linux' 카테고리의 다른 글
리눅스에서 기본적인 방화벽 설정 (ufw) (0) | 2025.04.09 |
---|---|
리눅스에서 SSH 클라이언트 사용하기 (0) | 2025.04.08 |
리눅스에서 NTP 서버 설정하여 시간 동기화 (0) | 2025.04.06 |
리눅스에서 시스템 상태 모니터링하기 (htop, dstat) (0) | 2025.04.05 |
리눅스에서 시스템 재부팅 및 종료 방법 (0) | 2025.04.04 |