SSH와 SFTP는 모두 보안을 위해 사용하는 프로토콜이며, 일반적으로 같은 포트(22번)를 사용합니다.
그래서 종종 이런 질문이 나옵니다
"SFTP는 되게 하면서 SSH는 막을 수 있을까?"
이번 글에서는 이 질문에 대한 답을 기술적인 배경과 함께 정리하고,
실제로 SFTP만 허용하는 방법까지 친절하게 설명해드릴게요! 😊
🔍 SFTP와 SSH의 관계
- SFTP는 SSH를 기반으로 동작하는 파일 전송 프로토콜입니다.
- 즉, SFTP는 SSH의 한 기능이라고 보면 됩니다.
- 두 프로토콜 모두 기본적으로 TCP 22번 포트를 사용합니다.
💡 그래서 기본 설정에서는 SFTP가 가능하면 SSH도 가능하다는 것이 원칙입니다.
🚫 포트나 방화벽으로 SFTP만 허용할 수 있을까?
❌ 불가능합니다.
포트 기반 차단은 SSH와 SFTP를 구분하지 못합니다. 둘 다 같은 포트를 사용하니까요.
✋ 포트를 막으면 SFTP와 SSH 모두 차단됩니다!
✅ SFTP만 허용하고 SSH는 차단하려면?
특정 사용자에게만 SFTP를 허용하고, 쉘 접속(SSH)은 막는 방법이 있습니다.
즉, SSH 자체는 열려 있지만, 접속 유저를 제한하는 방식입니다.
🔧 방법 1: sshd_config에서 사용자별 SFTP 전용 설정
/etc/ssh/sshd_config 파일에 아래처럼 추가합니다
Match User sftpuser
ForceCommand internal-sftp
ChrootDirectory /home/sftpuser
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
✔️ sftpuser는 이제 SSH로 접속해도 쉘을 실행할 수 없고, SFTP만 사용할 수 있게 됩니다.
🔐 보안도 강화되고, 불필요한 접근을 막을 수 있어요!
🛠️ 방법 2: SFTP 전용 셸 (rssh, scponly) 사용
전용 셸을 설정하면 해당 사용자는 SFTP/파일 전송만 가능하고 SSH 쉘 접근은 차단됩니다
usermod -s /usr/bin/rssh sftpuser
✔️ rssh는 SFTP, SCP 등만 허용하고 나머지는 차단해줍니다.
📦 다중 사용자 환경에서 특히 유용합니다.
🧾 요약 정리
목적 | 🎯가능 여부 | 방법 요약 |
SFTP는 되고 SSH는 안 되게 | ✔️ 가능 (제한적) | 사용자 단위 제한 (sshd_config, rssh) |
포트/방화벽으로 구분 | ❌ 불가능 | SFTP도 SSH 포트를 사용함 |
🛡️ 주의할 점
- ChrootDirectory 경로는 root가 소유하고, 사용자에게 쓰기 권한이 없어야 합니다.
→ /home/sftpuser 디렉토리는 root:root이어야 정상 작동합니다. - 설정 변경 후에는 SSH 서비스를 재시작해야 적용됩니다
- SSH가 아예 다 막히는 건 아니고, 다른 사용자들은 기존대로 SSH 접속이 가능합니다.
sudo systemctl restart sshd
✅ 디렉토리 구조 및 권한 설정 방법
예: 사용자 이름이 sftpuser이고, 홈 디렉토리가 /home/sftpuser인 경우
1️⃣ 상위 디렉토리 (/home/sftpuser)는 root가 소유해야 함
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser
- ✅ 소유자: root:root
- ✅ 권한: rwxr-xr-x (755)
- ❌ sftpuser에게는 여기에 직접 쓰기 권한이 있으면 안 됨
2️⃣ 실제 파일 업로드 디렉토리 만들기
root 소유 디렉토리 아래에 실제 업로드할 디렉토리를 따로 만듭니다.
sudo mkdir /home/sftpuser/upload
sudo chown sftpuser:sftpuser /home/sftpuser/upload
sudo chmod 755 /home/sftpuser/upload
- ✅ 여기는 sftpuser가 소유하고 자유롭게 파일 업로드 가능
- ❗ 이 경로를 접속 후 루트 디렉토리로 보여지게 하려면 internal-sftp가 자동으로 ChrootDirectory 하위 디렉토리로 진입합니다.
🧩 마무리
서버 보안을 유지하면서 파일 전송만 허용하고 싶을 때,
SSH를 제한하고 SFTP만 열어두는 방식은 매우 유용합니다.
✅ 특정 사용자만 SFTP 접근 가능
✅ 쉘 로그인 차단
✅ 불필요한 공격 노출 감소
꼭 필요한 사용자만 SFTP 접근하도록 설정해서
더 안전한 서버 운영을 해보세요! 🔐💪
'IT > OS' 카테고리의 다른 글
🔍 바이너리 의존성을 확인하는 방법 (feat. ldd, otool, Dependency Walker 등) (0) | 2025.07.07 |
---|---|
[리눅스 서버] 디렉토리 용량 확인하는 5가지 방법 총정리 (du, df 명령어 완벽 가이드) (0) | 2025.07.01 |
서버 접속 시 Your must change your password now and login again' 오류 해결 방법 (0) | 2025.07.01 |
🔒 서버에서 오픈 포트 확인 및 차단하는 방법 (0) | 2025.06.29 |