2.서버 접속 실습
온프레미스 환경에서 SSH 공개키 인증 기반 서버 접속 실습
1. 전체 시나리오
강사 노트북: Ubuntu Linux
→ 서버 역할
학생 노트북 Windows/Mac/Linux
→ 서버에 접속하는 클라이언트 역할
(Windows라면 Git Bash나 WSL, Mac/Linux라면 기본 터미널에서 ssh 사용 가능)
목표
- 학생은 자신의 노트북에서 ssh 접속 시도
- 강사가 제공한
.pem키(= 개인키)를 써서 서버에 접속
2. 서버 설정
- 서버에 SSH 설치 및 실행
sshd가 설치되어 있는지 확인
sudo systemctl status ssh→ Active: active(running)일 경우 설치되어 동작 중이라고 볼 수 있음
설치되어 있지 않을 경우 ssh 서버 설치
sudo apt update
sudo apt install openssh-server -y
sudo systemctl enable ssh
sudo systemctl start ssh- 서버의 IP 확인
ip addr show→ 강의실 공유 네트워크에서 접속할 수 있는 IP를 통해 서버 PC에 접속 가능
예: 192.168.0.50
- 실습용 계정 생성
sudo adduser student→ 학생들은 student라는 계정을 통해 서버에 접속 가능
3. 서버는 클라이언트가 접근할 수 있도록 키 쌍 생성
- 서버에서 키 생성:
ssh-keygen -t rsa -b 2048 -f mykey.pem여기서 mykey.pem이 개인키
자동으로 mykey.pem.pub(공개키)도 생성됨
생성된 키 목록 조회
ls
# mykey.pem mykey.pem.pub ...- 공개키를 실습용 계정에 등록
# 공개키(.pub)를 student 계정의 authorized_keys 파일에 추가
cat mykey.pem.pub >> /home/student/.ssh/authorized_keys→ SSH 서버는 클라이언트가 로그인할 때 이 파일에 있는 공개키 목록을 확인해서, 개인키와 짝이 맞는지 검증함
즉, 이 키를 가진 사람만 student 계정으로 서버에 들어올 수 있음
# 해당 파일의 소유자를 student로 변경
sudo chown student:student /home/student/.ssh/authorized_keys→ SSH는 보안상, 키 파일이 로그인하려는 사용자 본인 소유가 아닐 경우 거부함
# 파일 권한을 rw------- (읽기/쓰기 가능, 오직 소유자만 접근 가능)으로 제한
sudo chmod 600 /home/student/.ssh/authorized_keys→ 공개키라고 해도 접근 권한이 널널할 경우 보안상 취약하다고 보고 SSH가 사용하지 않음
본인만 접근 가능해야 안전하다는 정책
요약하면,
1.공개 키를 authorized_keys에 넣고,
2.student 계정 본인만 소유하도록 하며
3.다른 누구도 건드릴 수 없게 권한을 잠그는 것
- 개인키(mykey.pem) 파일을 학생들에게 배포
Slack을 통해 개인키 파일 제공 예정
4. 학생 노트북(클라이언트)에서 서버에 접속
- 서버에게 전달받은 개인키의 권한 변경
# 권한을 r-------- 로 변경
chmod 400 mykey.pem→ 읽기 권한만 소유자(owner)에게 부여, 쓰기/실행은 불가, 다른 사용자도 접근 불가
권한을 최소화해서 오직 나만 읽을 수 있도록 만들어야 안전하기 때문
- 서버 노트북에 접속 시도
# 실제 IP 주소 확인해서 접속하기
ssh -i mykey.pem student@{192.168.0.50}
# {IP 주소}, {} 기호는 작성 xSSH 포트가 열린 22번은 well-known 포트
- 인증 메시지 확인
The authenticity of host ‘192.168.0.50 (192.168.0.50)’ can’t be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
→ yes 입력 후 엔터