SCP giữa hai mạng


12

Tôi cần chuyển một tập tin giữa hai máy tính không được kết nối với cùng một mạng. Tôi có một máy tính thứ ba có thể nhìn thấy cả hai mạng thông qua VPN.

Từ máy tính thứ ba, tôi có thể làm:

scp root@firstcomputer:./file ./

Và kết thúc việc chuyển tiền bằng câu sau:

scp ./file root@secondcomputer:./

Nhưng tôi không thể làm điều đó chỉ trong một dòng, như sau:

scp root@firstcomputer:./file root@secondcomputer:./

Phản hồi lỗi là

ssh: connect to host secondcomputer port 22: No route to host
lost connection

Tôi nhận ra rằng có lẽ bởi vì máy tính thứ nhất không thể nhìn thấy máy tính thứ hai. Có thể cung cấp cho SCP một thông số liên quan đến thực tế rằng máy chạy chương trình SCP là máy duy nhất có thể nhìn thấy cả hai máy tính không?

Nhân tiện, máy tính thứ ba là máy Mac có Lion và nắm tay thứ hai đang chạy Debian.

Câu trả lời:


3

Bạn sẽ có thể sử dụng một đường hầm SSH.

Giả sử bạn đang cố gắng chuyển tệp từ máy tính từ xa ("từ xa") sang máy tính cục bộ ("cục bộ"), hãy thiết lập đường hầm qua máy tính thứ ba ("gateway") bằng cách nhập tệp này vào máy tính cục bộ của bạn:

ssh -fNL 12345:remote:22 gatewaylogin@gateway

Sau đó, bạn có thể chạy một số lượng lệnh SCP không giới hạn trên đường hầm này (vẫn gõ trên máy tính cục bộ của bạn):

scp -P 12345 remotelogin@localhost://path/to/remote/file /local/path/where/you/want/file

Tôi vừa thử nghiệm cái này trên mạng của tôi, và nó hoạt động hoàn hảo.

Phương pháp trên là ổn nếu mạng từ xa an toàn, nhưng nếu nó không an toàn, bạn cần thiết lập một đường hầm giữa cục bộ và cổng, và một đường hầm khác giữa cổng và từ xa, liên kết hai bằng một số cổng chung.


21

Tùy chọn scp -3 nên là những gì bạn đang tìm kiếm. Để đặt nó trong ví dụ của bạn:

scp -3 root@firstcomputer:./file root@secondcomputer:./

Lưu ý rằng tùy chọn -3 được giới thiệu lần đầu tiên trong OpenSSH 5.7, được phát hành đầu năm 2011.


Scp của tôi không triển khai -3 khi tôi thực hiện comand tôi nhận tùy chọn scp: bất hợp pháp - 3 cách sử dụng: scp [-1246BCEpqrv] ...
JorgeO

1
Đúng rồi. -3 chỉ có sẵn trong phiên bản OpenSSH mới nhất, mà tôi không chắc chắn rằng Debian đã triển khai chưa.
Rilindo

Ahh, xin lỗi về điều đó. Cập nhật câu trả lời liên quan đến yêu cầu phiên bản.
andol

1

Bạn có thể thử điều này:

root@firstcomputer:./file /tmp && scp /tmp/file root@secondcomputer:./ && rm /tmp/file

Điều này sẽ sao chép tệp vào thư mục / tmp trên máy tính thứ ba và nếu thành công, nó sẽ sao chép tệp đó sang máy tính thứ cấp và sau đó tự dọn sạch. Vì bạn đang sử dụng toán tử &&, mỗi lệnh sẽ chỉ thực thi nếu lệnh trước thành công.


Không biết về toán tử &&. Tốt hơn so với sử dụng;
Jorge

Đây là kỹ thuật tương tự như câu hỏi ban đầu được sử dụng trong ví dụ đầu tiên, cố gắng tránh (sao chép từ máy tính A sang máy cục bộ, sau đó sao chép tệp cục bộ sang máy tính B).
Jason C
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.