scp를 사용하여 로컬 디렉토리 X에서 원격 디렉토리 Y로 파일을 전송하십시오.


99

인터넷에서 다른 질문과 다양한 "scp 사용법"자습서를 살펴 보았지만 무엇이 잘못되었는지는 정리할 수 없습니다.

Linux Mint를 사용하고 있으며 scp의 작동 방식을 알아 내려고 노력 중 입니다.

/ home / name / dir / 디렉토리에 file.ext 파일 (컴퓨터에 있음)이 있습니다.

다음 과 같이 ssh를 사용하여 원격 시스템에 연결합니다 .

ssh -p 2222 username@domain

암호를 묻고 셸이 표시됩니다.

username@domain ~ $

이제 명령을 실행하면 ssh를 실행하기 전에 로컬 디렉토리 / home / name / dir에있었습니다 .

scp -r -P 2222 file.ext username@domain 

출력은 다음과 같습니다

cp: cannot stat ‘file.ext’: No such file or directory

file.ext 대신 전체 결과를 작성하면 동일한 결과

scp -r -P 2222 /home/name/dir/file.ext username@domain 

또한 서버 관리자는 다음과 같이 파일을 원격 홈 디렉토리 (루트 대신)에 업로드해야한다고 말했습니다.

scp -r -P 2222 file.ext username@domain:~/

그러나 내가 그것을하고 "Enter"를 누르면 쉘이 추가 입력을 기다리는 것처럼 아무 일도 일어나지 않습니다.

내 문제 요약 :

  • cp : 해당 파일이나 디렉토리가 없음
  • 쉘 "고착"~ /

어떤 제안?


문제가 잘못된 컴퓨터에만있는 것과 관련이 있는지는 확실하지 않습니다 ... 각 명령 앞에 실행중인 호스트를 추가 할 수 있습니까? 예 : localuser@machineA: ssh -p 2222 username@domain(machineA에서 localuser로 ssh 명령을 실행하고 있음을 표시하기 위해)
umläute

1
를 사용할 때 scp, 원격 측은 항상 콜론 (예 :)을 포함해야합니다. remotehost:/tmp그렇지 않으면 일반 복사를 수행합니다 ( 로컬 파일로 scp /tmp/foo.txt example.com복사 )/tmp/foo.txtexample.com
umläute

-r단일 파일을 복사하는 데 필요하지 않으므로 플래그를 제거하십시오 ( 재귀 적으로 디렉토리를 복사 하는 데 사용됨 )
umläute

sshe 세션 내 에서 scp 명령을 실행하고 있습니까? 로컬 컴퓨터에 있으면 의미가 있습니다.
Alexis

답변:


119

scp원격 시스템이 아닌 로컬 시스템에서 명령 을 실행해야합니다 . 당신은 전혀 필요하지 않습니다 ssh:

dragonmnl@local $ scp -P 2222 file.ext username@domain:~/ 

당신은 또한 필요하지 않습니다 -r:

 -r      Recursively copy entire directories.  

이미 원격 컴퓨터에 로그인 한 상태에서 로컬 컴퓨터에서 복사하려는 경우 인터넷을 통해 로컬 컴퓨터에 액세스 할 수 있고 ssh설정되어 있는지 확인해야합니다 . 나는 이것이 당신이 추구하는 것이라고 생각하지 않지만 그렇다면, 리모컨에서 이것을 실행하십시오 :

username@domain $ scp dragonmnl@local:/path/to/file.ext ~/

1
감사. 문제는 ssh 세션 내에서 scp를 실행하려고한다는 것입니다. 이제 작동합니다!
dragonmnl

28

원격 컴퓨터와 로컬 컴퓨터 사이에 두 가지 방법으로 업 / 다운로드 파일을 제공합니다 (Mac air 사용).

이 경우 로컬과 원격 사이에서 "11.jpeg"를 위 / 아래로 이동하고 싶습니다.

1.

서비스중인 파일을 로컬 디렉토리로 복사 : ssh가 아닌 경우이 명령을 수행하려면 로컬 bash 터미널에 있어야합니다!

scp username@domain:/home/xxx/xxx/11.jpeg /Users/username/Desktop/  

로컬 디렉토리의 파일을 원격 서비스로 복사하십시오. 또한 로컬 bash 터미널에 있어야합니다

scp /Users/username/Desktop/11.jpeg username@domain:/home/xxx/xxx
  1. SSH에 로그인 할 때 동일한 의도를 얻으려면 먼저 "시스템 환경 설정> 공유> 원격 로그인> 모든 사용자"를 설정해야합니다 ( "모든 사용자"에 대해 설정해야하는지 확실하지 않지만이 상황에서는 작동합니다) )”Mac에서 "이 컴퓨터에 원격으로 로그인하려면 다음을 입력하십시오. ssh username @ xxxxxx를 입력 한 다음 아래 명령을 입력하십시오.

    scp username @ domain : /home/xxx/xxx/11.jpeg username @ xxxxxx : / Users / username / Desktop /

위의 명령은 ssh에 로그인 할 때 원격에서 로컬로 파일을 다운로드하기위한 것입니다. 파일을 업로드 할 때 두 경로를 변경하십시오.


마지막으로 필자는 Filezilla가 아마도 일상 업무에서 가장 편리한 것으로 생각합니다 ~~
maizer

5

원격 시스템에서이 scp 명령을 실행하는 경우 원격 시스템에서 file.ext"로컬"파일을 찾습니다 .

로컬 하나에 원격 컴퓨터에서 파일을 복사하려면 사용 scp -P 2222 username@domain:dir/file.ext localdir(즉, 가정 file.ext에있는 ~/dir당신의 예에서와 같이, 원격 컴퓨터에서). scp원격 시스템에서 실행 하는 경우 "로컬"과 "원격"을 반대로하십시오.


1
OP 로컬에서 원격으로 복사 하려고 합니다. OP의 제목을 참조하십시오.
terdon

당신 말이 맞아요 그러나 그는 분명히 그것을 뒤로하고 있습니다 ...
Alexis Alexis

3

scp명령을 사용하십시오

폴더를 전송하려면 먼저 폴더를 전송 하면 나중에 zip할 수 있습니다 unzip.

컴퓨터에서 다음을 실행하십시오.

$ scp your_path_to_the_file/the_file root@10.145.198.100:~/

여기는 root귀하의 계정이며 10.145.198.100원격 서버의 IP 주소입니다. 리모콘의 폴더에 복사 the_file합니다 ~/.

압축 해제 파일 :

$ unzip the_zip_file.zip -d destination_folder

root원격 시스템에서 SSH 액세스를하는 이유는 무엇 입니까? 꽤 안전하지 않습니다. 일반적인 용도로 사용하고 sudo해당 머신에서 루트가 수행하는 모든 작업을 수행하는 것이 좋습니다.
Kusalananda

1

약간의 기여만으로도 저와 같은 초보자에게 도움이 될 수 있습니다. 원격 디렉토리의 경로는 다음과 같이 작성해야합니다. username@domain:~/remote_directory

여기서 강조하고 싶은 것은 항상 추가해야한다는 것입니다 :~/


0

솔루션에서 파일을 복사 Linux client하는Linux Server

  1. sshd다음을 사용하여 서버에서 실행 중인지 확인하십시오 . ps aux | grep sshd

  2. https://www.tecmint.com/install-openssh-server-in-linux/를OpenSSH 사용하여 설치하지 않은 경우sudo apt-get install openssh-server openssh-client

  3. 서버를 다시 시작하고 다음을 sshd사용하여 실행 중인지 확인하십시오.ps aux | grep sshd

  4. 필요한 경우 /etc/ssh/sshd_config파일을 구성 할 수 있지만 간단한 구성에는 필요하지 않습니다.

  5. 포트가 다음을 사용하여 열려 있는지 확인하십시오 netcat nc -v -z 127.0.0.1 22

  6. Linux클라이언트 에서 클라이언트로 파일을 복사하려면 Linux다음과 같이 scp를 사용하십시오. scp ~/filename.md username@10.22.33.45:~/folder/filename.md

  7. 파일이 복사되었는지 확인하려면 사용 ssh username@10.22.33.45하고 비밀번호를 제공하십시오.

파일 Linux client을`Windows 로 복사하는 솔루션

  1. MS의 OpenSSH 와 같이 Windows에서 SSH 서버를 실행하기위한 여러 클라이언트가 있습니다.

    MobaSSH

    Bitvise SSH 서버

  2. 위의 서버 중 하나를 설치하고 다음을 사용하여 포트 22가 열려 있는지 확인하십시오.

    netsh advfirewall 방화벽 추가 규칙 이름 = "SSH 포트 22"dir = in action = allow protocol = UDP localport = 22

    netsh advfirewall 방화벽 추가 규칙 이름 = "SSH 포트 22"dir = out action = allow protocol = UDP localport = 22

    netsh advfirewall 방화벽 추가 규칙 이름 = "SSH 포트 22"dir = in action = allow protocol = TCP localport = 22

    netsh advfirewall 방화벽 추가 규칙 이름 = "SSH 포트 22"dir = out action = allow protocol = TCP localport = 22

    netsh advfirewall 설정 allprofiles 상태 끄기

  3. 이 서버들의 비교 :

    Bitvise SSH 서버

    1. 기본 cmd프롬프트, powershell프롬프트, 자동 완성에 거의 근접

    2. 고급 사용이 필요한 경우 사용자 정의를위한 추가 기능을 제공합니다

    3. 간단한 요구에 대한 사용자 정의는 얻을려고 많은 시간을 보낸 후에 나는, 2 분 이내에 시작되었다 0입니다 MobaSSHOpenSSH작동 할 수 있습니다.

    4. scp를 사용하여 파일을 복사하려면 다음을 사용하십시오. scp ~/filename.md username@10.33.44.45:/C/Users/username/filename.md

    5. 개인적인 용도로는 무료이며 전문가 용으로는 99 달러입니다. 많은 기능과 뛰어난 통합으로 인해 가격은 가치가 있습니다

    MobaSSH :

    1. 간단한 리눅스 같은 명령 창에 리눅스 쉘 제공 ls, cp, find유사 등의 작업을,MINGW64

    2. 당신이 액세스 할 수 cmdpowershell입력하여 직접 cmd또는 powershell

    3. 유니 코드 지원이 좋지 않습니다. 인코딩이 올바르지 않습니다. 예를 들어 Python, 인터프리터 를 시작하려고 하면 충돌이 발생합니다. ( https://stackoverflow.com/a/12834315/4752883 )을 사용하여 인코딩을 수동으로 변경 chcp 65001 set PYTHONIOENCONDING=utf-8 한 다음 Python 프롬프트를 시작해야합니다.

    4. MobaSSH의 좋은 점은 매우 간단한 사용자 인터페이스를 가지고 있으며, scp그리고 ssh잘 통합. 간단한 사용 사례에서도 작동합니다.

    5. Linux클라이언트에서 Windows실행중인 서버로 파일을 복사하려면 MobaSSH다음을 사용하십시오. 기반으로 하고 드라이브가 동일한 방식으로 매핑 scp ~/filename.md username@10.33.44.45:/cygdrive/c/Users/username/filename.md 되기 때문에 -s 드라이브가 매핑됩니다.MobaSSHcygwincygwin

    https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ 에서 OpenSSHv6.7이 설치된 Microsoft의 VM을 사용 하면 OpenSSHv6.7이 이미 설치되어 있습니다.

    1. 매우 버그가 많으므로 크게 커스터마이징해야합니다.

    2. 명령 완료가 작동하지 않습니다

    3. 터미널에서 커서를 움직이면 공백이 남습니다.

    4. 파이썬이 작동하지 않습니다

    5. 이후 버전의 OpenSSH가 향상되었을 수 있습니다. 추가 MS는 https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ 를 통해 OpenSSH를 제공 할 것으로 보입니다.Optional Features


-1

OSX에있을 경우 ...

username @ local : / file_directory로 실행하려고 할 때 ...

다음과 같은 오류가 발생했습니다.

ssh: local: node name or service name not known

해결책

내 Mac에서 로컬을 설정하려면 다음을 수행해야했습니다 ssh.

'시스템 환경 설정'-> '인터넷 및 네트워킹'-> '공유'-> '원격 로그인 활성화 '

그런 다음 username @ ip 주소를 제공했습니다.


-1

나는 오늘 MAC에서 이와 동일한 문제를 겪었다.

다음 명령을 입력하십시오.

scp /local-file-path/ /-remote-location-path/
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.