Day 7 — SSH란? 서버 접속 해보기

짱효·2026년 4월 25일

📚 2년차 프론트엔드 개발자의 12주 기초 챌린지
Week 2: 배포 환경 이해하기 (Day 6-10)


🍳 레스토랑 비유로 시작하기

어제 서버가 "멀리 있는, 24시간 켜져 있는 컴퓨터"라는 걸 배웠다.
그런데 그 컴퓨터가 회사 서버실에 있거나 AWS 데이터센터에 있으면, 어떻게 조작하나?

주방(서버)은 다른 건물에 있다.
직접 가지 않고 관리하려면? 주방에 보안 전화선을 깔아서, 전화로 지시를 내린다.

  • 전화를 걸려면 주방 전화번호(IP 주소)를 알아야 하고
  • 아무나 전화하면 안 되니까 암호화된 비밀 통화(SSH 암호화)를 쓰고
  • 통화가 연결되면 셰프에게 음성으로 명령(터미널 명령어)을 내린다

이게 바로 SSH다!


1. SSH란?

SSH (Secure Shell) = 멀리 있는 컴퓨터에 안전하게 접속해서 명령어를 입력하는 방법

  • Secure — 통신 내용이 암호화되어 있어서, 중간에 누가 엿봐도 내용을 알 수 없다
  • Shell — 터미널(명령어 입력 창)을 뜻한다

SSH로 서버에 접속하면 내 컴퓨터의 터미널에서 타이핑하지만, 실제로는 서버 컴퓨터에서 실행된다.
내 손은 여기 있지만, 움직이는 건 저쪽 로봇(서버)인 원격 조종이다.


2. SSH 접속의 기본 구조

ssh 사용자이름@서버IP주소

예시:

ssh ubuntu@13.125.200.50
부분의미레스토랑 비유
sshSSH 프로그램 실행전화기를 든다
ubuntu서버에서 사용할 계정 이름"주방장 김씨 바꿔주세요"
@~에 접속한다~에게 전화한다
13.125.200.50서버의 IP 주소주방 전화번호

접속 성공하면 터미널 프롬프트가 바뀐다:

# 접속 전 (내 컴퓨터)
myname@my-macbook ~ %

# 접속 후 (서버 컴퓨터)
ubuntu@ip-13-125-200-50:~$

이 순간부터 치는 모든 명령어는 서버 컴퓨터에서 실행된다!


3. 인증 방식: 비밀번호 vs SSH 키(Key)

🔑 방법 1: 비밀번호 방식

ssh ubuntu@13.125.200.50
# → "Password:" 라고 물어봄 → 비밀번호 입력

간단하지만 비밀번호 유출 위험 + 매번 입력해야 하는 번거로움.

🔐 방법 2: SSH 키 방식 (실무 표준!)

비밀번호 대신 열쇠 파일을 사용한다.

ssh -i my-key.pem ubuntu@13.125.200.50

자물쇠와 열쇠 원리:

이름위치역할
🔒공개 키 (Public Key)서버에 설치자물쇠
🔑개인 키 (Private Key)내 컴퓨터에만 보관열쇠

서버에 달린 자물쇠에 맞는 열쇠를 가진 사람만 접속 가능.

⚠️ 개인 키는 절대 Git에 올리면 안 된다!
서버가 해킹당해도 공개 키(자물쇠)만 있으니 안전하지만,
개인 키가 유출되면 그 자물쇠가 달린 모든 서버에 접속할 수 있게 된다.


4. 실무에서의 SSH 흐름 (내 프로젝트 기준)

1. 로컬에서 코드 작성 + yarn build
       ↓
2. SSH로 서버에 접속
   ssh -i my-key.pem ubuntu@회사서버IP
       ↓
3. 서버에서 코드 가져오기
   git pull origin main
       ↓
4. 서버에서 빌드 + 실행
   yarn build
   yarn start -p 5008
       ↓
5. 사용자가 사이트에 접속 가능!

포트 확인도 가능:

# 서버에 접속한 상태에서
lsof -i :5008    # 5008 포트에서 뭐가 돌아가나?
lsof -i :5007    # 5007 포트에서 뭐가 돌아가나?

5. SSH 접속 후 자주 쓰는 명령어

pwd              # 지금 어디 폴더에 있는지 확인
ls -la           # 폴더 안에 뭐가 있나 보기
cd /home/ubuntu/my-project   # 폴더 이동
cat .env         # 파일 내용 보기
ps aux | grep node   # 현재 실행 중인 프로세스 확인
exit             # 서버 접속 종료
명령어레스토랑 비유
pwd"지금 주방 몇 층이야?"
ls -la"거기 뭐가 있어?"
cd"냉장고 쪽으로 가봐"
cat .env"레시피 비밀노트 읽어봐"
ps aux \| grep node"지금 가동 중인 화구가 뭐야?"
exit"전화 끊을게"

6. SCP — 서버로 파일 보내기

SSH가 "접속해서 명령하는 것"이라면, SCP는 "파일을 보내거나 가져오는 것"이다.

# 내 컴퓨터 → 서버로 파일 보내기
scp -i my-key.pem ./build.zip ubuntu@13.125.200.50:/home/ubuntu/

# 서버 → 내 컴퓨터로 파일 가져오기
scp -i my-key.pem ubuntu@13.125.200.50:/home/ubuntu/error.log ./

SSH는 전화(음성 명령), SCP는 택배(파일 전송).
같은 보안 통로를 쓰지만, 하나는 명령을, 하나는 물건을 보낸다.


7. SSH 끊으면 서버가 죽는다?!

SSH로 접속해서 yarn start를 실행한 뒤, 터미널을 닫으면 사이트가 죽는다!

서버 컴퓨터 자체는 24시간 켜져 있지만, yarn startSSH 세션에 묶여 있는 프로세스이기 때문이다.

  • SSH 접속 = 주방에 전화 연결
  • yarn start = "불 켜고 요리 시작해" 지시
  • 전화를 끊으면(SSH 종료) = 통화 중에 시킨 일 전부 중단

SSH로 실행한 프로세스는 그 SSH 세션의 "자식 프로세스"다.
부모(SSH)가 죽으면 자식(yarn start)도 같이 죽는다.

🔮 이 문제를 해결하는 게 바로 pm2 (프로세스 매니저) → Day 8에서!


📌 오늘의 핵심 정리

  1. SSH — 멀리 있는 서버에 안전하게 접속해서 명령어를 입력하는 방법
  2. 접속 형태ssh 사용자@IP주소 또는 ssh -i 키파일 사용자@IP주소
  3. 인증 방식 — 비밀번호보다 SSH 키 방식이 실무 표준
  4. SSH 키 원리 — 공개 키(자물쇠)는 서버에, 개인 키(열쇠)는 내 컴퓨터에
  5. SCP — SSH와 같은 보안 통로로 파일을 전송하는 방법
  6. SSH 끊으면 프로세스도 죽는다 — 이 문제를 해결하는 게 pm2
  7. 실무 흐름 — SSH 접속 → git pull → yarn build → yarn start

🔮 다음 시간 (Day 8): pm2 / 프로세스 매니저 개념
"전화를 끊어도 셰프가 계속 요리하게 만드는 시스템"

profile
✨🌏확장해 나가는 프론트엔드 개발자입니다✏️

0개의 댓글