보안을 위해서는 SSH 공개키 인증을 추천합니다.
Windows PowerShell에서:
ssh-keygen -t ed25519
그냥 Enter를 눌러 기본 경로를 사용해도 됩니다.
생성되는 주요 파일:
C:\Users\사용자\.ssh\id_ed25519
C:\Users\사용자\.ssh\id_ed25519.pub
공개키를 Ubuntu 서버에 복사합니다.
Windows에서:
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh ubuntu@192.168.0.50 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Ubuntu에서 권한을 확인합니다.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
이제:
ssh ubuntu@192.168.0.50
비밀번호 없이 접속할 수 있습니다.
10. 비밀번호 SSH 로그인 차단
SSH 키 로그인이 정상적으로 확인된 후에만 진행하세요.
sudo nano /etc/ssh/sshd_config
다음을 설정합니다.
PasswordAuthentication no
PubkeyAuthentication yes
그리고:
sudo sshd -t
sudo systemctl restart ssh
이제 SSH 키가 없는 사용자는 비밀번호로 로그인할 수 없습니다.
11. 외부 인터넷에서 접속하려는 경우
여기서 중요한 차이가 있습니다.
같은 집/회사 내부 네트워크
Windows PC
│
│ SSH
▼
192.168.0.50
Ubuntu
이면 위 설정만 하면 됩니다.
인터넷을 통해 집/회사 Ubuntu 서버에 접속
외부 PC
│
│ Internet
▼
공유기 공인 IP
│
│ 포트포워딩
▼
Ubuntu
192.168.0.50
이라면 공유기에서 포트포워딩도 설정해야 합니다.
예를 들어 SSH를 2222번으로 사용하는 경우:
외부 포트 : 2222
내부 IP : 192.168.0.50
내부 포트 : 2222
프로토콜 : TCP
그리고 Ubuntu:
sudo ufw allow 2222/tcp
외부 PC에서는:
ssh -p 2222 ubuntu@공인IP
12. 현재 Ubuntu의 SSH 상태 한 번에 확인
아래 명령들을 실행해보시면 됩니다.
echo "=== SSH SERVICE ==="
sudo systemctl status ssh --no-pager
echo "=== SSH PORT ==="
sudo ss -tlnp | grep ssh
echo "=== FIREWALL ==="
sudo ufw status
echo "=== IP ==="
hostname -I
echo "=== SSH CONFIG CHECK ==="
sudo sshd -t
가장 기본적인 정상 구성
SSH 서비스 active (running)
SSH 포트 22
Ubuntu IP 192.168.x.x
UFW 22/tcp ALLOW
sshd 설정 오류 없음
이면 같은 네트워크의 Windows에서:
ssh 사용자명@192.168.x.x
로 접속할 수 있습니다.
Leave a Reply