SSH를 사용하여 로컬 컴퓨터에서 서버로 폴더를 올바르게 복사하려면 어떻게 해야 합니까? scp 명령에 오류가 발생하는 이유는 무엇입니까?

SSH를 사용하여 로컬 컴퓨터에서 서버로 폴더를 올바르게 복사하려면 어떻게 해야 합니까? scp 명령에 오류가 발생하는 이유는 무엇입니까?

나는 다음을 통해 내 웹 서버에 로그인했습니다.SSH라는 도구를 사용하여MobaXterm(Putty와 비슷하지만 고급 기능을 사용하면 그다지 중요하지 않습니다...)

내 문제는 내 로컬 컴퓨터(Windows)의 디렉터리를 이 서버(Linux)의 특정 디렉터리로 보내고 싶다는 것입니다.

그래서 나는scp여기에 표시된 명령은 다음과 같습니다.http://www.hypexr.org/linux_scp_help.php

나는 이런 식으로 했습니다:

-jailshell-4.1$ scp -r C:\Users\Andrea\Documents\Betrivius\candycane-0.9.6\candycane /home6/XXX/public_html

ssh: Could not resolve hostname C: Name or service not known

하지만 보시다시피 오류가 발생합니다.

왜? 내가 무엇을 놓치고 있나요? 이 문제를 어떻게 해결할 수 있나요?

Tnx

답변1

아마도 로컬 MobaXterm 쉘(예: Windows 시스템의 로컬)에서 이를 실행하고 있을 것입니다. 이 경우 구문이 올바르지 않더라도 해당 환경에 맞게 scp 명령 구문을 업데이트해야 합니다.

MobaXterm은 mountpoint를 통해 쉘의 로컬 드라이브에 대한 액세스를 제공하며 /drives/XX는 Windows 드라이브 문자입니다.

또한 환경에 관계없이 scp의 (간소화된) 일반 구문은 다음과 같습니다.

scp 사용법:

scp [[user@]host1:]/path[/filename] [[user@]host2:]/path/[filename]

첫 번째 시퀀스( [[user@]host1:]/path[/filename])는 'FROM' 섹션입니다. 복사할 파일의 소스. 두 번째는 'TO'입니다. 목적지. 대괄호는 선택적 인수를 나타냅니다.

실제로는 표준 cp 명령의 SSH 지원 버전입니다. :ssh 특정 정보를 포함하는 이전 섹션과 cp 작업과 관련된 정보를 포함합니다.

사용자:

user기본값은 현재 로컬 사용자 이름입니다. 원본과 대상 모두에서 올바른 사용자 이름인 경우 생략할 수 있습니다.

주인:

host기본값은 로컬 컴퓨터(localhost)입니다. 따라서 로컬 시스템으로/에서 복사하고 사용할 로컬 호스트의 사용자 이름이 현재 사용자인 경우 로컬 파일에 대한 해당 인수를 생략할 수 있습니다.

파일 경로:

path/filename기본값은 지정된 사용자 홈 디렉터리이며 원하는 경우 생략할 수 있습니다. 상황에 따라 재귀 복사를 수행할 때 filename을 생략할 수 있습니다. 이 경우 경로만 제공하면 됩니다. 일반적으로 전체 경로와 파일 이름은 FROM 섹션에 지정되고 TO 섹션에는 경로만 지정됩니다. 기본적으로 동일한 파일 이름을 유지합니다.

나는 사용자 이름과 원격 PC 호스트 이름으로 remoteuser및 를 사용하고 있습니다. remotePC올바른 이름으로 바꾸십시오.

귀하의 예에서 올바른 구문은 다음과 같습니다.

 scp -r "/drives/C/Users/Andrea/Documents/Betrivius/candycane-0.9.6/candycane" remoteuser@remotePC:/home6/XXX/public_html

명령을 사용 man scp하거나이 장소추가 세부정보(인수, 기타 사용법 정보)를 확인하세요.

GUI 옵션

또는 MobaXterm은 SSH를 통해 원격 호스트에 연결할 때 끌어서 놓기 양방향 파일 전송을 제공하는 그래픽 파일 브라우저(구성 옵션에 따라 sftp 또는 scp 기반)를 제공합니다.자세한 내용은 여기.

답변2

해당 웹 서버가 Windows 시스템(포트 22에서 실행되고 포트가 전달되어야 하고 SSH 데몬이 실행되어야 함)에 직접 연결할 수 있는 방법이 없으면 Windows 측에서 SCP를 호출해야 합니다. MobaXTerm은 SSH 클라이언트입니다. SCP가 내장되어 있는지는 잘 모르겠지만(개인적으로는 사용하지 않습니다), 여기서 가장 좋은 해결책은 명령줄 클라이언트이든 GUI 클라이언트이든 SCP 클라이언트를 사용하는 것입니다.

Windows용으로 꽤 인기 있는 클라이언트는 다음과 같습니다.WinSCP, Windows를 사용할 수밖에 없을 때 내 goto 클라이언트입니다.

답변3

대답하려면

scp 명령에 오류가 발생하는 이유는 무엇입니까?

, 오류는

ssh: Could not resolve hostname C: Name or service not known

, 사용된 명령은 다음과 같습니다.

scp -r C:\Users\Andrea\Documents\Betrivius\candycane-0.9.6\candycane /home6/XXX/public_html

내가 말할 것:

구문이 C:\Users\....잘못되었습니다. 이 맥락에서 경로를 설명하는 두 가지 가능성이 있습니다.

  1. foo/bar/...: foo경로에서 볼 수 있는 디렉터리(폴더)를 의미하며, 현재 경로( pwd) 또는 경로 env 변수( echo $PATH)에 있을 수 있습니다.

  2. /foo/bar/...이는 foo파일 시스템의 루트에 있는 디렉터리(폴더)임을 의미합니다.

첫 번째 옵션을 사용했을 때("C:" 앞에 "/"가 없기 때문에) 쉘은 C:경로에서 을 검색하지만 찾을 수 없습니다. 결과적으로 다른 구문과 일치하려고 시도합니다: [user@]host1:/path/..../filename. 이 상황에서 ssh는 IP 주소를 찾을 수 없기 때문에 C:(그것이 C:호스트 이름이라고 생각하기 때문에) 불평합니다. 호스트 이름에 해당하는 IP 주소를 찾는 것을 "호스트 이름 확인"; 여기서는 이 해결 방법이 실패하므로 오류를 이해하게 됩니다.

답변4

Windows에서는 다음 명령이 저에게 효과적이었습니다. - scp -r "Reqd.Folder name in quote" 사용자 이름@remote_server:서버의 파일 경로

scp -r "ABC" shivam@remote_server:/media/External/shivam.

실행 전 필요한 폴더가 있는 폴더로 이동하세요.

관련 정보