Chuyển tệp đến / từ phiên mà tôi đã đăng nhập bằng PuTTY


81

Tôi đã đăng nhập vào một máy chủ từ xa bằng PuTTY.

Lệnh chuyển tệp từ máy cục bộ của tôi sang máy tôi đã đăng nhập trên PuTTY là gì?

Câu trả lời:


70

Đây có lẽ không phải là câu trả lời trực tiếp cho những gì bạn đang hỏi, nhưng khi tôi cần chuyển tệp qua phiên SSH, tôi sử dụng WinSCP , đây là một chương trình truyền tệp tuyệt vời qua SCP hoặc SFTP. Tất nhiên điều này giả sử bạn đang sử dụng Windows.


Tôi đã thử WinScp nhưng tôi cần chạy một lệnh trên hộp để đạt được privilages. Điều này dường như không thể sử dụng WinScp?
blue-sky

@ user470184: đúng. Tôi thường chạy Putty và WinSCP song song. Trên thực tế, bạn có thể bắt đầu với WinSCP và sau đó có một menu ngữ cảnh để "mở trang web này bằng Putty" nếu bạn muốn.
Guido Domenici

@GuidoDomenici Xem trải nghiệm của tôi với WinSCP tại đây: ux.stackexchange.com/q/35936/4424 :-)
corsiKa

1
blue-sky: Để tạo sudotrong WinSCP, hãy xem Câu hỏi thường gặp Làm cách nào để thay đổi người dùng sau khi đăng nhập (ví dụ: su root)?
Martin Prikryl

WinSCP không kết nối với máy chủ, vì máy chủ sử dụng thông tin xác thực bằng khóa riêng. WinSCP không hỗ trợ khóa SSH-1. Tôi đang tìm kiếm chương trình hỗ trợ loại khóa đó như thế nào. Bạn có bất cứ ý tưởng?
mishanon

41

  • Bấm vào menu bắt đầu.
  • Bấm chạy
  • Trong hộp mở, gõ cmd rồi bấm ok
  • Tại dấu nhắc lệnh, nhập:

    c:> pscp source_file_name userid @ server_name: / path / destination_file_name.

Ví dụ:

c:> pscp november2012 wrhse@warehouse.cit.cornell.edu: / mydata / november2012.

  • Khi được kích hoạt, hãy nhập mật khẩu của bạn cho máy chủ.

Thưởng thức


14
Và bạn có thể đảo ngược nó như sau: 'c:> pscp wrhse@warehouse.cit.cornell.edu: / mydata / november2012 november2012' để nhận tệp từ máy từ xa.
xan 16/02/13

3
pscp là một phần của gói putty nhưng nó không nằm trên đường dẫn của tôi, vì vậy tôi cần thêm nó vào đường dẫn của mình trước khi nó hoạt động. pscp phải ở cùng vị trí với exe putty. trong trường hợp của tôi là c: \ Program Files (x86) \ PuTTY.
Frek

Điều gì sẽ xảy ra nếu chúng ta cần chuyển đổi người dùng sau khi đăng nhập? sudo su - user
Stevoisiak

1
Nếu bạn không cài đặt toàn bộ gói PuTTY, bạn sẽ cần tải xuống chương trình pscp riêng biệt từ chiark.greenend.org.uk/~sgtatham/putty/latest.html
James Newton

16

PuTTY thường đi kèm với một ứng dụng khách gọi là psftp mà bạn có thể tận dụng cho mục đích này. Tôi không tin rằng bạn có thể làm điều đó thông qua ứng dụng khách PuTTY tiêu chuẩn (mặc dù tôi có thể được chứng minh là sai về điều đó).

PuTTY chỉ cấp cho bạn quyền truy cập để thao tác với máy từ xa. Nó không cung cấp liên kết trực tiếp giữa hai hệ thống tệp hơn là ngồi xuống máy từ xa.


psftp không được cài đặt trên máy tính từ xa
màu xanh bầu trời

4
Nó không cần phải được. Chỉ trên máy cục bộ của bạn.
corsiKa

Và đây là một số thông tin để chuyển tệp bằng psftp: pic.dhe.ibm.com/infocenter/tsmscv13/v1r0m0/…
shasi kanth

8

Không có cách nào để bắt đầu chuyển tệp trở lại / từ Windows cục bộ từ phiên SSH được mở trong cửa sổ PuTTY.

Mặc dù PuTTY hỗ trợ chia sẻ kết nối.

Trong khi bạn vẫn cần chạy ứng dụng truyền tệp tương thích ( pscphoặc psftp), không cần đăng nhập mới, nó sẽ tự động (nếu được bật) sử dụng phiên PuTTY hiện có.

Để bật tính năng chia sẻ, hãy xem:
Chia sẻ kết nối SSH giữa các công cụ PuTTY .


Một cách khác là sử dụng WinSCP, một ứng dụng khách GUI SFTP / SCP. Trong khi duyệt trang web từ xa, bạn có thể mở thiết bị đầu cuối SSH đến cùng một trang web bất cứ lúc nào bằng cách sử dụng nút Mở trong PuTTY .

Xem Phần mở đầu trong PuTTY .

Với một thiết lập bổ sung, bạn thậm chí có thể làm cho PuTTY tự động điều hướng đến cùng một thư mục mà bạn đang duyệt với WinSCP.

Xem Mở PuTTY trong Cùng Thư mục .

(Tôi là tác giả của WinSCP)


1
Martin, WinSCP là một người rất giỏi. Và cảm ơn bạn, thực sự :-)
shadowf


6

Nếu nó chỉ là một tệp, bạn có thể sử dụng quy trình sau (trong putty):

  1. vi filename.extension (mở tên tệp mới trong thư mục hoạt động trên máy chủ),
  2. sao chép + nhấp chuột phải khi qua putty (sao chép và dán),
  3. chỉnh sửa và lưu. => lệnh của trình soạn thảo vi

Chỉnh sửa quyền đối với tệp bằng lệnh tiếp theo: chmod u + x filename.extension


Điều này hoạt động tốt một cách đáng kinh ngạc đối với các tệp văn bản sẽ nằm gọn trong khay nhớ tạm. Đối với các tệp nhị phân, hãy xem xxd nhưng bạn cũng sẽ cần một chương trình Windows để chuyển đổi nhị phân sang hex. ví dụ: HEXDUMP
James Newton

4

Vì bạn đã hỏi về đến / từ, đây là một mẹo hiệu quả cho phần 'từ'. Mở màn hình 'Thay đổi cài đặt ...', Thiết bị đầu cuối và trong 'Máy in để gửi đầu ra máy in ANSI tới:' chọn 'Chỉ chung / Chỉ văn bản'

Bây giờ trên hệ thống từ xa, hãy chạy điều này trên một dòng:

tput mc5; cat whatever.txt; tput mc4

Putty sẽ thông báo cho bạn rằng tệp đã được lưu. Điều này đang làm là đặt thiết bị đầu cuối vào chế độ máy in (tput mc5), in tệp ra màn hình (cat), sau đó tắt chế độ máy in (tput mc4). Nếu bạn không đặt tất cả các lệnh trên một dòng, màn hình sẽ xuất hiện đóng băng vì Putty đang lưu tất cả đầu ra của thiết bị đầu cuối vào một tệp ở chế độ nền.

Nếu bạn đang sử dụng một hệ thống hạn chế hơn không có lệnh tput (ví dụ: qnap), bạn có thể thử printf "\ x1b [5i" thay vì tput mc5 và printf "\ x1b [4i" thay vì tput mc4 .

Lệnh ở giữa chỉ là bất cứ thứ gì được in ra màn hình. Vì vậy, hãy sử dụng tail -n 10000 blah.log để tải xuống 10k dòng cuối cùng của tệp nhật ký hoặc sử dụng bộ mã hóa base64 để ánh xạ tệp nhị phân thành tệp mà bạn có thể in (và sau đó giải mã trên hệ thống cục bộ của bạn):

printf "\x1b[5i"; openssl enc -base64 -in something.zip; printf "\x1b[4i"

Ngài là một thiên tài! Tôi đã tìm kiếm cách chuyển tệp qua phiên SSH đang hoạt động trong một thời gian và đây là cách đầu tiên tôi có thể dễ dàng thực hiện. Bạn có biết liệu kỹ thuật này có thể được sửa đổi để hoạt động khi sử dụng thiết bị đầu cuối trên máy khách dựa trên macOS hoặc Linux (tức là các thiết bị đầu cuối khác với PuTTY) không?
Dominic P

3

Nếu bạn phải xác thực khóa cá nhân; tại Command Prompt (cmd), chạy

Đầu tiên;

set PATH=C:\PuttySetupLocation

Thứ hai;

pscp -i C:/MyPrivateKeyFile.ppk C:/MySourceFile.jar ubuntu@55.69.41.155:/home/ubuntu

Ngoài ra, nếu bạn cần các tùy chọn bổ sung, hãy xem liên kết sau. https://the.earth.li/~sgtatham/putty/0.60/htmldoc/Chapter5.html


Mục đích là set PATH=C:\PuttySetupLocationgì? Tại sao bạn không làm C:\PuttySetupLocation\pscptrực tiếp? - Dù muốn sửa đổi PATHthì bạn cũng nên thêm đường dẫn mới chứ không nên đặt lại hoàn toàn.
Martin Prikryl

Tập hợp đang chạy PATH = C: \ PuttySetupLocation không đặt lại đường dẫn, chỉ thêm PSCP vào đường dẫn như một mục nhập mới. Ngoài ra, bạn đã đúng khi sử dụng C: \ PuttySetupLocation \ pscp . Nó cũng có thể hợp lệ.
ÖMER TAŞCI

1
Nó KHÔNG đặt lại đường dẫn.
Martin Prikryl

mật khẩu nào? Nó không được liên quan đến bất kỳ cài đặt mật khẩu nào.
ÖMER TAŞCI

Mật khẩu gì? Có thể bạn đọc bình luận của tôi ngay lập tức sau khi tôi đăng nó với lỗi đánh máy "mật khẩu" , thay vì "đường dẫn" . Tôi đã sửa nó một giây sau khi đăng (rất lâu trước khi bạn nhận xét).
Martin Prikryl

3

Nhìn đây:

http://web.archive.org/web/20170106202838/https://it.cornell.edu/services/managed_servers/howto/file_transfer/fileputty.cfm#puttytrans

Nó khuyên bạn nên sử dụng pscp.exetừ PuTTY, có thể tìm thấy ở đây: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

Không thể chuyển trực tiếp như FTP vì tất cả các lệnh trong phiên của bạn đều được gửi đến máy chủ.


Cảm ơn, tôi đang đăng nhập bằng khóa cá nhân mà liên kết abolve có vẻ không chi tiết?
blue-sky

1
@ user470184 Nếu bạn quản lý để đi hai năm mà không phát hiện ra như thế nào, một số hướng dẫn như thế nào điều này có thể được thực hiện có thể được tìm thấy ở dưới cùng của: > trang này <
Hawkwing

1

Truyền tệp bằng Putty (pscp / plink.exe)

Cài đặt putty mặc định cung cấp nhiều cách để truyền tệp. Nhiều khả năng puttylà trên đường dẫn mặc định của bạn, vì vậy bạn có thể gọi trực tiếp puttytừ dấu nhắc lệnh. Nếu không, bạn có thể phải thay đổi các biến môi trường của mình. Xem hướng dẫn tại đây: https://it.cornell.edu/managed-servers/transfer-files-using-putt

Các bước

  1. Mở dấu nhắc lệnh bằng cách gõ cmd

  2. Để chuyển các thư mục từ máy tính Windows của bạn sang một máy tính Windows khác (lưu ý -rcờ, biểu thị rằng các tệp sẽ được chuyển một cách đệ quy, không cần phải nén chúng lại): pscp -r -i C:/Users/username/.ssh/id_rsa.ppk "C:/Program Files (x86)/Terminal PC" ipython_user@10.15.48.54:/"C:/Program Files (x86)/"

  3. Để chuyển tệp từ máy tính Windows của bạn sang máy tính Windows khác, hãy sử dụng: pscp -i C:/Users/username/.ssh/id_rsa.ppk "C:/Program Files (x86)/Terminal PC" ipython_user@10.15.48.54:/"C:/Program Files (x86)/"

  4. Đôi khi, bạn chỉ có thể đã plinkcài đặt. plinkcó thể được sử dụng để chuyển tệp, nhưng nó bị hạn chế tốt nhất đối với các tệp văn bản đơn giản. Nó có thể có hành vi không xác định với các tệp nhị phân ( /superuser/1289455/create-text-file-on-remote-machine-using-plink-putty-with-contents-of-windows-lo ): plink -i C:/Users/username/.ssh/id_rsa.ppk user@host <localfile "cat >hostfile"

  5. Để chuyển tệp từ máy chủ linux sang máy tính Windows sang máy tính Linux, hãy sử dụng pscp -r -i C:/Users/username/.ssh/id_rsa.ppk "C:/Program Files (x86)/Terminal PC" username@10.15.48.16:/home/username

Để tất cả những thứ này hoạt động, bạn cần có khóa công khai / riêng tư thích hợp. Để tạo điều đó cho putty, hãy xem: https://superuser.com/a/1285789/658319


0

Theo cách đó, trên windows pscp cho phép tải lên trực tiếp (mà không cần bất kỳ yêu cầu nào về việc chấp nhận khóa):

pscp.exe -scp -pw 'my_pw' -v -i my.ppk -l root -batch -sshlog logfile19.txt -hostkey ba:2e:4d:12:68:82:19:a1:d2:22:bc:12:c2:1a:44:a7 hallo4.txt root@10.10.10.10:/srv/www/htdocs/xml_parser/hallo4.txt

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.