LabHub

SSH 와 파일 전송 · 키 기반 인증 · 실습

키 인증 세우기

LabHub 에서 이어서 보기

목표

SSH 키를 만들어 권한을 맞추고, authorized_keys 에 등록해 실제로 접속합니다. 그리고 command= 제약이 붙은 키가 정말 그 명령만 실행하는지 확인합니다.

왜 중요한가

공개키 인증 실패의 대부분은 암호학이 아니라 파일 권한 문제입니다. ~/.ssh 가 group-writable 이면 sshd 는 키를 조용히 거부하고 비밀번호를 묻습니다 — 다른 사용자가 authorized_keys 에 자기 키를 넣을 수 있기 때문입니다. 즉 권한이 곧 인증 정책입니다. 그리고 command= 제약은 배포 자동화에서 사실상 필수입니다. CI 서버의 키가 유출돼도 그 키로는 지정된 명령 하나밖에 못 돌게 만들 수 있습니다.

이 실습 환경에는 127.0.0.1:2222 에 진짜 sshd 가 떠 있습니다. 같은 파드 안이지만 SSH 관점에서는 완전한 두 번째 서버입니다.

단계

1. /root/.ssh/id_labhubed25519 키 쌍을 패스프레이즈 없이 만드세요.
2. /root/.ssh 는 700, /root/.ssh/id_labhub 는 600, /root/.ssh/id_labhub.pub 는 644 로 권한을 맞추세요.
3. 방금 만든 공개키를 /root/.ssh/authorized_keys 에 추가하세요. 파일 권한은 600 이어야 합니다.
4. ssh-keyscan 으로 127.0.0.12222 포트 호스트 키를 가져와 /root/.ssh/known_hosts 에 등록하세요.
5. 그 키로 root@127.0.0.1:2222 에 접속해 원격에서 hostname 을 실행하고, 결과를 /root/ssh/connect.txt 로 저장하세요.
6. /root/.ssh/configHost lab2 블록을 만드세요. HostName 127.0.0.1, Port 2222, User root, IdentityFile /root/.ssh/id_labhub, IdentitiesOnly yes 다섯 줄이 들어가야 합니다. 그리고 ssh lab2 hostname 이 성공하는 것을 확인해 /root/ssh/alias.txt 로 저장하세요.
7. /root/.ssh/id_restricted 에 두 번째 ed25519 키를 만들고, 그 공개키를 authorized_keys 에 추가하되 줄 맨 앞에 restrict,command="/bin/hostname" 옵션을 붙이세요. 그 키로 ssh -i /root/.ssh/id_restricted -p 2222 root@127.0.0.1 id 를 실행하면 id 가 아니라 hostname 결과가 나와야 합니다. 그 출력을 /root/ssh/restricted.txt 로 저장하세요.
8. /root/ssh/keys.txt 를 만드세요. authorized_keys 에 등록된 모든 키의 지문 목록을 담아야 하고, 최소 2줄이어야 합니다.

참고

단계 8개

  1. 키 쌍 만들기
  2. 권한 맞추기
  3. 공개키 등록
  4. 호스트 키 등록
  5. 키로 접속하기
  6. 클라이언트 설정으로 별칭 만들기
  7. 명령 제한 키 만들기
  8. 등록된 키 감사