SSH를 통해 연결된 한 컴퓨터에서 다른 컴퓨터로 파일 복사 및 가져오기

SSH를 통해 연결된 한 컴퓨터에서 다른 컴퓨터로 파일 복사 및 가져오기

이와 매우 유사한 질문에 대한 답변을 많이 읽었지만 실제로 내 문제에 맞는 항목을 찾을 수 없습니다. 상황은 이렇습니다. 주소가 "machine1@address"인 컴퓨터가 있고 이 컴퓨터에서 "machine2@ Different_address"에 도달합니다. 이제 machine1의 메모리를 "영구적으로" 차지하고 싶지 않기 때문에 내 컴퓨터에서 직접 machine2로 파일을 보내거나 가져와야 합니다.

내 목표는 Python 스크립트를 작성하여 이 프로세스를 자동화하는 것입니다. 따라서 가장 좋은 해결책은 machine1의 "홈"을 열지 않는 것입니다(실제로 어떻게 부르는지 모르겠습니다. 이해하시기 바랍니다). 왜냐하면 Python 스크립트는 내가 닫을 때까지 실행을 중지하기 때문입니다(적어도 그것은 SSH를 사용할 때 무슨 일이 일어나는지 간단히 설명하겠습니다).

감사합니다!

답변1

"홈페이지" 용어와 사용자 이름의 "machineX" 형식이 혼동됩니다. 그리고 제 생각에는 Python을 사용할 필요가 전혀 없다고 생각합니다.

내 솔루션은 다음과 같습니다

machine2에 SSH 터널을 설정합니다.

mycomputer$ ssh -L2222:different_address:22 machine1@address

이제 터널을 통해 파일을 복사하거나 sshfs 또는 rsync 또는 필요한 모든 것을 사용할 수 있습니다.

mycomputer$ scp -P 2222 machine2@address:/whatever /target_local_dir

또 다른 방법은 addresssshd가 실행 중이라고 가정하고 컴퓨터에서 scp를 실행 mycomputer하거나 ssh 명령을 cat필요한 파일과 연결하는 것입니다.

ssh machine1@address ssh machine2@different_address cat /path_to_the_remote_file > /target_local_file

(필요에 따라 SSH 키를 배포합니다).

답변2

scp를 사용할 수 있습니다.

scp 파일 user@machine2:/home/user

혹은 그 반대로도

scp user@machine2:/홈/사용자/파일/로컬/디렉토리

답변3

machine1에서 호스트까지 SSH 터널을 열어보세요.

ssh user1@machine1-ip-address -p machine1-ssh-port -L local-port:machine2-ip-address:machine2-ssh-port -N

예를 들어

ssh user1@machine1 -p 22 -L 8181:machine2:22 -N

터미널에서 이 작업을 수행하면 machine1 비밀번호를 묻는 메시지가 표시됩니다. 터널을 닫게 되므로 터미널을 닫아서는 안 됩니다.

이제 두 번째 터미널을 열면 컴퓨터에서 machine2에 연결할 수 있습니다. 명령은 다음과 같아야합니다

ssh user2@machine2 -p 8181

이렇게 하면 로컬 컴퓨터에서 SSH를 통해 machine2에 액세스할 수 있습니다.

관련 정보