Ubuntu에서 SSH 서버 설치부터 보안 설정까지 전체 과정을 설명합니다. 비밀번호 로그인 차단, 포트 변경, 사용자 제한 등 보안 강화를 위한 설정도 포함되어 있습니다.
Ubuntu에서 SSH 서버 설치 및 보안 설정
목차
1. SSH 서버 설치 방법
SSH(Secure Shell)는 네트워크를 통해 원격 서버에 안전하게 접속할 수 있는 프로토콜입니다.
Ubuntu에 SSH 서버를 설치하면 외부에서 원격으로 접속하고 제어할 수 있습니다.
Ubuntu에 openssh-server 패키지를 설치하면 SSH 서버가 구성됩니다.
sudo apt update
sudo apt install openssh-server -y
설치 후 SSH 서비스 상태를 확인합니다.
sudo systemctl status ssh
SSH 서비스를 수동으로 시작하거나 부팅 시 자동으로 시작되도록 설정할 수 있습니다.
# SSH 시작
sudo systemctl start ssh
# 부팅 시 자동 시작 설정
sudo systemctl enable ssh

2. SSH 보안 설정 기본 예시
보안을 강화하려면 /etc/ssh/sshd_config 파일을 수정합니다.
sudo vi /etc/ssh/sshd_config
다음 설정 예시는 SSH 보안을 강화하는 주요 항목입니다.
- 루트 로그인 비활성화
PermitRootLogin no - 비밀번호 인증 차단 (공개 키만 허용)
PasswordAuthentication no
PubkeyAuthentication yes - 기본 포트 변경 (예: 2222)
Port 2222 - 특정 사용자/그룹만 허용
AllowUsers sshuser
AllowGroups sshusers
사용자 그룹을 생성하고 사용자 추가:
sudo groupadd sshusers
sudo usermod -aG sshusers sshuser
설정 후 SSH를 재시작합니다.
sudo systemctl restart ssh
3. sshd_config 상세 설정 설명
# SSH 설정 파일 (/etc/ssh/sshd_config)
Include /etc/ssh/sshd_config.d/*.conf
Port 2222 # 기본 포트 22를 2222로 변경
PermitRootLogin no # 루트 계정 로그인 비활성화
PasswordAuthentication no # 비밀번호 로그인 차단
PubkeyAuthentication yes # 공개 키 인증 허용
AllowUsers myuser # 특정 사용자만 접속 허용
MaxAuthTries 3 # 로그인 실패 최대 횟수 제한
MaxSessions 5 # 사용자당 최대 세션 수 제한
ClientAliveInterval 300 # 5분 간격으로 ping 전송
ClientAliveCountMax 3 # 응답 없으면 연결 종료
KbdInteractiveAuthentication no # 대화형 인증 비활성화
X11Forwarding no # X11 포워딩 비활성화
AllowTcpForwarding no # TCP 포워딩 차단
PermitTunnel no # 터널링 비활성화
AcceptEnv LANG LC_* # 허용할 환경 변수
Subsystem sftp /usr/lib/openssh/sftp-server
ForceCommand internal-sftp
ChrootDirectory /home/%u # 사용자 홈 디렉토리로 제한
PermitTTY no # 터미널 접속 차단
Banner /etc/issue.net # 로그인 시 배너 표시
4. root 로그인 허용 설정(비추천)
root 계정으로 접속이 꼭 필요한 경우 아래와 같이 설정합니다.
보안상 권장되지 않으며, 별도 사용자에게 sudo 권한을 부여하는 것이 안전합니다.
# root 계정에 비밀번호 설정
sudo passwd root
# sshd_config 수정
sudo vi /etc/ssh/sshd_config
PermitRootLogin yes
PasswordAuthentication yes
# SSH 재시작
sudo systemctl restart ssh
PermitRootLogin
설정 값 | 설명 |
PermitRootLogin yes | root 계정의 SSH 로그인 허용 (비밀번호 또는 키 인증 가능) |
PermitRootLogin no | root 계정의 SSH 로그인 차단 |
PermitRootLogin prohibit-password | 비밀번호 로그인 차단, 공개 키 인증만 허용 |
PermitRootLogin forced-commands-only | 공개 키 인증만 허용하며, 지정된 명령만 실행 가능 |
Ubuntu에서 SSH 서버를 설치하고 보안 설정을 강화하는 방법을 살펴보았습니다. 다음과 같은 보안 수칙을 함께 적용하면 더욱 안전하게 운영할 수 있습니다:
- 반드시 포트 변경 및 사용자 제한 설정 적용
- 비밀번호 인증 대신 공개 키 인증 사용
- root 로그인은 비활성화 유지
- 접속 로그 주기적 점검 (/var/log/auth.log)
관련 글 링크
2025.03.29 - [1.시스템&인프라/Ubuntu] - 8. 리눅스 계정 관리 명령어 정리 : 생성, 삭제, 잠금, 그룹
8. 리눅스 계정 관리 명령어 정리 : 생성, 삭제, 잠금, 그룹
리눅스에서 사용자 계정을 관리하는 방법을 정리했습니다. adduser, useradd, deluser, userdel 명령어의 차이점과 사용법을 한눈에 이해할 수 있습니다. 계정 잠금, 비활성화, 그룹 관리까지 포함된 설명
quadcube.tistory.com
2025.03.29 - [1.시스템&인프라/Ubuntu] - 7. systemctl 명령어 요약 정리(서비스 등록 및 관리)
7. systemctl 명령어 요약 정리(서비스 등록 및 관리)
Linux 시스템의 서비스 관리에 필수적인 systemctl 명령어를 정리했습니다. 서비스 시작, 자동 실행 설정, 로그 확인 등 systemd 기반 시스템 운영에 꼭 필요한 명령어를 실용 예시와 함께 설명합니다.
quadcube.tistory.com
2025.03.29 - [1.시스템&인프라/Ubuntu] - 9. su vs sudo 비교
9. su vs sudo 비교
Linux에서 su와 sudo는 관리자 권한을 얻는 대표적인 방법입니다. 두 명령어의 차이점과 사용법, 배포판별 특징을 이해하면 더 안전하고 효율적인 시스템 관리를 할 수 있습니다. su vs sudo 비교 목
quadcube.tistory.com
'1.시스템&인프라 > Ubuntu' 카테고리의 다른 글
14. Ubuntu에서 zip/unzip 설치 및 사용법 정리 (0) | 2025.04.08 |
---|---|
13. SSH 공개키 인증 설정하기: 비밀번호 로그인 차단 (0) | 2025.03.30 |
11.Ubuntu에서 Netplan으로 고정 IP 및 DHCP 설정하기 (0) | 2025.03.29 |
10. 네트워크 관리 명령어 정리: iproute2 (0) | 2025.03.29 |
9. su vs sudo 비교 (0) | 2025.03.29 |