본문 바로가기
IT/Linux

SSH & Linux Command 정리 - scp 업로드

by 하루 또다시 하루 2026. 2. 23.
반응형

jar파일을 ssh로 원격 서버에 업로드하려고 정리하다 보니, 예전에 삽질했던 내용들이 하나씩 떠오릅니다.

특히 scp, ssh, 그리고 chmod 권한 문제는 한 번 제대로 이해해두면 두고두고 써먹게 됩니다.


SCP : 로컬에서 원격 서버로 파일 전송하기

SCP는 SSH 프로토콜을 기반으로 파일을 안전하게 전송하는 명령어입니다. jar 파일 배포할 때 가장 기본적으로 사용하는 방법이죠.

1. 로컬 파일 → 원격 서버

로컬에서 작업한 jar 파일이나 이미지 파일을 서버로 올릴 때 사용합니다.

scp /로컬파일경로/파일명 사용자명@원격서버주소:/원격/디렉토리/경로
 

예를 들어:

scp build/libs/app.jar ubuntu@192.168.0.10:/home/ubuntu/
 

2. 원격 서버 → 로컬 파일

서버 로그 파일이나 결과 파일을 로컬로 가져올 때 사용합니다.

scp 사용자명@원격서버주소:/원격파일경로/파일명 /로컬디렉토리경로
 

3. 디렉토리 전체 복사

-r 옵션을 사용하면 폴더 전체를 재귀적으로 복사할 수 있습니다.

scp -r /로컬/디렉토리 사용자명@원격서버주소:/원격/디렉토리
 

프로젝트 전체를 통째로 넘겨야 할 때 유용합니다.


SSH 키 인증 오류 발생 시 (-i 옵션)

가끔 Permission denied (publickey) 같은 오류가 발생하는 경우가 있습니다.
이건 SSH 개인 키를 명시하지 않아서 생기는 문제인 경우가 많습니다.

이럴 때는 -i 옵션을 사용합니다.

scp -i [private key 경로] [로컬파일] 사용자명@원격서버주소:/원격경로
 

예시:

scp -i ~/.ssh/mykey.pem app.jar ubuntu@192.168.0.10:/home/ubuntu/
 

-i 옵션은 특정 SSH 개인 키 파일을 지정해서 인증하도록 하는 옵션입니다.
SCP는 내부적으로 SSH를 사용하기 때문에, SSH 인증이 제대로 되어야 파일 전송도 가능합니다.


ls -l 권한 확인하기

파일이 안 써질 때는 거의 90%가 권한 문제입니다.
먼저 ls -l로 확인해보는 게 좋습니다.

ls -l /var/www
 

출력 예시:

drwxr-xr-x 2 root root 4096 Mar 12 08:10 html
 

여기서 의미는 다음과 같습니다.

  • d : 디렉토리
  • rwx : 소유자 권한
  • r-x : 그룹 권한
  • r-x : 기타 사용자 권한

즉, 다른 사용자(other)는 쓰기 권한(w)이 없다는 의미입니다.


chmod로 권한 수정하기

쓰기 권한이 없으면 파일 업로드가 되지 않습니다.
이럴 때 chmod 명령어로 권한을 변경합니다.

sudo chmod o+w /var/www
 

의미:

  • o : other (기타 사용자)
  • +w : 쓰기 권한 추가

이후 다시 scp -i 명령어를 실행하면 정상적으로 업로드되는 것을 확인할 수 있습니다.


실제로 겪어보니 느낀 점

처음에는 SSH 키 문제인지, 경로 문제인지, 권한 문제인지 헷갈렸는데 하나씩 확인해보니까 결국 대부분은 권한 설정 문제였습니다.

jar 파일 배포할 때는 다음 순서로 점검하는 게 제일 깔끔합니다.

  1. SSH 접속이 되는지 확인
  2. scp -i 옵션으로 키 명시
  3. ls -l 로 권한 확인
  4. 필요 시 chmod 로 수정

이 흐름만 기억해두면 웬만한 업로드 문제는 금방 해결됩니다.

반응형