윈도우Windows와 리눅스Linux 시스템 간 파일을 전송하는 방법은 FTP, SFTP, Rsync 와 같이 다양하게 존재하며 이를 활용할 수 있는 다양한 도구들 또한 상당히 많이 있습니다. 다만 이런 프로그램들은 추가로 설치를 해야 하는데 간단하게 파일만 전송하고 싶다면 이런 추가 과정이 번거로울 수 있습니다.
이 경우 SSHsecure shell 프로토콜을 기반으로 하는 파일 전송 프로토콜인 SCPsecure copy를 사용하면 별도의 프로그램 설치없이 SSH 포트(22)를 이용해 간단하게 파일을 전송할 수 있습니다.
윈도우에서는 윈도우 10 1803 버전부터 OpenSSH 가 기본적으로 설치되어 있기 때문에따로 설치하지 않더라도 SSH 서버에 접속할 수 있으며 이를 통해 SCP로 윈도우의 파일을 리눅스 서버로 전송할 수 있습니다.
튜토리얼 환경: 윈도우 11 Pro (빌드: 22621.1265), Debian 11(Bullseye)
윈도우 OpenSSH 설치 여부 확인
기본적으로 윈도우 10 이후 버전을 사용하고 있다면 OpenSSH가 설치되어 있지만, 제거되었을 수 있으니 확인 후 진행합니다.
- Win + i 단축키를 이용해 설정 앱을 실행 후 좌측 카테고리에서 을 선택하고 하위 메뉴에서 을 클릭합니다.
- 선택적 기능 페이지에서 OpenSSH 클라이언트를 찾거나 상단 검색창에서 검색합니다. OpenSSH 클라이언트가 존재한다면 정상적으로 사용할 수 있는 것입니다.
SCP로 윈도우 파일 리눅스에 전송하기
OpenSSH 가 설치되어 있다면 이제 간단한 명령 만으로 윈도우의 파일을 원격지의 리눅스 서버에 전송할 수 있습니다.
기본 사용
전송할 파일이 위치한 경로에서 빈 공간을 마우스 오른쪽 버튼으로 클릭해 컨텍스트 메뉴를 열고
를 선택합니다.터미널이 실행되면 아래와 같은 형식으로 전송 명령을 작성하고 실행하며 명령 구문은 다음의 내용을 참고해 사용합니다.
scp [옵션] [전송할 파일/폴더] [사용자]@[서버주소]:[전송할 경로]
[옵션]
명령어 실행시 추가적으로 지정할 수 있는 옵션입니다. 아래 옵션 설명에서 자세한 내용을 확인할 수 있습니다.[전송할 파일/파일]
복사할 폴더 경로와 파일 이름을 지정합니다. (폴더 사용시-r
옵션 필요)[사용자]@[서버주소]:[전송할 경로]
복사될 파일의 경로(서버 아이피, 도메인) 와 파일 이름을 지정합니다.
예를 들어 현재 경로에 위치한 abc.zip
이라는 파일을 123.123.123.123
아이피를 가진 서버측 /var/tmp
경로에 전송하고 싶다면 다음과 같이 작성 후 실행합니다.
scp abc.zip user@123.123.123.123:/var/tmp/
옵션
SCP로 파일 전송 시 옵션을 지정할 수 있는데 자주 사용하는 scp
명령어 옵션은 다음과 같습니다:
-P
: 사용할 포트를 지정하는 옵션-r
: 디렉토리 전체를 복사할 때 사용하는 옵션-v
: 복사 과정에서 진행 상황을 출력하는 옵션-p
: 파일의 소유권과 권한을 유지하는 옵션-i
: SSH 인증서 파일의 경로를 지정하는 옵션
예를 들어 원격 서버의 SSH 포트가 22
가 아닌 333
일 경우 다음과 같이 -P
옵션을 추가합니다.
scp -P 333 abc.zip user@123.123.123.123:/var/tmp/
권한 오류
파일을 전송할 리눅스 서버의 경로가 될 디렉토리의 최소 권한은 755 ( rwxr-xr-x
)이상이 되어야 합니다. 권한이 부족한 경우 scp permission denied
와 같은 권한 오류가 발생할 수 있습니다.
- 권한 설정은 대상 디렉토리의 소유자나 관리자의 권한에 따라 다를 수 있으니 실제 서버의 권한 설정을 확인하여 파일 전송에 필요한 권한을 775 (
rwxrwxr-x
)이상으로 설정해야 할 수도 있습니다1. - 권한을 낮추면 보안상 취약할 수 있으니 이 부분에 대한 이해가 부족하다면 권한 변경 시 주의가 필요합니다.
- 기존 디렉토리의 권한을 수정하지 않고
home/user/.upload
와 같은 경로에 특정 사용자만 사용할 수 있는 디렉토리를 생성 후 이 곳에 파일을 전송하고 다시 원하는 위치로 이동mv
하는 방식을 권장합니다.
마치며
이번 포스트에서는 윈도우에서 리눅스, 리눅스에서 윈도우 간 SCP를 이용해 파일을 전송하는 방법에 대해 알아보았습니다. SCP는 윈도우 파일 시스템에 대한 지원이 유닉스, 리눅스 대비 제한적이고 사용자 친화적인 그래픽 인터페이스가 부족해 CLI 환경에서 명령어를 직접 입력해야하기 때문에 이런 부분이 익숙하지 않은 사용자들은 접근성이 낮은 것이 사실입니다.
하지만 전술한대로 추가적인 설치가 불필요하고 보안성이나 속도면에서 장점이 많기 때문에 윈도우와 리눅스 간 파일 전송이 필요하다면 SCP를 우선적으로 체크해 보시길 바랍니다.