일반적으로 이 작업을 수행 scp file myuser@server1:~/
하고 비밀번호를 입력하지만 이제는 먼저 server2를 입력한 다음 server2에서 실행 scp file myuser@server2:~/
해야 합니다.ssh myuser@server2
scp file myuser@server1:~/
이 작업을 하려고 하는데 ssh -L 8888:server1:22 myuer@server2
비밀번호를 묻는 메시지가 표시됩니다. 이렇게 하면 ssh myuser@server2
server2에만 연결되고 server1에는 연결되지 않습니다.
scp
나에게서 server1로 직접 갈 수 있도록 어떻게 작동하게 할 수 있습니까 ?
답변1
원격 서버에 직접 연결할 수 있도록 ProxyCommand
/ 아주 간단하게 구성할 수 있습니다. 다음 내용으로 하나를 만듭니다.ProxyJump
scp
~/.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 .