![SSH를 통해 연결된 한 컴퓨터에서 다른 컴퓨터로 파일 복사 및 가져오기](https://linux55.com/image/74754/SSH%EB%A5%BC%20%ED%86%B5%ED%95%B4%20%EC%97%B0%EA%B2%B0%EB%90%9C%20%ED%95%9C%20%EC%BB%B4%ED%93%A8%ED%84%B0%EC%97%90%EC%84%9C%20%EB%8B%A4%EB%A5%B8%20%EC%BB%B4%ED%93%A8%ED%84%B0%EB%A1%9C%20%ED%8C%8C%EC%9D%BC%20%EB%B3%B5%EC%82%AC%20%EB%B0%8F%20%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0.png)
이와 매우 유사한 질문에 대한 답변을 많이 읽었지만 실제로 내 문제에 맞는 항목을 찾을 수 없습니다. 상황은 이렇습니다. 주소가 "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
또 다른 방법은 address
sshd가 실행 중이라고 가정하고 컴퓨터에서 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에 액세스할 수 있습니다.