원격지에 로그인 한 상태에서 로컬의 IP 주소를 몰라도 원격지에서 로컬로 SCP가 가능합니까?


31

정기적으로 원격 터미널 세션에서 로컬 컴퓨터로 파일을 복사하려고합니다. 일반적으로 원격 세션에서 로그 아웃하고 로컬에서 scp 전송을 호출하여 파일을 원격에서 로컬로 복사합니다. 그러나 이것은 약간 긴 바람을 느낍니다. 시간을 절약하기 위해 SSH를 통해 원격으로 로그인 한 상태에서 파일을 전송하고 싶습니다. 로컬 컴퓨터가 동적 IP 범위에서 인터넷에 연결되어 있으므로 원격으로 연결하는 방법을 잘 모르겠습니다. 그러나 원격 세션이 랩톱에서 시작될 때 반드시 랩탑으로 돌아갈 수있는 바로 가기가 scp에 있어야합니다 ... 맞습니까?

답변:


20

이를 위해 SSH 터널링 을 사용할 수 있습니다 .

터널링을 사용하면 로컬 컴퓨터에서 원격 컴퓨터로 또는 원격 컴퓨터에서 로컬 컴퓨터로 TCP 포트를 전달할 수 있습니다. 방화벽 뒤의 원격 시스템에서 로컬 시스템으로 SMTP 또는 IMAP 포트를 전달하는 데 자주 사용하고 로컬에서 실행되는 것처럼 로컬로 서비스에 액세스합니다.

로컬 시스템에서 원격 시스템으로 포트 22 (SSH)를 전달하려면 다음을 시도하십시오.

ssh -R12345:localhost:22 yourremoteuser@remotemachine

(localhost는 원격 시스템의 로컬 이름을 나타냅니다)

이것을 실행하면 다음을 사용하여 집으로 돌아갈 수 있습니다.

ssh -p12345 yourlocaluser@127.0.0.1

scp를 사용할 때 다음과 같은 작업을 수행합니다 (scp에는 포트 전달을위한 대문자 P가 있음).

scp -P12345 filename 127.0.0.1:/tmp/filename

다른 방향으로의 포트 전달 (원격에서 로컬로)은 -R 대신 -L을 사용합니다.

위의 명령은 터미널 ssh 클라이언트를 사용한다고 가정합니다. PuTTY for Windows와 같은 그래픽 클라이언트도 터널링을 지원합니다


IP가 정적이 아닌 OP의 질문에 대답하지 않습니다.

2
내가 뭔가를 놓치지 않으면 OP가 현재 원격 컴퓨터에서 로컬로 다시 연결하는 것이 좋습니다. 터널링은 SSH 세션을 통해 수행됩니다. SSH 연결이 동적 로컬 시스템에서 원격으로 설정되면 성공하여 원격 시스템에서 수신 포트를 설정하여 원래 위치로 다시 터널링 할 수 있습니다.

로컬 컴퓨터에서 SSH 서버를 설정하고 인증을 처리하려면 OP가 필요합니다. 따라서 이것은 일부 사용 사례에서 가치가있는 것보다 더 문제가 될 수 있습니다.
Septagram

이는 동적 IP뿐만 아니라 원격에서 로컬로의 ssh 연결을 금지하는 방화벽에서도 작동합니다. 매우 유용한 답변입니다!

3
~C이스케이프 를 사용하여 원격 포트 전달을 설정하여 훨씬 편리하게 사용할 수 있습니다 . 를 입력 <Enter>~C-R 12345:localhost:22<Enter>하면 이미 설정된 SSH 세션을 종료하지 않고 터널이 있습니다.

6

원격 시스템의 명령 줄에서 다음을 시도하십시오. 라우터에서 포트 전달을 활성화해야 할 수도 있습니다.

scp <file on remote machine> ${SSH_CLIENT%% *}:<directory on local machine>

출처 : 파일을 연결중인 호스트로 쉽게 scp (commandlinefu.com)


1
이것이 사람들을 위해 무엇을했는지 설명하려면 ${SSH_CLIENT%% *}로컬 컴퓨터의 IP를 출력하십시오. 따라서 전체 명령은 파일 전송을 위해 원격 시스템에서 로컬 시스템으로 scp 세션을 엽니 다. 원격 시스템에서 로컬 시스템으로 SSH 할 수있는 경우에만 수행 할 수 있습니다.
bizi

2
export ME="${SSH_CLIENT%% *}"쉘 rc 파일에 같은 것을 추가하면 더 향상시킬 수 있습니다 . 그런 다음 간단히 사용할 수 있습니다scp <file> $ME:<local path>
kralyk

그러나 이것은 효과적입니다. 참고 : VPN을 통해 로그인하면 파일은 컴퓨터가 아닌 다른 곳에서 종료됩니다.
kap

1

아마 zssh ?

zssh (Zmodem SSH)는 보안 쉘 (ssh)을 사용하는 동안 원격 시스템으로 파일을 대화식으로 전송하기위한 프로그램입니다. scp의 편리한 대안으로, 다른 세션을 열지 않고 파일을 전송하고 자신을 다시 인증 할 수 있습니다.

zssh는 ssh를위한 대화식 래퍼입니다

그것은 zmodem 파일 전송의 훌륭한 rz, sz 구현을 사용합니다.


1

이 질문을 어지럽히면 이것이 쉽게 달성하고자 하는 것입니다.

관련 답변은 다음과 같습니다. 홈 네트워크 외부에있을 때 원격 시스템에서 로컬 시스템으로 SCP를 보내려면 어떻게해야합니까?

네트워크 외부에서 ssh에 대한 액세스를 허용해야합니다. 광대역 라우터의 포트를 서버의 LAN IP로 전달하면됩니다. 그러나 외부에서 ssh 액세스를 허용하는 데 약간의 보안 문제가 있으므로 ssh, 부분적으로 키 기반 인증을 보호하고 비밀번호 인증을 완전히 비활성화하는 방법을 찾고 싶을 수도 있습니다.


0

한 가지 해결책은 로컬 시스템에서 ssh 세션을 일시 중단하고 로컬 시스템에서 복사를 수행 한 다음 중단 한 ssh 세션을 다시 시작하는 것입니다.

예를 들어, myuser @ remote에 연결되어 있고 lol.txt 파일 을 로컬 컴퓨터 에 복사하려고 한다고 가정 하십시오 . 먼저 로컬 컴퓨터에서 ssh를 일시 중단하고 싶습니다. 일반적으로 Ctrl- Z를 사용 하여 일시 중단하지만 원격 쉘로 전송되므로 ssh에서는 작동하지 않습니다. 대신, ssh escape sequence를 사용해야합니다 Enter~. 따라서 ssh를 일시 중단하려면 Enter~ Ctrl-를 누르십시오 Z. 이제 로컬 컴퓨터에서 명령을 실행할 수 있으며

user@localmachine:~$ scp user@remote:/path-to-file/lol.txt /dest-path/lol.txt

파일을 복사 한 다음 정확히 ssh로 돌아갑니다.

user@localmachine:~$ fg


그러나 문제는 원격에서 복사되지 않고, 문제는 원격으로 복사되고 있습니다. 쉘을 일시 중단하는 것이 어떻게 처리되는지 알 수 없습니다.
alex

다른 방법으로도 작동합니다. 아이디어는 세션을 종료하는 대신 일시 중단하여 조금 더 쉽게 만드는 것입니다.
Steen Schütt

0

더 간단한 솔루션을 원하면 dropbox 계정을 열고 원격 컴퓨터로 이동하여 wget ( 여기 에서 수정 된 버전)을 수행 하십시오 . wget --no-check-certificate https://www.dropbox.com/s/2123jshf/ABC.pdf?dl=1 -O abc.pdf

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