Đảo ngược SCP qua kết nối SSH


17

Tôi thường cần một số tập tin từ một số máy chủ khi tôi sử dụng máy tính xách tay của mình. Nhưng nếu tôi không biết tập tin đó ở đâu, tôi phải sshvào máy chủ, nhìn xung quanh exit, và sau đó scp server:file .. Nếu tôi đang làm việc với máy tính để bàn và máy chủ của mình, cả hai đều có IP tĩnh, tôi chỉ có thể SCP tệp ngược lại ( scp desktop:~ file), nhưng tôi không thể làm điều đó cho máy tính xách tay của mình. Có cách nào hay để SCP gửi một tập tin ngược qua kết nối SSH không? Vì vậy, máy tính mà tôi kết nối với SSH sẽ gửi một tệp ngược lại cho máy khách?


Tại sao không sử dụng mDNS?
Ignacio Vazquez-Abrams

1
Tôi tin rằng câu hỏi này đã được trả lời chính xác tại đây: unix.stackexchange.com/a/2869
shellster

Câu trả lời:


20

Điều này sẽ dễ dàng hơn rất nhiều với SFTP, đây là một phần mở rộng cho SSH hỗ trợ các hoạt động tệp phức tạp hơn SCP. Hầu như tất cả các bản phân phối Unix và Linux hiện đại đều hỗ trợ nó. Để sử dụng nó, chỉ cần chạy lệnh này để kết nối với máy chủ:

sftp server

Sau đó, bạn có thể sử dụng các lệnh lscdđể duyệt xung quanh và tìm tệp bạn đang tìm kiếm. Khi bạn đã tìm thấy nó, sử dụng getlệnh để tải xuống. Ví dụ, để tải xuống file.txttrong thư mục làm việc hiện tại của bạn trên máy chủ về thư mục làm việc hiện tại của bạn trên máy cục bộ, chỉ cần chạy:

get file.txt

Để tải xuống /home/pavpanchekha/textfiles/file.txttrên máy chủ ~/textfiles/trên máy cục bộ của bạn, thay vào đó hãy chạy:

get /home/pavpanchekha/textfiles/file.txt ~/textfiles/

Ngược lại, bạn cũng có thể tải lên các tệp theo cách này. Để tải lên file.txttừ thư mục làm việc hiện tại cục bộ của bạn lên thư mục làm việc hiện tại của máy chủ, hãy nhập:

put file.txt

Bạn cũng có thể sử dụng các đường dẫn đầy đủ cho từng đường như bạn có thể với get:

put ~/textfiles/file.txt /home/pavpanchekha/textfiles/file.txt

Để có danh sách đầy đủ các lệnh SFTP có sẵn, chỉ cần chạy helptại sftp>dấu nhắc.


1
Điều này là khá mát mẻ, cảm ơn. Có cách nào để khởi chạy ngược lại nếu tôi đã kết nối SSH không? Mặt khác, tôi thấy mình đang ở đâu đó, nhận ra rằng tôi muốn chuyển tệp, thoát kết nối SSH, tạo kết nối SFTP, thoát khỏi đó và quay lại SSH.
pavpanchekha

2
@pav: Biến SSH_CLIENTmôi trường chứa địa chỉ IP của máy chủ kết nối giữa các thông tin khác. Bạn có thể sử dụng điều đó để tạo bí danh shell để dễ dàng SFTP trở lại máy chủ gốc. Chỉ cần thêm dòng này ~/.bashrcvào máy chủ: alias sftpback="sftp $(echo $SSH_CLIENT | awk '{print $1}')" Sau đó ngắt kết nối và kết nối lại với SSH để thay đổi có hiệu lực hoặc chạy như thể đó là một lệnh để nó có hiệu lực ngay lập tức. Từ đó trở đi, bạn có thể chạy sftpbacktrở lại SFTP cho máy khách mà bạn đang kết nối, bất kể đó là máy khách nào.
Bản vá lỗi

Điều này là tốt nhất !!! Cảm ơn bạn đã cứu tôi khỏi NANO (chỉnh sửa tệp trực tuyến) nó làm cho quá trình này trở nên đơn giản.
Mohsin

0

Trình quản lý tệp bảng điều khiển Midnight Commander (mc) có hệ thống VFS cho phép quản lý kết nối / tệp SFTP đến các máy chủ từ xa. Nó cũng chạy trong Cygwin trên Windows. Giao diện mặc định hiển thị hai bảng độc lập; chúng ta có thể mở thư mục từ xa SFTP trong một trong số chúng và chuyển các tệp đến / từ bảng điều khiển khác một cách dễ dàng. Bao gồm trình chỉnh sửa / trình xem tệp (mcedit) với tô sáng cú pháp.

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.