SSH, SFTP 간단히 이해하기

JEONGYUJIN·2025년 11월 12일

khuda8nlp

목록 보기
1/3
post-thumbnail

쿠다 N년차...
GPU랑 CPU가 대체 왜 다르고 왜 필요하지 모르던 시기를 지나서 학교 서버에서 학습을 시키는 법을 알려주는 위치까지 발전...? 했는데

이제 약간 알려주기도 귀찮아서 정리함.

일단 서버라는 개념은 대충 알고 있을 것임

https://brunch.co.kr/@imagineerjy/18
진짜 모르면 진짜 여기 추천

암튼 서버에 왜 연결해야하고 그게 좋다는데 어케 쓰노,, 하는 사람들을 위해 간단히 정리해보겠습니다.


SSH와 SFTP

일단 SSH란?

원격 서버 접속이라는 것은 다른 컴퓨터에 있는 저장장치나 컴퓨팅 리소스에 네트워크를 통해 접속한다는 뜻

SSH는 Secure Shell의 약자로, 원격 서버에 암호화된 네트워크 연결을 통해 안전하게 접속하는 프로토콜입니다. SSH를 통해 원격 서버의 셸에 직접 접속하여 명령어를 실행하고, 서버를 제어할 수 있습니다.

안전한 원격 접속의 개념 서버에 SSH로 접속하면, 마치 내 컴퓨터에서 직접 작업하는 것처럼 서버의 자원을 활용할 수 있습니다. 모든 통신은 암호화되어 있어 보안 위협으로부터 데이터를 보호합니다.
실제 개발 환경에서는 SSH로 서버에 접속하여 작업하고, SFTP로 파일을 주고받는 패턴을 사용합니다.

Public Key & Private Key

원래 굳이 설명 안하려고 했는데 쓰다보면 key랑 password랑 헷갈려하시길래
SSH는 비대칭 키 암호화(Asymmetric Encryption) 방식을 사용하여 인증합니다.

키 종류역할보안 수준
Public Key암호화에 사용되며 서버에 등록외부 노출 가능
Private Key복호화에 사용되며 클라이언트에 보관절대 유출 금지

Public Key로 암호화된 데이터는 오직 대응하는 Private Key로만 복호화할 수 있습니다. 이 수학적 특성을 이용해 클라이언트의 신원을 안전하게 검증합니다.


SFTP (Secure File Transfer Protocol)
SFTP는 SSH 프로토콜 위에서 동작하는 파일 전송 프로토콜입니다. SSH의 암호화 메커니즘을 그대로 사용하기 때문에 데이터 전송이 안전하게 보호됩니다. SFTP는 단순히 "보안이 강화된 FTP"가 아니라, SSH 프로토콜 자체를 활용한 완전히 다른 구조입니다.

프로토콜이 뭔 소린지 모르겠나요?
프로토콜은 컴퓨터나 기기 간의 데이터 교환 규칙 체계입니다. 이는 통신 시 지켜야 할 통신 규약으로, 데이터의 형식, 송수신 방법, 오류 처리 등을 정의하여 원활한 소통을 가능하게 합니다. 웹 브라우저와 웹 서버가 통신할 때 사용하는 HTTP, 이메일을 주고받을 때 사용하는 SMTP 등이 대표적인 예시랍니다.

SFTP vs FTP

이거까지만 하고 어케 쓰는지 알려줄게요 ㅠㅠ

프로토콜주요 사용 목적포트
SSH원격 서버 접속 및 명령 실행22
SFTP암호화된 파일 전송22 (SSH 기반)
FTP파일 전송 (비보안)20, 21

개발 플로우

SSH 접속 및 실행 SSH로 서버에 접속하여 업로드된 코드를 실행하고 테스트합니다.
결과 확인 및 배포 실행 결과를 확인하고, 필요에 따라 다시 로컬에서 수정 후 동기화 과정을 반복합니다.

단계별 설명

① 로컬 작업
로컬에서 코드를 완성하고, SFTP Config를 설정합니다.

② 파일 동기화 (SFTP)
코드를 서버로 안전하게 전송합니다.
💡 uploadOnSave: true로 자동 동기화 활용 (하단에 있음)

③ 서버 제어 (SSH)
SSH로 접속 후, GPU 노드 할당 명령(예: srun)을 실행합니다 .

④ 학습 실행 및 모니터링
데이터셋을 준비하고, 학습 스크립트(sbatch 등)를 실행하고, 학습을 진행합니다. SSH 셸에서 로그를 확인하며 모니터링합니다.

⑤ 결과 다운로드 (SFTP)
학습이 완료되면 결과 파일(모델 가중치, 최종 로그 등)을 SFTP로 다시 로컬로 다운로드합니다.

FTP vs SFTP


FTP (File Transfer Protocol)

FTP는 파일 전송 전용 프로토콜이지만 암호화를 지원하지 않습니다. 전송되는 모든 데이터가 평문(plain text)으로 네트워크를 통해 전달되기 때문에 보안에 취약합니다.

SFTP (Secure File Transfer Protocol)

SFTP는 SSH 프로토콜 위에서 동작하는 파일 전송 프로토콜입니다. SSH의 강력한 암호화 메커니즘을 그대로 사용하기 때문에 데이터 전송이 안전하게 보호됩니다.

프로토콜포트암호화보안 수준기반
SFTP22✅ SSH 암호화높음SSH
FTP20, 21❌ 없음매우 취약독립 프로토콜

SFTP는 단순한 "보안 강화 FTP"가 아니라, SSH 터널링을 이용한 안전한 파일 전송 방식입니다. 개발 환경에서 코드를 서버에 올리거나 학습 결과물을 다운로드할 때 주로 사용됩니다.

SFTP를 통한 파일 전송


VSCode SFTP 설정

VSCode에서 SFTP 확장을 사용하면 로컬과 서버 간 파일 동기화를 쉽게 할 수 있습니다.

sftp.json 설정 예시:

{
  "name": "Aurora",
  "host": "163.180.160.105",
  "protocol": "sftp",
  "port": 30080,
  "username": "your_id",
  "remotePath": "/data/your_id/repos/Assignment",
  "uploadOnSave": true,
  "useTempFile": false,
  "openSsh": false
}
옵션설명
host서버 IP 주소
port학교 외부: 30080, 내부: 22
remotePath서버의 작업 디렉토리 경로
uploadOnSave저장 시 자동 업로드

터미널에서 SFTP 직접 사용

# SFTP 접속
sftp -P 30080 your_id@163.180.160.105

# 서버 디렉토리 이동
sftp> cd /data/your_id/repos

# 서버 → 로컬 다운로드
sftp> get remote_file.py
sftp> get -r remote_directory

# 로컬 → 서버 업로드
sftp> put local_file.py
sftp> put -r local_directory

# 종료
sftp> exit

이마저도 귀찮다면 일단
https://github.com/YuujInJeong/khuseraphdashboard

* 자동 동기화 활용

VSCode의 uploadOnSave: true 옵션을 활성화하면

* 포트 선택 가이드

환경포트이유
학교 내부22기본 SSH 포트
학교 외부30080방화벽 우회용 포트 포워딩
권장30080범용적으로 사용 가능

* 주요 명령어

작업SSHSFTP
용도원격 셸 접속파일 전송
접속ssh user@host -p portsftp -P port user@host
디렉토리 이동cd /pathcd /path (원격), lcd /path (로컬)
파일 확인ls, catls (원격), lls (로컬)
파일 전송get, put
명령 실행
profile
일단 하고 보자 (펠리컨적 마인드 ㅠㅠ)

0개의 댓글