
개요
이 문서는 Debian 시스템에서 OpenSSH 서버와 클라이언트를 설치하고 설정하는 방법을 설명합니다.
사전 준비
시스템 업데이트
설치 전에 시스템 패키지를 최신 상태로 업데이트합니다.
sudo apt update
sudo apt upgrade -y
OpenSSH 설치
1. SSH 서버 설치
sudo apt install openssh-server -y
2. SSH 클라이언트 설치 (선택사항)
대부분의 Debian 시스템에는 기본으로 설치되어 있습니다.
sudo apt install openssh-client -y
3. 설치 확인
# SSH 버전 확인
ssh -V
# SSH 서버 데몬 버전 확인
sshd -V
서비스 관리
기본 서비스 명령어
# 서비스 상태 확인
sudo systemctl status ssh
# 서비스 시작
sudo systemctl start ssh
# 서비스 중지
sudo systemctl stop ssh
# 서비스 재시작
sudo systemctl restart ssh
# 서비스 다시 로드 (설정 변경 시)
sudo systemctl reload ssh
# 부팅 시 자동 시작 설정
sudo systemctl enable ssh
# 자동 시작 해제
sudo systemctl disable ssh
프로세스 확인
# SSH 프로세스 확인
ps aux | grep sshd
# 포트 사용 확인
sudo netstat -tlnp | grep :22
# 또는
sudo ss -tlnp | grep :22
기본 설정
설정 파일 위치
- 메인 설정: /etc/ssh/sshd_config
- 클라이언트 설정: /etc/ssh/ssh_config
- 호스트 키: /etc/ssh/ssh_host_*
설정 파일 편집
# 서버 설정 편집
sudo nano /etc/ssh/sshd_config
# 설정 변경 후 서비스 재시작
sudo systemctl restart ssh
보안 설정
기본 보안 강화
# 설정 파일 백업
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
# 설정 파일 편집
sudo nano /etc/ssh/sshd_config
권장 보안 설정
# 포트 변경 (선택사항)
Port 2222
# root 직접 로그인 비활성화
PermitRootLogin no
# 패스워드 인증 비활성화 (키 인증 설정 후)
PasswordAuthentication no
# 빈 패스워드 비활성화
PermitEmptyPasswords no
# X11 포워딩 비활성화 (필요하지 않은 경우)
X11Forwarding no
# 최대 인증 시도 횟수 제한
MaxAuthTries 3
# 동시 접속 제한
MaxSessions 2
# 로그인 시간 제한 (초)
LoginGraceTime 30
# 특정 사용자만 허용 (선택사항)
AllowUsers username1 username2
# 특정 그룹만 허용 (선택사항)
AllowGroups sshusers
SSH 키 인증 설정
1. 클라이언트에서 키 생성
# RSA 키 생성 (4096비트)
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# ED25519 키 생성 (더 안전한 방식)
ssh-keygen -t ed25519 -C "your_email@example.com"
2. 공개키 서버로 복사
# ssh-copy-id 사용 (권장)
ssh-copy-id username@server_ip
# 수동으로 복사
cat ~/.ssh/id_rsa.pub | ssh username@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
3. 권한 설정
# 서버에서 실행
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
방화벽 설정
UFW를 사용하는 경우
# SSH 기본 포트 허용
sudo ufw allow ssh
# 사용자 정의 포트 허용 (포트 변경 시)
sudo ufw allow 2222/tcp
# 특정 IP에서만 SSH 허용
sudo ufw allow from 192.168.1.100 to any port ssh
# 방화벽 상태 확인
sudo ufw status
iptables를 사용하는 경우
# SSH 포트 허용
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 설정 저장 (Debian/Ubuntu)
sudo iptables-save > /etc/iptables/rules.v4
연결 테스트
로컬 테스트
# 로컬호스트 연결
ssh username@localhost
# 특정 포트로 연결
ssh -p 2222 username@localhost
원격 테스트
# 기본 연결
ssh username@server_ip
# 포트 지정 연결
ssh -p 2222 username@server_ip
# 키 파일 지정 연결
ssh -i ~/.ssh/custom_key username@server_ip
로그 및 모니터링
로그 파일 위치
- 인증 로그: /var/log/auth.log
- 시스템 로그: /var/log/syslog
로그 확인
# 실시간 SSH 로그 모니터링
sudo tail -f /var/log/auth.log
# SSH 관련 로그만 필터링
sudo grep sshd /var/log/auth.log
# 실패한 로그인 시도 확인
sudo grep "Failed password" /var/log/auth.log
# 성공한 로그인 확인
sudo grep "Accepted" /var/log/auth.log
시스템 로그 확인
# systemd 저널에서 SSH 서비스 로그 확인
sudo journalctl -u ssh
# 실시간 로그 모니터링
sudo journalctl -u ssh -f
고급 설정
SSH 터널링
# 로컬 포트 포워딩
ssh -L 8080:localhost:80 username@server_ip
# 원격 포트 포워딩
ssh -R 9090:localhost:22 username@server_ip
# 동적 포트 포워딩 (SOCKS 프록시)
ssh -D 1080 username@server_ip
SSH 에이전트 사용
# SSH 에이전트 시작
eval $(ssh-agent)
# 키 추가
ssh-add ~/.ssh/id_rsa
# 추가된 키 확인
ssh-add -l
SSH 설정 파일 (~/.ssh/config)
# 클라이언트 설정 파일 생성
nano ~/.ssh/config
# 예시 설정
Host myserver
HostName server_ip
User username
Port 2222
IdentityFile ~/.ssh/custom_key
# 사용 예
ssh myserver
문제 해결
일반적인 문제들
1. 연결 거부 (Connection refused)
# 서비스 상태 확인
sudo systemctl status ssh
# 포트 확인
sudo netstat -tlnp | grep :22
# 방화벽 확인
sudo ufw status
2. 권한 거부 (Permission denied)
# 사용자 존재 확인
id username
# 공개키 권한 확인
ls -la ~/.ssh/
3. 키 인증 실패
# SSH 상세 로그 확인
ssh -vvv username@server_ip
# 서버 로그 확인
sudo tail -f /var/log/auth.log
디버깅 모드
# SSH 클라이언트 상세 출력
ssh -vvv username@server_ip
# SSH 서버 디버깅 모드 실행
sudo /usr/sbin/sshd -d -p 2222
성능 최적화
연결 속도 개선
# 설정 파일에 추가
UseDNS no
GSSAPIAuthentication no
Keep-Alive 설정
# 서버 설정
ClientAliveInterval 60
ClientAliveCountMax 3
# 클라이언트 설정
ServerAliveInterval 60
ServerAliveCountMax 3
제거
완전 제거
# 서비스 중지
sudo systemctl stop ssh
sudo systemctl disable ssh
# 패키지 제거
sudo apt remove openssh-server -y
# 설정 파일까지 완전 제거
sudo apt purge openssh-server -y
# 종속 패키지 정리
sudo apt autoremove -y
# 설정 디렉터리 제거 (선택사항)
sudo rm -rf /etc/ssh
추가 리소스
유용한 명령어
# 현재 SSH 연결 확인
who
# SSH 연결 히스토리
last
# 실패한 로그인 시도 확인
lastb
보안 스캐닝
# SSH 서비스 스캔
nmap -p 22 localhost
# SSH 암호화 알고리즘 확인
ssh -Q cipher localhost
'지식인 > 리눅스 :: Linux' 카테고리의 다른 글
| [리눅스] Nginx 설치 가이드 (0) | 2025.09.12 |
|---|---|
| [데비안] 터미널 들어가는 방법 (1) | 2025.08.18 |
| [데비안] 시스템 정보 들어가는방법 (2) | 2025.08.18 |