scp는 SSH 터널을 사용합니다

scp는 SSH 터널을 사용합니다

일반적으로 이 작업을 수행 scp file myuser@server1:~/하고 비밀번호를 입력하지만 이제는 먼저 server2를 입력한 다음 server2에서 실행 scp file myuser@server2:~/해야 합니다.ssh myuser@server2scp file myuser@server1:~/

이 작업을 하려고 하는데 ssh -L 8888:server1:22 myuer@server2비밀번호를 묻는 메시지가 표시됩니다. 이렇게 하면 ssh myuser@server2server2에만 연결되고 server1에는 연결되지 않습니다.

scp나에게서 server1로 직접 갈 수 있도록 어떻게 작동하게 할 수 있습니까 ?

답변1

원격 서버에 직접 연결할 수 있도록 ProxyCommand/ 아주 간단하게 구성할 수 있습니다. 다음 내용으로 하나를 만듭니다.ProxyJumpscp~/.ssh/config

Host server1
  ProxyCommand ssh -W %h:%p server2

그런 다음 scp를 직접 수행할 수 있습니다.

scp local.file server1:/path/to/remote.file

포트 전달을 고집하는 경우 제공하는 첫 번째 명령으로 "터널"을 생성한 후:

ssh -L 8888:server1:22 server2

다음과 같은 방식으로 데이터를 전송해야 합니다( -P연결 전달을 위한 포트를 설정한다고 나와 있음).

scp -P 8888 local.file server1:/path/to/remote.file

답변2

scp원격 소스 파일과 원격 대상 파일을 지원합니다. 데이터 전송에 SSH를 사용하므로 이는 터널링 시도와 동일해야 합니다.

scp file myuser@server2:~/
scp myuser@server2:~/file myuser@server1:~/

참고로, myuser사용자 이름이 로컬 로그인과 동일하면 생략할 수 있습니다.

scp file server2:~/
scp server2:~/file server1:~/

터널을 정말로 원한다면(파일이 server2파일 시스템에 닿을 필요가 없도록) 여기에 좋은 대답이 있습니다.https://superuser.com/questions/276533/scp-files-via-intermediate-host

사실 이 부분은 답변이 된 것으로 볼 수도 있겠네요...

답변3

나는 이것이 매우 편리하다고 생각합니다.

scp -J myuser@server2 file myuser@server1:~/

또는 랩톱과 각 서버 간에 사용자 이름이 동일하게 유지되는 경우 간단히 사용자 이름을 생략할 수 있습니다. 원한다면 server2를 호스트 파일(/etc/hosts)에 넣고 멋지고 짧은 이름을 사용하여 더 빠르게 입력할 수도 있습니다.

# in file /etc/hosts 
74.125.71.113 s2  # this is server2

그러면 server1에 전송되는 명령은 file다음과 같습니다.

scp -J s2 file server1:~/

답변4

호스트 서버의 ~/.ssh/config에 다음을 배치하십시오.

XAuthLocation /opt/X11/bin/xauth

Host remote
  User foo
  Hostname remote-server
  ProxyCommand ssh foo@gateway-server -W remote-server:22

그런 다음 scp를

scp remote:~/file_to_be_copied . 

관련 정보