
SSH 강화
Debian/Ubuntu에서 SSH를 한 번에 잠급니다: 새 포트, 루트 로그인 금지, 키 기반 인증, 선택적 UFW 및 Fail2Ban.
스크립트를 실행하면 OS를 감지하고 설정을 표시한 후 계속할지 묻습니다:

Debian/Ubuntu:
sudo apt-get install -y git
rm -rf ssh-hardening
git clone https://github.com/spookey007/ssh-hardening.git
cd ssh-hardening
최신 스크립트를 원할 때 언제든지 실행하세요.
chmod +x ssh_harden.sh script.sh
이 단계를 건너뛰면 ./ssh_harden.sh 실행 시 "command not found" 오류가 발생할 수 있습니다. 그런 경우 5단계에서 sudo bash ssh_harden.sh를 대신 사용하세요.
SSH_PUB_KEY로 붙여넣기)Linux / macOS
ssh-keygen -t ed25519 -C "[email protected]"
기본 경로(~/.ssh/id_ed25519)로 Enter를 누르세요. 선택적으로 암호를 설정할 수 있습니다.
공개 키 표시 (SSH_PUB_KEY로 복사):
cat ~/.ssh/id_ed25519.pub
Windows (PowerShell 또는 Git Bash)
ssh-keygen -t ed25519 -C "[email protected]"
기본 경로로 Enter를 누르세요. 선택적으로 암호를 설정할 수 있습니다.
공개 키 표시:
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pubtype %USERPROFILE%\.ssh\id_ed25519.pub전체 줄(ssh-ed25519 ...로 시작)을 복사하세요. 이것이 SSH_PUB_KEY입니다.
값을 자신의 것으로 바꾼 후 실행:
sudo SSH_USER=kamaileo \
SSH_PASS='YourStrongPassword123!' \
SSH_PORT=49221 \
PORTS="5060,5061,10000-20000" \
SSH_PUB_KEY="ssh-ed25519 AAAA... you@yourmachine" \
./ssh_harden.sh
"command not found" 오류가 발생하면 다음을 사용하세요:
sudo bash ssh_harden.sh
(앞에 SSH_USER=... SSH_PASS=... 등은 동일하게 붙여야 합니다.)
새 터미널에서 새 포트(22 아님)를 사용하여 연결:
ssh -p 49221 kamaileo@YOUR_SERVER_IP
설정한 포트와 사용자를 사용하세요. 로그인 및 sudo 작동을 확인한 후에만 원래 세션을 닫으세요.
매번 새 포트를 사용하세요. 강화 후 SSH는 더 이상 포트 22에 있지 않습니다. 항상 다음으로 연결:
ssh -p <YOUR_PORT> <USER>@<SERVER_IP>
예: ssh -p 49221 [email protected]
스크립트 출력을 완료 시 저장하세요. 마지막에 스크립트는 사용자, 포트, 연결 명령, 암호 설정 여부가 포함된 요약을 출력합니다. 해당 블록을 복사하거나 스크린샷을 찍어 안전한 곳에 보관하세요. SSH 키를 분실하거나 포트를 잊어버리거나 암호를 잊어버린 경우, 이 기록이 복구 또는 재연결(예: 동일한 사용자와 암호로 콘솔/VNC를 통해)에 도움이 됩니다.
스크립트는 필요한 모든 것을 출력합니다: 사용자, 포트, UFW/Fail2Ban 상태 및 정확한 ssh -p ... 명령. 추측할 필요가 없습니다.
SSH_USER가 서버에 이미 있는 경우 스크립트는 새 사용자를 생성하지 않으며 암호를 변경하지 않습니다. 다음만 수행합니다:
sudo 그룹에 속해 있는지 확인SSH_PUB_KEY를 전달하면 ~/.ssh/authorized_keys 업데이트따라서 기존 암호를 건드리지 않고 "강화만" 하려면 다시 실행할 수 있습니다.
지원되지 않는 OS에서는 스크립트가 Coming soon 😊를 출력하고 아무것도 변경하지 않고 종료됩니다.
SSH_PUB_KEY**를 설정하여 암호 인증이 비활성화된 후에도 로그인할 수 있도록 하세요.ssh -p PORT user@server를 테스트할 때까지 현재 세션을 열어 두세요.이 스크립트가 시간을 절약해 주거나 골칫거리를 덜어주었다면, 일회성 팁으로 프로젝트를 지원할 수 있습니다.
BTC: 3L1Gc4avD4Bqoi2F9aq6z4heT13fXA8DZ9
어쨌든 감사합니다.
| 변수 | 예시 | 설명 |
|---|
SSH_USER | kamaileo | 사용자 이름 (없으면 생성, 존재하면 암호는 변경되지 않음). |
SSH_PASS | 'YourPass123!' | 새 사용자만을 위한 암호. 강력한 암호를 사용하세요. |
SSH_PORT | 49221 | SSH 포트. ssh -p 49221 user@server로 사용합니다. |
PORTS | "5060,5061,10000-20000" | UFW용 추가 포트(선택 사항). |
SSH_PUB_KEY | "ssh-ed25519 AAAA..." | 공개 키. 잠금 당하지 않도록 강력히 권장합니다. |
| OS | 지원 | 테스트됨 | Git 설치 |
|---|
| Debian 12 x64 | ✅ | ✅ | sudo apt-get install -y git |
| Debian 11/10, Ubuntu 24/22/20 | ✅ | ❌ | sudo apt-get install -y git |
| RHEL / Rocky / Alma / CentOS | ❌ | ❌ | sudo yum install -y git |
| Fedora | ❌ | ❌ | sudo dnf install -y git |
| Arch | ❌ | ❌ | sudo pacman -Syu git |
| openSUSE | ❌ | ❌ | sudo zypper install -y git |