내 Linux Devlog: WSL에서 Cloud까지 (1~5일)
Source: Dev.to
Linux 서버 관리 여정을 시작하는 것은 손전등 하나만 들고 어두운 방에 던져진 느낌과 같습니다. 강력한 기계가 그 안에 있다는 건 알지만, 한 번에 볼 수 있는 빛은 작은 원 하나뿐이죠.
TL;DR – 저는 Linux Upskill Challenge에 도전해서 단순히 “Linux를 사용하는” 수준을 넘어 실제로 관리해 보려 합니다. 마법에 의존하지 않고 풀‑스택 및 AI 프로젝트를 위한 원격 서버를 직접 다루고 싶어요.
제 환경: 로컬에서는 WSL, Google Cloud Platform (GCP) 가상 머신에 연결합니다.
아래는 제가 첫 주에 배운 모든 내용입니다.
Day 1 – “프런트 도어”
문제
공용 인터넷은 근본적으로 안전하지 않습니다. 데이터가 평문으로 전송되기 때문에 같은 네트워크에 있는 해커가 비밀번호와 기타 민감한 정보를 엿들을 수 있습니다.
해결책 – SSH
Secure Shell (SSH)은 내 로컬 머신과 원격 서버 사이에 암호화된 터널을 만듭니다. 누군가 트래픽을 가로채더라도 의미 없는 문자열처럼 보입니다.
키 기반 인증 vs. 비밀번호
- 비밀번호 – 무차별 대입 공격에 취약합니다.
- 키 쌍(비대칭 암호화) – 훨씬 더 안전합니다.
| 구성 요소 | 역할 |
|---|---|
| 공개 키 | 서버에 저장됩니다(“잠금” 역할). |
| 개인 키 | 내 로컬 머신에 저장됩니다(“물리적 열쇠” 역할). |
서버는 챌린지를 보내고, 이는 개인 키로만 해결할 수 있습니다. 개인 키가 없으면 접근할 수 없습니다.
# WSL을 통해 연결하고, -i 플래그로 개인 키를 지정
ssh -i ~/.ssh/id_ed25519 gcp-tyronemt@34.9.x.x
“첫 5 분” 상태 점검
| 명령어 | 표시 내용 |
|---|---|
uptime | 시스템 가동 시간 + 평균 부하 |
free -m | 사용 가능한 RAM(0이면 애플리케이션이 충돌) |
df -h | 디스크 사용량(로그가 드라이브를 가득 채우지 않았는지 확인) |
htop / top | 실시간 CPU 사용량(리눅스 작업 관리자) |
uname -a | 커널 버전 및 시스템 아키텍처 |
핵심 요약 (Day 1) – 원격 연결 시 SSH는 절대 선택 사항이 아니며, 키 쌍은 비밀번호보다 훨씬 안전합니다. 로그인 직후에는 free, df 등으로 간단한 상태 점검을 반드시 수행하세요.
Day 2 – 매뉴얼 읽기 및 파일시스템 탐색
매뉴얼을 효율적으로 읽는 방법
man <command>– 전체 레퍼런스 (예:man ls).help <builtin>– 내장 쉘 명령(cd,export, …)을 위한 도움말.type <command>를 실행해 내장 명령인지 확인하세요.tldr <command>– 간결하고 예제가 풍부한 치트 시트 (설치:sudo apt install tldr).apropos "<keyword>"– 설명으로 명령을 검색.
트리 탐색
| Command | Description |
|---|---|
pwd | 현재 작업 디렉터리 출력 – 현재 위치를 보여줍니다. |
cd /var/log | 절대 경로 (/부터 시작). |
cd ~ or cd | 홈 디렉터리로 이동. |
cd - | 이전 디렉터리로 돌아갑니다. |
ls -ltra | 긴 형식, 시간 정렬, 역순, 숨김 파일 포함. |
파일 조작
mkdir <folder> # Create a folder
touch <file> # Create an empty file
rm -r <folder> # Delete a folder and everything inside it
# Safer interactive delete:
rm -ri <folder>
키 포인트 (Day 2) – 매뉴얼을 읽는 방법을 알면 추측을 줄일 수 있고, 모든 것이 루트(/)에서 분기된다는 것을 이해하면 탐색이 훨씬 쉬워집니다.
Day 3 – 권한 관리
누가 권한을 가지고 있나요?
| Role | Description |
|---|---|
| root | 전체 권한을 가진 슈퍼유저 – 작은 오타 하나로 서버가 파괴될 수 있습니다. 절대 root로 직접 로그인하지 마세요. |
| sudoers | sudo를 통해 슈퍼 권한을 부여받은 일반 사용자. |
| regular users | 자신의 홈 디렉터리(~)에만 제한됩니다. 전역적인 변경(예: 패키지 설치)은 할 수 없습니다. |
sudo란?
- root 자체가 아니라 – 실수를 방지하기 위한 감사 레이어 역할을 합니다.
- 예시:
cat /etc/shadow→ Permission denied;sudo cat /etc/shadow는 작동합니다.
유용한 sudo 명령
# Become root temporarily (full root shell)
sudo -i
# See who logged in
last
# See failed login attempts (e.g., bots)
sudo lastb
전역 관리 작업
- Hostname
hostnamectl # Show current hostname sudo hostnamectl set-hostname <new-name> # On cloud providers, ensure persistence: # Edit /etc/cloud/cloud.cfg → preserve_hostname: true - Timezone
timedatectl # Show current timezone sudo timedatectl set-timezone <Region/City> # Correct timezone = correct timestamps in logs.
핵심 요약 (Day 3) – sudo는 안전망입니다. 절대 root로 직접 로그인하지 말고, 디버깅 시 로그가 의미 있게 만들려면 항상 올바른 시간대를 설정하세요.
Day 4 – 패키지 관리 및 파일시스템 계층
APT (Advanced Package Tool)
- Sources list –
/etc/apt/sources.list.d/ubuntu.sources - Search –
apt search "<keyword>" - Install –
sudo apt install <package>(설치가 시스템 전체에 영향을 미치므로sudo가 필요합니다).
Filesystem Hierarchy (see man hier)
/
├─ /root – root 사용자 홈 폴더
├─ /home – 일반 사용자 홈 폴더
├─ /sbin – 시스템 바이너리(관리자 명령, root 전용)
├─ /etc – 전역 설정 파일
└─ /var
└─ /log – 시스템 및 보안 로그
Key Config & Log Files (all plain text!)
| Path | Purpose |
|---|---|
/etc/passwd | 사용자 계정 정보 |
/etc/ssh/sshd_config | SSH 데몬 설정 |
/var/log/auth.log | 모든 sudo 사용 및 로그인 기록 |
I also installed Midnight Commander (sudo apt install mc), a visual, text‑based file manager. Launch with mc; use F3 to view files and F10 to exit.
Key Takeaway (Day 4) – Linux는 본질적으로 텍스트 파일들의 집합입니다. 설정을 변경하려면 /etc 아래 파일을 편집하고, 문제를 해결하려면 /var/log 아래 로그를 확인하십시오.
Day 5 – (곧 공개)
다음 글을 기대해 주세요. 그곳에서 네트워킹, 방화벽, 그리고 Ansible을 활용한 배포 자동화에 대해 다룰 예정입니다.
텍스트 파일을 터미널에서 직접 관리하는 것은 필수 스킬
보기 및 편집
lessvsmore– 큰 파일을 읽을 때는less를 사용합니다. 위아래로 스크롤하고 텍스트를 검색할 수 있지만,more는 훨씬 제한적입니다.- Dotfiles – 점(.)으로 시작하는 숨김 파일(예:
.bashrc). 사용자 설정을 담고 있습니다.ls -a로 확인할 수 있습니다. nano– 간단하고 기본 제공되는 터미널 텍스트 편집기입니다.
CLI에서 더 빠르게 작업하기
- Tab Completion – 파일이나 폴더 이름을 자동 완성하려면 Tab 키를 누릅니다. 일치하는 항목이 여러 개이면 두 번 눌러 선택합니다.
- Command History (
history) – 지금까지 입력한 모든 명령을 보여줍니다. - Execution by Number –
를 입력하면 히스토리에서 해당 번호의 명령을 즉시 다시 실행합니다. - Reverse Search (
Ctrl+R) – 과거 명령을 입력하기 시작하면 셸이 나머지를 자동으로 제안합니다. 시간 절약에 큰 도움이 됩니다.
고급 작업 공간
- Bash shell – 많은 시스템에서 기본 인터랙티브 쉘입니다.
- Custom Prompts –
PS1변수를 편집하여 프롬프트 모양을 바꿀 수 있습니다. - Alternative Shells –
zsh또는fish는 더 나은 자동 제안과 풍부한 자동 완성을 제공합니다. - Multiplexers (
tmux/screen) – 하나의 터미널 창을 여러 패널로 나누고, SSH 연결이 끊겨도 백그라운드에서 스크립트를 계속 실행할 수 있습니다.
핵심 요점 (Day 5)
모든 것을 손으로 직접 입력하지 마세요. Tab 자동 완성을 마스터하고,
Ctrl+R로 이전 명령을 찾으며, 로그 파일을 읽을 때는 항상less를 사용하세요.