On this page
1. SSH 설치
Windows
Windows 10 버전 1803 이후부터는 OpenSSH가 기본으로 포함되어 있습니다. 활성화하려면:
- 설정 > 앱 > 앱 및 기능 > 선택적 기능 관리로 이동
- "OpenSSH 클라이언트" 설치
Ubuntu/Debian
대부분 기본 설치되어 있지만, 없다면:
sudo apt update
sudo apt install openssh-client openssh-server
macOS
SSH 클라이언트가 기본으로 설치되어 있습니다.
2. SSH 키 생성
모든 플랫폼에서 다음 명령어로 키를 생성할 수 있습니다:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/myserver_key
t rsa
: RSA 암호화 사용b 4096
: 4096비트 키 길이 (강력한 보안)f ~/.ssh/myserver_key
: 키 파일 저장 위치 및 이름
비밀문구(passphrase) 설정은 선택사항입니다.
3. 공개키를 서버에 복사
Linux/macOS 사용자
ssh-copy-id
명령어 사용:
ssh-copy-id -i ~/.ssh/myserver_key.pub user@server_ip -p port_number
Windows 사용자
Windows에는 ssh-copy-id
가 없으므로 수동으로 복사해야 합니다:
- 복사한 공개키 내용을 붙여넣고 저장 (Ctrl+X, Y, Enter)
권한 설정:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
서버에서 authorized_keys 파일 편집:
mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys
서버에 SSH 접속:
ssh -p port_number user@server_ip
공개키 내용 확인:
type %USERPROFILE%\\.ssh\\myserver_key.pub
4. SSH 접속 테스트
ssh -i ~/.ssh/myserver_key -p port_number user@server_ip
Windows에서는 전체 경로를 사용해야 할 수 있습니다:
ssh -i C:\\Users\\YourUsername\\.ssh\\myserver_key -p port_number user@server_ip
5. 추가 설정 및 팁
SSH 설정 파일 사용
~/.ssh/config
파일을 생성하고 다음과 같이 설정:
Host myserver
HostName server_ip
User username
Port port_number
IdentityFile ~/.ssh/myserver_key
이제 ssh myserver
로 간단히 접속 가능합니다.
서버 측 보안 강화
서버의 /etc/ssh/sshd_config
파일에서:
PasswordAuthentication no
PermitRootLogin no
변경 후 SSH 서비스 재시작:
sudo systemctl restart sshd
키 관리 팁
- 여러 서버에 대해 다른 키 사용
- 정기적으로 키 교체
- 키 암호(passphrase) 사용 고려
이 가이드를 따라하면 비밀번호 없이 안전하게 SSH 키 인증으로 서버에 접속할 수 있습니다. 보안과 편의성을 모두 높일 수 있는 훌륭한 방법입니다.
보안옵션
SSH 서버의 보안을 강화하는 중요한 옵션들입니다. 각각의 기능과 fail2ban에 대해 자세히 설명해 드리겠습니다.
PasswordAuthentication no
- 기능: 비밀번호를 사용한 SSH 로그인을 비활성화합니다.
- 효과: 무차별 대입 공격(brute-force attack)을 방지합니다. 오직 SSH 키를 통한 인증만 허용됩니다.
PermitRootLogin no
- 기능: root 계정으로의 직접적인 SSH 로그인을 금지합니다.
- 효과: 시스템의 가장 강력한 계정인 root에 대한 무단 접근을 방지합니다. 대신 일반 사용자로 로그인 후 필요 시
sudo
를 사용하여 root 권한을 얻도록 합니다.
PubkeyAuthentication yes
- 기능: 공개키 인증 방식을 활성화합니다.
- 효과: SSH 키 쌍을 사용한 인증을 허용합니다. 이는 비밀번호 인증보다 더 안전한 방법입니다.
fail2ban
- 기능: 지속적인 로그인 실패 시도를 모니터링하고 차단하는 도구입니다.
- 설치:
sudo apt install fail2ban
- 효과:
- 특정 IP 주소에서 반복적으로 로그인 실패가 발생하면 해당 IP를 일정 시간 동안 차단합니다.
- SSH뿐만 아니라 다양한 서비스(예: 웹 서버)에 대한 공격을 방어할 수 있습니다.
- 무차별 대입 공격을 효과적으로 막을 수 있습니다.
이러한 설정들을 조합하면 SSH 서버의 보안을 크게 향상시킬 수 있습니다:
PubkeyAuthentication yes
와PasswordAuthentication no
를 함께 사용하면, 오직 SSH 키를 통한 인증만 허용되어 보안이 강화됩니다.PermitRootLogin no
를 설정하여 root 계정의 직접적인 접근을 차단합니다.fail2ban
을 추가로 설치하여 자동화된 공격 시도를 탐지하고 차단합니다.
이러한 설정을 적용한 후에는 반드시 SSH 서비스를 재시작해야 합니다:
bashCopysudo systemctl restart sshd
주의: 이러한 설정을 적용하기 전에 반드시 SSH 키 인증이 제대로 작동하는지 확인하세요. 그렇지 않으면 서버에 접근할 수 없게 될 수 있습니다.
sudo apt install fail2ban
- 설치만으로는 기본 설정으로 동작하지만, 완전한 커스터마이징을 위해서는 추가 설정이 필요합니다.
- 기본 설정으로도 SSH에 대한 기본적인 보호가 적용됩니다.
- SSH 옵션 설정 방법: 이 옵션들은 SSH 서버 설정 파일에서 변경합니다.
설정 후 서비스 시작:
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
추가 설정 방법:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
이 파일에서 해당 옵션들을 찾아 수정하거나 추가합니다:
변경 후 SSH 서비스 재시작:
sudo nano /etc/ssh/sshd_config
PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin no
sudo systemctl restart sshd
PubkeyAuthentication yes
- 대부분의 현대 SSH 서버 설정에서는 기본적으로 활성화되어 있습니다.
- 하지만 명시적으로 설정하는 것이 좋은 습관입니다:
- 설정의 명확성을 위해
- 향후 업데이트나 변경에 대비하여
- 일부 오래된 시스템이나 특수한 설정에서는 기본값이 다를 수 있기 때문
주의사항:
- 이러한 변경을 적용하기 전에 반드시 SSH 키 인증이 제대로 작동하는지 확인하세요.
PasswordAuthentication no
를 설정하면 키 인증만 가능하게 되므로, 키 설정이 완료된 후에 적용하세요.- 변경 사항을 적용한 후에는 새로운 SSH 세션에서 로그인이 가능한지 반드시 테스트하세요.
이러한 설정들을 통해 SSH 서버의 보안을 크게 향상시킬 수 있습니다. fail2ban은 추가적인 보안 계층을 제공하며, SSH 설정은 기본적인 접근 방식을 제어합니다.