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

이제 약간 알려주기도 귀찮아서 정리함.
일단 서버라는 개념은 대충 알고 있을 것임

https://brunch.co.kr/@imagineerjy/18
진짜 모르면 진짜 여기 추천
암튼 서버에 왜 연결해야하고 그게 좋다는데 어케 쓰노,, 하는 사람들을 위해 간단히 정리해보겠습니다.
일단 SSH란?
원격 서버 접속이라는 것은 다른 컴퓨터에 있는 저장장치나 컴퓨팅 리소스에 네트워크를 통해 접속한다는 뜻

SSH는 Secure Shell의 약자로, 원격 서버에 암호화된 네트워크 연결을 통해 안전하게 접속하는 프로토콜입니다. SSH를 통해 원격 서버의 셸에 직접 접속하여 명령어를 실행하고, 서버를 제어할 수 있습니다.
안전한 원격 접속의 개념 서버에 SSH로 접속하면, 마치 내 컴퓨터에서 직접 작업하는 것처럼 서버의 자원을 활용할 수 있습니다. 모든 통신은 암호화되어 있어 보안 위협으로부터 데이터를 보호합니다.
실제 개발 환경에서는 SSH로 서버에 접속하여 작업하고, SFTP로 파일을 주고받는 패턴을 사용합니다.

원래 굳이 설명 안하려고 했는데 쓰다보면 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 등이 대표적인 예시랍니다.
이거까지만 하고 어케 쓰는지 알려줄게요 ㅠㅠ
| 프로토콜 | 주요 사용 목적 | 포트 |
|---|---|---|
| SSH | 원격 서버 접속 및 명령 실행 | 22 |
| SFTP | 암호화된 파일 전송 | 22 (SSH 기반) |
| FTP | 파일 전송 (비보안) | 20, 21 |
SSH 접속 및 실행 SSH로 서버에 접속하여 업로드된 코드를 실행하고 테스트합니다.
결과 확인 및 배포 실행 결과를 확인하고, 필요에 따라 다시 로컬에서 수정 후 동기화 과정을 반복합니다.

① 로컬 작업
로컬에서 코드를 완성하고, SFTP Config를 설정합니다.
② 파일 동기화 (SFTP)
코드를 서버로 안전하게 전송합니다.
💡 uploadOnSave: true로 자동 동기화 활용 (하단에 있음)
③ 서버 제어 (SSH)
SSH로 접속 후, GPU 노드 할당 명령(예: srun)을 실행합니다 .
④ 학습 실행 및 모니터링
데이터셋을 준비하고, 학습 스크립트(sbatch 등)를 실행하고, 학습을 진행합니다. SSH 셸에서 로그를 확인하며 모니터링합니다.
⑤ 결과 다운로드 (SFTP)
학습이 완료되면 결과 파일(모델 가중치, 최종 로그 등)을 SFTP로 다시 로컬로 다운로드합니다.

FTP는 파일 전송 전용 프로토콜이지만 암호화를 지원하지 않습니다. 전송되는 모든 데이터가 평문(plain text)으로 네트워크를 통해 전달되기 때문에 보안에 취약합니다.
SFTP는 SSH 프로토콜 위에서 동작하는 파일 전송 프로토콜입니다. SSH의 강력한 암호화 메커니즘을 그대로 사용하기 때문에 데이터 전송이 안전하게 보호됩니다.

| 프로토콜 | 포트 | 암호화 | 보안 수준 | 기반 |
|---|---|---|---|---|
| SFTP | 22 | ✅ SSH 암호화 | 높음 | SSH |
| FTP | 20, 21 | ❌ 없음 | 매우 취약 | 독립 프로토콜 |
SFTP는 단순한 "보안 강화 FTP"가 아니라, SSH 터널링을 이용한 안전한 파일 전송 방식입니다. 개발 환경에서 코드를 서버에 올리거나 학습 결과물을 다운로드할 때 주로 사용됩니다.
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 -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 | 범용적으로 사용 가능 |
* 주요 명령어
| 작업 | SSH | SFTP |
|---|---|---|
| 용도 | 원격 셸 접속 | 파일 전송 |
| 접속 | ssh user@host -p port | sftp -P port user@host |
| 디렉토리 이동 | cd /path | cd /path (원격), lcd /path (로컬) |
| 파일 확인 | ls, cat | ls (원격), lls (로컬) |
| 파일 전송 | ❌ | get, put |
| 명령 실행 | ✅ | ❌ |