Trong SSH, làm thế nào để tôi chuyển sang hệ thống cục bộ của mình?


129

Tôi đã sshvào thư mục webhost của tôi và tartải ứng dụng web để tải xuống. Khi tôi cố gắng mvđể ~/mydirectory/backupshay /home/mydirectory/backups, nó định nghĩa "nhà" như là người chủ của tôi trên webhost mà tôi ssh'ed vào.

Làm cách nào để tôi chuyển từ ssh sang ổ đĩa cục bộ trong khi vẫn ở trong hệ thống của webhost?


Bạn đang kết nối hệ điều hành nào?
Zoredache

Câu trả lời:


181

Điều đầu tiên trước tiên: ssh là một cách để đăng nhập từ xa vào máy tính khác. Shell (dòng lệnh) bạn nhận được sau khi bạn ssh là (khá nhiều) giống như khi bạn đã mở một xterm trong máy từ xa. Nếu cung cấp không có cách như vậy để di chuyển các tập tin.

Tuy nhiên, thực tế là máy tính từ xa chấp nhận kết nối ssh cung cấp cho bạn một số tùy chọn để trao đổi tệp:

Sử dụng scp Để sao chép từ máy tính cục bộ của bạn sang điều khiển từ xa, nhập vào máy tính cục bộ:

scp /tmp/file user@example.com:/home/name/dir

(trong đó / tmp / tệp có thể được thay thế bằng bất kỳ tệp cục bộ nào và / home / name / dir bằng bất kỳ thư mục từ xa nào)

Để sao chép từ máy tính từ xa sang máy tính cục bộ, hãy nhập vào máy tính cục bộ :

scp user@example.com:/home/name/dir/file /tmp

Sử dụng sshfs Đây là một bản nâng cao hơn một chút nhưng đẹp hơn nhiều (khi kết nối internet của cả hai máy tính đều tốt. Nếu không, hãy sử dụng scp)

Bạn có thể "liên kết" một thư mục từ máy tính từ xa đến một thư mục (trống) của máy tính cục bộ. Giả sử bạn "liên kết" / some / remote / dir từ máy tính từ xa đến / home / youruser / remotecomp trong máy tính của bạn. Nếu có một tệp / some / remote / dir / file trong máy tính từ xa, bạn có thể thấy nó trên / home / youruser / remotecomp / file. Bạn có thể sao chép và mv như bình thường, thậm chí bạn có thể thay đổi các tệp và thư mục từ xa.

Tuy nhiên, lưu ý rằng khi kết nối kết thúc, / home / youruser / remotecomp lại trở thành một thư mục trống và bạn chỉ giữ trong máy tính cục bộ các tệp bạn đã sao chép vào các thư mục khác

Để đạt được điều này:

1) cài đặt sshfs:

sudo apt-get install sshfs

2) tạo một thư mục trống

mkdir /home/youruser/remotecomp

3) "liên kết" hai thư mục (thuật ngữ bên phải là mount)

sshfs user@server.com:/some/remote/dir /home/youruser/remotecomp

4) Thưởng thức

5) "hủy liên kết" các thư mục

fusermount -u /home/youruser/remotecomp

Nếu máy tính cục bộ chạy windows Bạn có thể tìm thấy các phiên bản scpcho windows. Xem, ví dụ, wincp


Có cách nào để sao chép tệp từ máy từ xa sang máy cục bộ thông qua "thiết bị đầu cuối trên máy từ xa" không? Trong trường hợp của bạn, bạn đã sử dụng thiết bị đầu cuối trên máy cục bộ. Tôi đang nói về một tình huống mà máy cục bộ là windows và remote là ubfox và tôi đã đăng nhập vào máy từ xa thông qua ssh.
chandresh

Thường thì không. Theo như tôi biết, sao chép qua "thiết bị đầu cuối trong máy từ xa" có nghĩa là bạn cần máy chủ SSH trong "máy cục bộ" (tôi cố tình bỏ qua điều đó trong câu trả lời của tôi, nhưng "thực tế là máy tính từ xa chấp nhận kết nối ssh" có nghĩa là để nói "thực tế là máy tính từ xa đang chạy máy chủ ssh")
josinalvo

Tuy nhiên, bạn có thể tìm thấy "khách hàng scp" cho windows. Xem, ví dụ: woncp.net/eng/doad.php
josinalvo

Tôi thích sshfstùy chọn này
Fibo Kowalsky

Nếu bạn đang chuyển một tệp lớn, hãy sử dụng rsync qua ssh với rsync -P -e ssh /tmp/file user@example.com:/home/name/dir. Điều này là do nếu chuyển tập tin thất bại nửa chừng, scpsẽ chỉ xóa tập tin. Mặt khác, nếu bạn sử dụng rsyncvới -Ptùy chọn, nó sẽ giữ một tệp chưa hoàn chỉnh trên máy từ xa và khi bạn khởi động lại chuyển, nó sẽ đảm bảo rằng những gì đã có trên máy từ xa khớp với tệp trên máy cục bộ của bạn và sau đó tiếp tục nơi chuyển đi.
Boris

16

Bạn có thể sử dụng scphoặc rsync. Trong hệ thống địa phương của bạn:

scp remoteuser@remotehost:/remote/dir/file /local/dir/

Nhưng, vì bạn đã đề cập đến sao lưu, tôi cho rằng nó sẽ tăng dần và bạn sẽ cần phải làm điều đó mọi lúc mọi nơi. Vì vậy, rsynclà một lựa chọn tốt hơn để sao lưu gia tăng. Trên vỏ địa phương của bạn:

rsync -avz -e ssh remoteuser@remotehost:/remote/dir /local/dir/

xem rsync(1)scp(1)trang man cho các tùy chọn.


10

Bạn có thể sử dụng bản sao an toàn scp .

Từ vỏ địa phương của bạn:

scp -C username@webhost:/path/of-the/tar.archive /home/mydirectory/backups/

Ví dụ này sẽ sao chép qua ssh từ /path/of-the/tar.archive của webhost của bạn đến / home / mydirectory / backups /

Tùy chọn bổ sung:

-C : Cho phép nén


6

Tôi đã từng gặp vấn đề tương tự. Đây là giải pháp dễ dàng: -

  1. Mở nautilus (trình duyệt tệp)
  2. Bấm vào + Other Locationsở dưới cùng của bảng điều khiển bên trái.
  3. Ở phía dưới có một dải Connect to server. Viết địa chỉ ssh vào hộp đầu vào như ssh://111.222.333.444/.
  4. Nhập tên người dùng và mật khẩu của bạn vào hộp thoại sẽ mở ra.
  5. Sau khi xác thực thành công, bạn sẽ ở homevị trí từ xa. Hãy di chuyển tập tin ở đây và ở đó.

Câu trả lời chính xác! Đơn giản và gần nhất với một câu trả lời cho câu hỏi thực tế, tức là Làm thế nào để bạn mv từ trong máy tính từ xa ssh. Câu trả lời là bạn không thể, bạn làm điều đó từ máy tính cục bộ. Hay cái này! Bạn thực hiện nó bằng đồ họa từ trình thám hiểm của mình để ít nhất cho người dùng thực sự có vẻ như bạn có thể di chuyển các tệp trực tiếp từ xa sang cục bộ.
Kvothe

2

Các câu trả lời khác đề nghị rsynchoặc scp, cả hai đều yêu cầu bạn biết vị trí của tệp bạn muốn sao chép trên máy từ xa.

Thay vào đó, nếu bạn muốn có thể chọc vào máy từ xa, như bạn có thể với ssh, bạn muốn chạy sftp. Đăng nhập vào máy chủ rất giống với ssh, nhưng khi bạn vào, hãy nhập helpđể nhận danh sách các lệnh - nó cho phép bạn tự di chuyển trên cả máy cục bộ và máy từ xa, và dễ dàng chuyển tệp qua lại.


1

Thật lạ khi không thể từ bên trong ssh. Trong một thiết bị đầu cuối thông thường, người ta có thể gửi / nhận tệp bằng cách sử dụng các lệnh zmodem.

Điều này đã giúp google lên zssh: http://zssh.sourceforge.net/ . Người ta sẽ phải chạy nó như một trình bao bọc cho bản gốc ssh.

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.