사무실 컴퓨터에서 랩톱으로 파일을 다운로드하고 싶습니다.
SSH를 사용하여 내 사무실 컴퓨터를 조직 서버에 연결 한 다음 서버에서 내 사무실 컴퓨터로 SSH를 연결할 수 있습니다.
조직 서버가 허용하는 유일한 명령은 ssh, ssh1 및 ssh2입니다.
서버를 통해 내 사무실 (원격) 컴퓨터에서 랩톱 (로컬) 컴퓨터로 파일을 다운로드하려면 어떻게해야합니까?
사무실 컴퓨터에서 랩톱으로 파일을 다운로드하고 싶습니다.
SSH를 사용하여 내 사무실 컴퓨터를 조직 서버에 연결 한 다음 서버에서 내 사무실 컴퓨터로 SSH를 연결할 수 있습니다.
조직 서버가 허용하는 유일한 명령은 ssh, ssh1 및 ssh2입니다.
서버를 통해 내 사무실 (원격) 컴퓨터에서 랩톱 (로컬) 컴퓨터로 파일을 다운로드하려면 어떻게해야합니까?
답변:
이전 답변에서는 ProxyJump 지시문 (OpenSSH 7.3에 추가됨)을 사용하여 중간 서버 (일반적으로 요새 호스트라고 함)를 통해 연결하는 방법을 언급했지만 명령 줄 인수로 언급했습니다.
나중에 연결하지 않을 머신이 아닌 경우 가장 좋은 방법은에 머신을 구성하는 것입니다 ~/.ssh/config
.
나는 다음과 같은 파일을 넣을 것이다.
Host office-machine
Hostname yochay-machine.internal.company.local
ProxyJump bastion-machine
Host bastion-machine
Hostname organization-server.company.com
...
ProxyJump를 지원하지 않는 이전 버전의 OpenSSH를 사용하는 경우 해당 버전으로 대체합니다.
ProxyCommand ssh -W %h:%p bastion-machine
로컬 ssh 버전이 실제로 지원하지 않는 고대 버전 인 경우 -W
:
ssh bastion-machine nc %h %p
이 마지막 시스템은 요새 머신이 nc
설치되어 있어야합니다.
ssh의 장점은 파일에서 각 대상을 구성 할 수 있으며 매우 훌륭하게 스택된다는 것입니다. 따라서 office-machine
직접 연결 한 모든 도구 (ssh, scp, sftp ...)에서 호스트 이름으로 작업하게 되고 ssh_config를 기반으로 연결하는 방법을 알게됩니다. 와일드 카드 Host *.internal.company.local
를 사용하여 모든 호스트가 특정 요새를 통과하는 것처럼 만들고 모든 호스트에 적용 할 수 있습니다. 올바르게 구성되면 하나의 홉 연결 또는 20 개의 연결을 수행하는 것의 유일한 차이점은 연결 시간이 느려질 것입니다.
최근 OpenSSH (8.0)가있는 경우 -J
(점프) 스위치를 사용할 수 있습니다 .
scp -J user@intermediate user@target:/path
이전 버전 (그러나 7.3 이상)에서는 명령 행에서 ProxyJump
directive 를 사용할 수 있습니다 .
scp -o ProxyJump=user@intermediate user@target:/path
또는 ssh_config
@ Ángel의 답변이 보여주는 것처럼 파일로.
ProxyCommand
이전 버전의 OpenSSH에서도 사용할 수있는 포트 포워딩 과 같은 다른 옵션 이 있습니다. 여기에서 다루는 합니까 OpenSSH를 지원 멀티 홉 로그인?
ssh -J userA@orgserv userB@officecomp cat remote/path > local/path
scp
지원하지 않더라도이 옵션 -J
을 지원할만큼 충분히 새 것일 수 있습니다 ProxyJump
. 이 옵션을 명시 적으로 사용하는 다른 답변 중 하나를 시도하십시오.
ssh
수정을 제안 하는 질문에 대한 모든 답변을 무시합니다 config
.
-J user@intermediate
내가 연결해야 할 때마다.
때로는 파이프 라인 만 사용할 수도 있습니다. 그 시간은 오늘입니다.
ssh -A user@host1 ssh user@host2 cat filename > filename
당신도 업로드 할 수 있습니다
ssh -A user@host1 ssh user@host2 cat \\\> filename < filename
예, 프록시 등의 다른 솔루션이 있지만이를 수행하는 방법을 아는 것이 유용합니다.
cat
!
사용자의 ssh에서 구성 : ~/.ssh/config
Host *
UserKnownHostsFile=/dev/null
StrictHostKeyChecking=no
ServerAliveInterval 300
ServerAliveCountMax 2
ForwardAgent yes
Host jump server
HostName server.company.org
User root
Host jump1 server1
HostName server1.dmz.company.org
User root
ProxyJump jump
Host jump2 server2
HostName server.dmz2.company.org
User root
ProxyJump jump1
Host *.intranet.company.org
User user
ProxyJump jump2
인트라넷 서버에서 3 개의 점프 서버를 통해 직접 복사 할 수 있습니다 .
scp user@server.intranet.company:/home/user/ ./*
더 이상 scp로 점프 서버를 지정할 필요가 없기 때문에 이것을 선호합니다.
scp -3 user1@remote1:/root/file1.txt user2@remote2:/root/file1.txt
-3
"두 개의 원격 호스트 사이의 카피가 로컬 호스트를 통해 전송된다."라고 옵션 설명 이 질문에 따르면 로컬 호스트가 "remote2"에 액세스 할 수 없다고 생각합니다.
-3
. 그러나 이것은 중간 시스템에서 첫 번째 시스템으로 다시 연결할 수 있다고 가정합니다.
-J
/의 이점을 보지 못한다 JumpHost
. @Joe가 언급 한 한계가 있기 때문에 반대로.