[OS-009][중급] SSH 키로 안전하게 원격 접속하기 > IT 기술 공유

본문 바로가기
사이트 내 전체검색

IT 기술 공유

[OS-009][중급] SSH 키로 안전하게 원격 접속하기

페이지 정보

profile_image
작성자 기술팀장
댓글 0건 조회 95회 작성일 26-09-04 04:35

본문

[이번 수업]

SSH(Secure Shell)는 신뢰하기 어려운 네트워크를 지나 다른 컴퓨터에 안전하게 접속하는 규약입니다. 로컬에서 키 쌍과 지문을 만들며 서버 확인과 사용자 인증의 차이를 배웁니다.

[선수지식]

OS-003의 파일 권한과 OS-005의 사용자·sudo 개념을 알면 좋습니다. 터미널에서 명령 한 줄을 실행할 수 있으면 실습할 수 있습니다.

[학습목표]

1. 호스트 키와 사용자 키의 역할을 구분합니다.
2. 암호문구로 보호된 Ed25519 키를 로컬에서 생성합니다.
3. 서버 지문 확인, 개인 키 보관과 폐기 수칙을 설명합니다.

[핵심개념]

SSH 연결에는 두 종류의 신원 확인이 있습니다. 서버는 호스트 키로 자신이 접속하려던 서버임을 증명합니다. 클라이언트가 보여 주는 지문을 관리자가 별도 채널로 알려 준 값과 비교한 뒤 승인하며, 승인한 키는 known_hosts에 기록됩니다.

사용자는 사용자 키로 자신을 증명할 수 있습니다. 공개 키는 서버의 authorized_keys에 두어도 되지만 개인 키는 내 장치 밖으로 보내지 않습니다. 클라이언트가 개인 키로 서명하면 서버가 등록된 공개 키로 검증하므로 개인 키 자체는 전송되지 않습니다.

사람·장치·용도별로 키를 나누고 개인 키에는 고유하고 긴 암호문구를 설정합니다. ssh-agent는 잠금 해제한 키를 메모리에서 사용하도록 돕습니다. 장치를 잃거나 담당자가 바뀌면 authorized_keys에서 해당 공개 키를 제거하고 교체합니다.

[따라하기]

네트워크에 접속하지 않고 현재 폴더에 일회용 키 두 개를 만듭니다. macOS와 Linux 터미널에서 실행합니다.

```sh
mkdir -p os009-ssh-demo
ssh-keygen -t ed25519 -a 100 -C local-training -f ./os009-ssh-demo/id_ed25519
ssh-keygen -lf ./os009-ssh-demo/id_ed25519.pub
ls -la ./os009-ssh-demo
```

암호문구를 두 번 묻습니다. 글자가 보이지 않아도 입력되고 있으니 이 실습만의 긴 문구를 사용합니다. 지문은 `256 SHA256:... local-training (ED25519)` 형태입니다. `.pub` 파일은 공개 키이고 확장자가 없는 파일은 개인 키입니다. macOS·Linux에서는 필요할 때 `chmod 600 ./os009-ssh-demo/id_ed25519`로 개인 키를 소유자만 읽고 쓰게 합니다.

Windows 10·11의 PowerShell에서는 OpenSSH 클라이언트가 설치된 상태에서 실행합니다.

```powershell
New-Item -ItemType Directory -Force .\os009-ssh-demo
ssh-keygen -t ed25519 -a 100 -C local-training -f .\os009-ssh-demo\id_ed25519
ssh-keygen -lf .\os009-ssh-demo\id_ed25519.pub
Get-ChildItem .\os009-ssh-demo
```

확인 후 테스트 키만 지웁니다. macOS·Linux는 `rm ./os009-ssh-demo/id_ed25519 ./os009-ssh-demo/id_ed25519.pub && rmdir ./os009-ssh-demo`, PowerShell은 `Remove-Item .\os009-ssh-demo\id_ed25519, .\os009-ssh-demo\id_ed25519.pub; Remove-Item .\os009-ssh-demo`입니다.

[흔한 실수]

공개 키와 개인 키를 반대로 전달하거나 개인 키를 함께 쓰면 추적과 폐기가 어려워집니다. 처음 보는 호스트 지문을 확인 없이 승인하지 않습니다. 호스트 키 변경은 정상 교체일 수도, 중간자 공격 신호일 수도 있으므로 known_hosts부터 지우지 말고 관리자에게 새 지문을 확인합니다. 키 접속을 시험하기 전에 비밀번호 로그인을 끄면 서버에서 잠길 수 있습니다.

[보안 주의]

개인 키와 암호문구를 메일, 메신저, 저장소, 명령 기록에 남기지 않습니다. `StrictHostKeyChecking=no`로 검사를 끄지 말고 지문은 다른 신뢰 채널에서 확인합니다. Ed25519는 현대 OpenSSH의 실용적인 기본 선택이지만 대상 시스템과 조직 정책의 호환성을 먼저 확인합니다. 연습은 본인 소유의 로컬 장치나 허가된 격리 환경에서만 진행합니다.

[직접 해볼 과제]

테스트 키를 하나 더 만들어 두 공개 키의 SHA256 지문을 비교하세요. 각 파일을 공개 가능, 비밀 유지로 분류하고 분실 시 서버에서 제거할 공개 키 한 줄을 식별한 뒤 테스트 파일을 삭제합니다.

[확인문제]

1. 호스트 키와 사용자 키는 각각 누구의 신원을 확인하나요?
2. 서버에 등록해도 되는 파일과 절대 전달하면 안 되는 파일은 무엇인가요?
3. 호스트 키 변경 경고가 나오면 known_hosts를 바로 지우면 안 되는 이유는 무엇인가요?

[다음 학습]

OS-010에서는 systemd와 launchd로 프로그램을 부팅 시 안전하게 시작하고 상태를 확인하는 방법을 배웁니다.

[공식 참고 자료]

- SSH 프로토콜 구조 RFC 4251: https://www.rfc-editor.org/rfc/rfc4251.html
- SSH 사용자 인증 RFC 4252: https://www.rfc-editor.org/rfc/rfc4252.html
- SSH Ed25519 키 RFC 8709: https://www.rfc-editor.org/rfc/rfc8709.html
- OpenBSD ssh 매뉴얼: https://man.openbsd.org/ssh
- OpenBSD ssh-keygen 매뉴얼: https://man.openbsd.org/ssh-keygen
- Microsoft OpenSSH 키 관리: https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_keymanagement

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

회사명 : 회사명 / 대표 : 대표자명
주소 : OO도 OO시 OO구 OO동 123-45
사업자 등록번호 : 123-45-67890
전화 : 02-123-4567 팩스 : 02-123-4568
통신판매업신고번호 : 제 OO구 - 123호
개인정보관리책임자 : 정보책임자명

접속자집계

오늘
4,590
어제
6,862
최대
16,772
전체
770,541
Copyright © 소유하신 도메인. All rights reserved.