티스토리 뷰
[Linux/WSL] SCP | 윈도우 로컬과 리눅스 원격 간 파일 전송 | scp port 22: Connection refused 해결 방법 | Connection timed out 해결 방법
YouJungJang 2023. 11. 22. 03:041. SCP : Secure Copy
네트워크가 연결되어 있는 원격지에서 파일을 전송할 수 있는 명령어로 SSH와 동일한 22번 포트를 사용하기 때문에 보안이 뛰어나고, 디렉터리 전송도 간편한 것이 큰 장점이다.
2. 윈도우 ➡️ 리눅스 전송 방법
(1) 전송하고 싶은 파일이나 디렉터리를 C:\Users\username 하위 폴더로 이동시킨다.
(그렇지 않으면 permission denied 발생)
C:\Users\sunny\CloudComputing
나는 CloudComputing이라는 디렉터리에 여러 도커 파일들을 담아뒀고 해당 디렉터리를 전송하려고 한다.
(2) OpenSSH Client 기능이 활성화되어 있는지 확인
윈도우 검색에서 '선택적 기능' 검색하면 제어판에 있는 선택적 기능에 들어갈 수 있다. ( 설정 -> 앱 -> 선택적 기능)
여기서 OpenSSH 클라이언트가 설치되어 있는지 확인해야 한다.
(3) 윈도우 명령 프롬프트에서 SCP 명령어 작성
$ scp (window경로)파일 (linux계정)@서버주소:목적경로
나의 경우는 디렉터리를 전송하는 것이라 '-r' 태그를 붙였다.
scp -r C:\Users\sunny\CloudComputing youjung@172.27.102.151:/home/youjung
현재 로컬 윈도우에 내가 전송할 파일의 위치는 'C:\Users\sunny\CloudComputing',
linux 계정 명과 서버 주소는 'youjung@172.29.241.95',
원격 서버에서 저장할 위치는 '/home/youjung'이다.
SCP 명령어를 잘 구성했다면 리눅스 원격 서버의 root 비밀번호를 입력하는 명령어가 출력되면서 이후 빠른 속도로 파일이 전송되는 것을 확인할 수 있다.
아래는 내가 겪었던 두 가지 에러 코드를 해결한 방법을 정리했다.
3. 트러블 슈팅
(1) Connection timed out
나의 경우에는 SCP 명령어의 원격 서버의 IP 주소가 잘못되어 있었다. 내 리눅스 원격 서버의 IP 주소는 ifconfig 명령어로 확인할 수 있다.
(2) port 22: Connection refused
해당 에러를 해결하는 방법을 찾아보면 대부분 아래와 같다.
sudo apt-get update
sudo apt-get install openssh-server
sudo ufw allow 22
그런데 이때, sudo apt-get install openssh-server 해당 명령어에 대해 System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
위와 같은 에러 메시지가 출력된다면, 그것은 사용자의 WSL 루트 시스템 프로세스가 systemd가 아닌 init이기 때문이다. 해결 방법은 내가 직접 정리한 아래 포스팅을 참고하면 해결할 수 있다.
🔎참고자료