Có thể SCP từ một điều khiển từ xa đến cục bộ trong khi đăng nhập vào điều khiển từ xa và không biết địa chỉ IP của địa phương?


31

Tôi thường xuyên thấy mình muốn sao chép một tập tin từ phiên thiết bị đầu cuối từ xa vào máy cục bộ của mình. Thông thường tôi đăng xuất khỏi phiên từ xa và gọi chuyển scp từ cục bộ để sao chép tệp từ xa sang cục bộ. Nhưng điều này cảm thấy một chút dài hơi. Tôi muốn chuyển tệp trong khi đăng nhập vào điều khiển từ xa qua SSH để tiết kiệm thời gian. Máy cục bộ của tôi được kết nối với internet từ dải IP động nên tôi không bao giờ chắc chắn làm thế nào để kết nối với nó từ xa. Nhưng chắc chắn, vì phiên từ xa bắt nguồn từ máy tính xách tay của tôi, phải có một phím tắt trong scp để quay lại máy tính xách tay của tôi ... Phải không?

Câu trả lời:


20

Bạn có thể sử dụng SSH đường hầm cho việc này.

Sử dụng đường hầm, bạn có thể chuyển tiếp một cổng TCP từ máy cục bộ của mình sang máy từ xa hoặc từ máy từ xa đến máy cục bộ của bạn. Tôi sử dụng nó thường xuyên để chuyển tiếp, ví dụ các cổng SMTP hoặc IMAP từ một máy từ xa phía sau tường lửa đến máy cục bộ của tôi (và sau đó truy cập các dịch vụ cục bộ, như thể chúng đang chạy cục bộ).

Để chuyển tiếp cổng 22 (SSH) từ máy cục bộ của bạn sang máy từ xa, hãy thử điều này:

ssh -R12345:localhost:22 yourremoteuser@remotemachine

(Lưu ý rằng localhost dùng để chỉ tên cục bộ của máy từ xa)

Sau khi chạy, bạn sẽ có thể trở về nhà bằng cách sử dụng:

ssh -p12345 yourlocaluser@127.0.0.1

Khi sử dụng scp, bạn sẽ làm một cái gì đó như (scp có chữ hoa P để chuyển tiếp cổng):

scp -P12345 filename 127.0.0.1:/tmp/filename

Chuyển tiếp cổng theo hướng khác (từ xa đến cục bộ) sử dụng -L thay vì -R.

Các lệnh trên giả định rằng bạn đang sử dụng máy khách ssh terminal. Các máy khách đồ họa, như PuTTY cho Windows, cũng hỗ trợ tạo đường hầm


Không trả lời câu hỏi của OP có IP không tĩnh.

2
Trừ khi tôi bỏ lỡ điều gì đó, điều này sẽ tốt cho OP kết nối từ máy hiện tại từ xa trở lại cục bộ. Việc đào hầm sẽ được thực hiện thông qua phiên SSH. Khi kết nối SSH được thiết lập từ máy cục bộ động đến điều khiển từ xa, nó sẽ thành công và do đó sẽ có thể thiết lập một cổng nghe trên máy từ xa dẫn trở lại nơi nó đến.

Điều này sẽ yêu cầu OP thiết lập máy chủ SSH trên máy cục bộ của mình và chăm sóc xác thực. Vì vậy, điều này có thể rắc rối hơn giá trị của nó trong một số trường hợp sử dụng.
Septagram

Điều này không chỉ hoạt động đối với các IP động, nó còn hoạt động trên các tường lửa cấm kết nối ssh từ xa đến cục bộ. Câu trả lời rất hữu ích!

3
Bạn có thể có nó thuận tiện hơn nữa bằng cách đặt chuyển tiếp cổng từ xa với ~Clối thoát. Chỉ cần gõ <Enter>~C-R 12345:localhost:22<Enter>và bạn có đường hầm của mình mà không cần rời phiên SSH đã được thiết lập.

6

Hãy thử các dòng sau trong dòng lệnh từ máy từ xa, bạn có thể cần bật chuyển tiếp cổng trên bộ định tuyến của mình.

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

Nguồn: Dễ dàng quét một tệp trở lại máy chủ mà bạn đang kết nối từ (commandlinefu.com)


1
Để giải thích điều này cho những người gặp phải điều này, hãy ${SSH_CLIENT%% *}xuất IP của máy cục bộ của bạn. Vì vậy, toàn bộ lệnh mở một phiên scp từ máy từ xa đến máy cục bộ của bạn để truyền tệp. Điều này chỉ có thể được thực hiện nếu bạn có thể SSH đến máy cục bộ của mình từ máy từ xa.
bizi

2
Điều này có thể được cải thiện hơn nữa bằng cách thêm một cái gì đó như export ME="${SSH_CLIENT%% *}"vào tập tin RC shell của bạn. Sau đó, bạn có thể chỉ cần sử dụngscp <file> $ME:<local path>
kralyk

Tuyệt vời, điều này hoạt động, tuy nhiên lưu ý: Nếu bạn đăng nhập qua VPN, các tệp sẽ không kết thúc trên máy của bạn, mà ở một nơi khác.
kap

1

Có lẽ zssh ?

zssh (Zmodem SSH) là một chương trình để chuyển các tệp tương tác sang một máy từ xa trong khi sử dụng shell an toàn (ssh). Nó được dự định là một sự thay thế thuận tiện cho scp, cho phép truyền tệp mà không cần phải mở một phiên khác và tự xác thực lại.

zssh là một trình bao bọc tương tác cho ssh

Nó sử dụng các triển khai rz, sz đáng kính của việc chuyển tập tin zmodem.


1

Nâng cao câu hỏi này, đây là điều tôi muốn làm dễ dàng đạt được .

Đây là câu trả lời liên quan: Làm cách nào để SCP từ máy từ xa sang máy cục bộ khi tôi ở ngoài mạng gia đình?

Bạn cần cho phép truy cập vào ssh từ bên ngoài mạng của bạn. Điều này được thực hiện bằng cách chuyển tiếp một cổng trên bộ định tuyến băng thông rộng của bạn đến ip lan của máy chủ của bạn. Tuy nhiên, có một số lo ngại về bảo mật khi cho phép truy cập ssh từ bên ngoài, vì vậy bạn cũng có thể muốn xem xét các phương pháp để bảo mật ssh, xác thực dựa trên khóa cụ thể và vô hiệu hóa hoàn toàn xác thực mật khẩu.


0

Một giải pháp sẽ là tạm dừng phiên ssh trên máy cục bộ, thực hiện sao chép trên máy cục bộ và sau đó tiếp tục phiên ssh của bạn nơi bạn rời đi.

Ví dụ: giả sử tôi được kết nối với myuser @ remote và tôi muốn sao chép tệp lol.txt vào máy tính cục bộ của mình. Đầu tiên tôi muốn tạm dừng ssh trên máy cục bộ của tôi. Thông thường bạn sẽ sử dụng Ctrl- Zđể tạm dừng, nhưng điều này sẽ không hoạt động trong ssh vì nó sẽ được gửi đến shell từ xa. Thay vào đó, bạn phải sử dụng chuỗi thoát ssh Enter~. Vì vậy, để đình chỉ ssh nhấn Enter~ Ctrl- Z. Bây giờ bạn có thể chạy các lệnh trên máy cục bộ của mình và có thể làm

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

để sao chép tệp và sau đó quay lại ssh chính xác nơi bạn để nó với

user@localmachine:~$ fg


nhưng vấn đề không phải là sao chép từ xa, vấn đề là sao chép từ xa, tôi không thấy cách treo vỏ làm bất cứ điều gì để giải quyết điều đó ...
alex

Vâng, nó hoạt động theo cách khác quá. Ý tưởng chỉ là bạn tạm dừng phiên thay vì thoát nó, điều này làm cho nó ít nhất một chút dễ dàng hơn.
Steen Schütt

0

Nếu bạn muốn một giải pháp đơn giản hơn, chỉ cần mở tài khoản dropbox, đi đến máy từ xa và làm wget (phiên bản sửa đổi từ đây ): wget --no-check-certificate https://www.dropbox.com/s/2123jshf/ABC.pdf?dl=1 -O abc.pdf

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.