내 Linux Devlog: WSL에서 클라우드까지 (1~5일)
I’m happy to translate the article for you, but I’ll need the full text you’d like translated. Could you please paste the content (or the portion you want translated) here? I’ll keep the source line, formatting, markdown, and any code blocks exactly as they are while translating the rest into Korean.
TL;DR
저는 Linux Upskill Challenge에 참여해서 단순히 “리눅스를 사용하는” 수준을 넘어 실제로 관리할 수 있게 되었습니다. 이제 마법처럼 의존하지 않고 풀‑스택 및 AI 프로젝트를 위한 자체 원격 서버를 직접 다루고 싶습니다.
설정: 로컬에서는 WSL을 사용하고, Google Cloud Platform (GCP) 가상 머신에 연결합니다.
아래는 제가 첫 주에 배운 모든 내용입니다.
Day 1 – The “Front Door”
The Problem
공용 인터넷은 근본적으로 안전하지 않습니다. 데이터가 평문으로 전송되기 때문에 같은 네트워크에 있는 해커가 비밀번호와 기타 민감한 정보를 엿들을 수 있습니다.
The Solution – SSH
Secure Shell (SSH)은 내 로컬 머신과 원격 서버 사이에 암호화된 터널을 만듭니다. 누군가 트래픽을 가로채더라도 의미 없는 문자열처럼 보입니다.
Key‑Based Authentication vs. Passwords
- Passwords – 무차별 대입 공격에 취약합니다.
- Key pairs (asymmetric cryptography) – 훨씬 더 안전합니다.
| Component | Role |
|---|---|
| Public key | 서버에 저장됩니다(“잠금”). |
| Private key | 로컬 머신에 저장됩니다(“물리적 키”). |
서버는 챌린지를 보내고, 이는 오직 개인 키만이 풀 수 있습니다. 개인 키가 없으면 접근할 수 없습니다.
# Connecting via WSL, using the -i flag to point to my private key
ssh -i ~/.ssh/id_ed25519 gcp-tyronemt@34.9.x.x
The “First 5 Minutes” Health Check
| Command | What it shows |
|---|---|
uptime | 시스템이 얼마나 오래 실행됐는지와 평균 부하량을 보여줍니다 |
free -m | 사용 가능한 RAM(0이면 애플리케이션이 충돌합니다) |
df -h | 디스크 사용량(로그가 드라이브를 가득 채우지 않았는지 확인) |
htop / top | 실시간 CPU 사용량(Linux 작업 관리자) |
uname -a | 커널 버전 및 시스템 아키텍처를 표시합니다 |
Key Takeaway (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 ~ 또는 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 명령
# 일시적으로 root가 되기 (전체 root 셸)
sudo -i
# 누가 로그인했는지 보기
last
# 실패한 로그인 시도 보기 (예: 봇)
sudo lastb
전역 관리 작업
- Hostname
hostnamectl # 현재 호스트명 표시 sudo hostnamectl set-hostname <new-name> # 클라우드 제공업체에서는 지속성을 보장해야 함: # /etc/cloud/cloud.cfg 편집 → preserve_hostname: true - Timezone
timedatectl # 현재 시간대 표시 sudo timedatectl set-timezone <Region/City> # 올바른 시간대 = 로그의 정확한 타임스탬프.
핵심 요점 (Day 3) – sudo는 안전망입니다. 절대 직접 root로 로그인하지 말고, 디버깅 시 로그가 의미 있게 유지되도록 항상 올바른 시간대를 설정하세요.
Source: …
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 – 시스템 및 보안 로그
주요 설정 및 로그 파일 (모두 일반 텍스트!)
| 경로 | 목적 |
|---|---|
/etc/passwd | 사용자 계정 정보 |
/etc/ssh/sshd_config | SSH 데몬 설정 |
/var/log/auth.log | sudo 사용 및 로그인 기록 모두 |
또한 Midnight Commander (sudo apt install mc)를 설치했습니다. 시각적인 텍스트 기반 파일 관리자이며, mc로 실행하고 F3으로 파일을 보고 F10으로 종료합니다.
핵심 정리 (Day 4) – Linux는 본질적으로 텍스트 파일들의 모음입니다. 설정을 변경하려면 /etc 아래의 파일을 편집하고, 문제를 해결하려면 /var/log 아래의 로그를 확인하세요.
Day 5 – (곧 공개)
다음 글을 기대해 주세요. 네트워킹, 방화벽, 그리고 Ansible을 이용한 배포 자동화에 대해 다룰 예정입니다.
터미널에서 텍스트 파일을 직접 관리하는 것은 필수 기술
보기 및 편집
lessvsmore– 큰 파일을 읽을 때는less를 사용합니다. 위아래로 스크롤하고 텍스트를 검색할 수 있지만,more는 훨씬 제한적입니다.- Dotfiles – 점(
.)으로 시작하는 숨김 파일(예:.bashrc). 사용자 설정을 담고 있습니다.ls -a를 사용하면 볼 수 있습니다. nano– 간단하고 기본 제공되는 터미널 텍스트 편집기.
CLI에서 더 빠르게 작업하기
- 탭 자동완성 – 파일이나 폴더 이름을 자동 완성하려면 Tab 키를 누릅니다. 일치하는 항목이 여러 개면 두 번 눌러 보세요.
- 명령 기록 (
history) – 지금까지 입력한 모든 명령을 보여줍니다. - 번호로 실행 –
를 입력하면 기록에서 해당 명령을 즉시 다시 실행합니다. - 역방향 검색 (
Ctrl+R) – 과거 명령을 입력하기 시작하면 셸이 자동으로 나머지를 제안합니다. 큰 시간 절약이 됩니다.
고급 작업 공간
- Bash 쉘 – 많은 시스템에서 기본 인터랙티브 쉘입니다.
- 맞춤 프롬프트 –
PS1변수를 편집하여 프롬프트 모양을 바꿉니다. - 대체 쉘 –
zsh또는fish는 더 나은 자동 제안과 풍부한 자동완성을 제공합니다. - 멀티플렉서 (
tmux/screen) – 하나의 터미널 창을 여러 패널로 나누고, SSH 연결이 끊겨도 백그라운드에서 스크립트를 계속 실행할 수 있습니다.
핵심 요점 (Day 5)
모든 것을 수동으로 입력하지 마세요. 탭 자동완성을 마스터하고,Ctrl+R로 이전 명령을 찾아 사용하며, 로그 파일을 읽을 때는 항상less를 사용하세요.