13강 / 20강

사용자와 SSH — 서버에 사람 들이기

계정을 만들고, 열쇠로 문을 열고

사용자와 SSH — 서버에 사람 들이기
서버는 여러 사람이 함께 씁니다. 누구에게 어떤 열쇠를 줄지 정해야 합니다.

쇼핑몰이 커져서 친구 민준이가 함께 관리하게 되었습니다. 민준이에게 내 계정 비밀번호를 알려 줄까요? 절대 안 됩니다.

이유는 세 가지입니다.
① 누가 무엇을 했는지 구분할 수 없습니다
② 민준이에게 필요 없는 권한까지 전부 주게 됩니다
③ 민준이가 그만두면 내 비밀번호를 바꿔야 합니다

그래서 사람마다 계정을 따로 만듭니다.

이 서버를 쓰는 모든 계정 — 사람만 있는 게 아닙니다
bash 내 가상 Ubuntu 서버에서 실행

한 줄을 뜯어봅시다. jit:x:1000:1000:School Admin:/home/jit:/bin/bash

jit계정 이름로그인할 때 쓰는 것
x비밀번호 자리진짜는 /etc/shadow 에 (root만 읽음)
1000UID0 = root · 1000부터 사람
/home/jit홈 디렉터리로그인하면 여기서 시작
/bin/bash기본 셸nologin 이면 로그인 불가

www-data 를 보세요. 셸이 /usr/sbin/nologin 입니다. 사람이 아니라 nginx 가 쓰는 계정이라 로그인할 필요가 없거든요. 누가 훔쳐도 로그인할 수 없습니다. 이것도 보안입니다.

계정 만들기

계정 · 그룹 · 홈 디렉터리가 한 번에 만들어집니다
bash 내 가상 Ubuntu 서버에서 실행

그룹 — 여러 사람에게 같은 권한을 한 번에

민준이도 sudo 를 쓸 수 있어야 합니다. 사용자 하나하나에 권한을 주는 대신, sudo 그룹에 넣으면 됩니다.

-aG 는 append to Group — 기존 그룹은 그대로 두고 추가
bash 내 가상 Ubuntu 서버에서 실행

🎮 권한 매트릭스

사용자와 파일을 바꿔 가며 누가 무엇을 할 수 있는지 확인해 보세요. 7강의 rwx 와 이번 강의 그룹이 어떻게 맞물리는지 보입니다.

권한 매트릭스 — 사용자 × 파일, 누가 무엇을 할 수 있나
불러오는 중…

SSH — 멀리서 서버에 들어가기

서버는 대개 다른 도시의 데이터센터에 있습니다. 거기까지 갈 수는 없으니 인터넷으로 터미널을 연결합니다. 그게 SSH예요.

ssh [email protected]

이 한 줄이면 지구 반대편 서버의 프롬프트가 내 화면에 뜹니다. 지금까지 배운 모든 명령을 그대로 쓸 수 있고요.

이 실습 서버는 바깥으로 나갈 수 없지만, 쓰는 법은 이렇습니다
bash 내 가상 Ubuntu 서버에서 실행

비밀번호 대신 열쇠를 쓰는 이유

🔑 비밀번호 방식
사람이 외울 만큼 짧다
로봇이 하루에 수만 번 시도한다
언젠가 뚫린다
아래 로그에서 직접 보게 됩니다
🗝️ 공개키 방식
내 컴퓨터에 개인키 (절대 안 나감)
서버에 공개키 (알려져도 안전)
사실상 못 뚫는다
서버 관리자의 기본 👍
지금 이 순간에도 누군가 문을 두드리고 있습니다
bash 내 가상 Ubuntu 서버에서 실행

45.148.10.72 가 admin, root 로 계속 시도하고 있죠? 전 세계 서버가 매일 겪는 일입니다. 비밀번호 로그인을 꺼 버리면 이 시도는 전부 무의미해집니다.

이 서버는 이미 안전하게 설정되어 있습니다
bash 내 가상 Ubuntu 서버에서 실행
PermitRootLogin noroot 직접 로그인 금지일반 계정 → sudo 로만
PasswordAuthentication no비밀번호 로그인 금지열쇠만 받겠다
PubkeyAuthentication yes공개키 허용열쇠 방식 켜기
🤔 확인 문제
함께 일하는 사람에게 서버 접근을 줄 때 가장 올바른 방법은?
🤔 확인 문제
www-data 계정의 셸이 /usr/sbin/nologin 인 이유는?
🤔 확인 문제
SSH 에서 비밀번호 대신 공개키 방식을 권하는 가장 큰 이유는?