Передача файлів у / з сеансу, я ввійшов до системи за допомогою PuTTY


85

Я ввійшов у віддалений хост за допомогою PuTTY.

Яка команда для передачі файлів з моєї локальної машини на машину, на якій я ввійшов до системи PuTTY?

Відповіді:


73

Можливо, це не пряма відповідь на те, що ви запитуєте, але коли мені потрібно перенести файли через сеанс SSH, я використовую WinSCP , що є чудовою програмою передачі файлів через SCP або SFTP. Звичайно, це передбачає, що ви працюєте в Windows.


Я спробував WinScp, але мені потрібно запустити команду на полі, щоб отримати привілеї. Це не здається можливим за допомогою WinScp?
blue-sky

@ user470184: правильно. Зазвичай я запускаю Putty та WinSCP поруч. Насправді ви можете почати з WinSCP, а потім є контекстне меню, щоб "відкрити цей сайт у Putty", якщо ви цього бажаєте.
Гвідо Доменічі

@GuidoDomenici Подивіться мій досвід роботи з WinSCP тут: ux.stackexchange.com/q/35936/4424 :-)
corsiKa


WinSCP не підключається до сервера, оскільки сервер використовує облікові дані за закритим ключем. WinSCP не підтримує ключ SSH-1. Я шукаю програму, як підтримувати цей тип ключів. у вас є ідеї?
mishanon

43

  • Клацніть на меню «Пуск».
  • Клацніть запустити
  • У відкритому полі введіть cmd і натисніть кнопку OK
  • У командному рядку введіть:

    c:> pscp ім'я_файлу_користувача @ ім'я_сервера: / шлях / ім'я_файлу_назначення.

Наприклад:

c:> pscp листопад2012 wrhse@warehouse.cit.cornell.edu: / mydata / листопад2012.

  • Коли з’явиться запит, введіть свій пароль для сервера.

Насолоджуйтесь


14
І ви можете інвертувати його так: 'c:> pscp wrhse@warehouse.cit.cornell.edu: / mydata / november2012 november2012', щоб отримувати файли з віддаленої машини.
xan

3
pscp є частиною пакету шпаклівки, але він не був на моєму шляху, тому мені потрібно було додати його до свого шляху, перш ніж це спрацювало. pscp повинен знаходитися в тому ж місці, що і шпаклівка exe. у моєму випадку c: \ Program Files (x86) \ PuTTY.
Фрек

Що робити, якщо нам потрібно змінити користувачів після входу? sudo su - user
Стевойсяк

1
Якщо ви не встановили весь пакет PuTTY, вам потрібно буде завантажити програму pscp окремо від chiark.greenend.org.uk/~sgtatham/putty/latest.html
Джеймс Ньютон,

17

PuTTY зазвичай постачається з клієнтом під назвою psftp, який ви можете використати для цієї мети. Я не вірю, що ви можете зробити це за допомогою стандартного клієнта PuTTY (хоча я можу довести, що не правий у цьому).

PuTTY надає лише доступ для керування віддаленою машиною. Він не забезпечує прямого зв’язку між двома файловими системами так само, як це робить сидячи за віддаленою машиною.


psftp не встановлений на віддаленій машині
Синє небо

4
Це не повинно бути. Тільки на локальній машині.
corsiKa

І ось деяка інформація для передачі файлів за допомогою psftp: pic.dhe.ibm.com/infocenter/tsmscv13/v1r0m0/…
shasi kanth

8

Немає можливості ініціювати передачу файлів назад до / з локальної Windows із сеансу SSH, відкритого у вікні PuTTY.

Хоча PuTTY підтримує спільний доступ до з'єднань.

Хоча вам все ще потрібно запустити сумісний клієнт для передачі файлів ( pscpабо psftp), новий вхід не потрібен, він автоматично (якщо увімкнено) використовує наявний сеанс PuTTY.

Щоб увімкнути спільний доступ, дивіться:
Спільне використання SSH-з'єднання між інструментами PuTTY .


Альтернативний спосіб - використання WinSCP, графічного інтерфейсу SFTP / SCP-клієнта. Поки ви переглядаєте віддалений веб-сайт, ви можете будь-коли відкрити SSH-термінал на цьому ж сайті, використовуючи кнопку Відкрити в PuTTY .

Див. Початкове засідання в PuTTY .

За допомогою додаткового налаштування ви навіть можете зробити так, щоб PuTTY автоматично переходив до того самого каталогу, який ви переглядаєте за допомогою WinSCP.

Див. Відкриття PuTTY в тому ж каталозі .

(Я автор WinSCP)


1
Мартін, WinSCP - це вибухонебезпечна людина. І дякую, справді :-)
shadowf

7

Ви також можете завантажити psftp.exe з:

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

Під час запуску ви вводите:

open "server name"

Тоді:

put "file name"

(Наберіть help, щоб отримати повний список команд.)

Ви також можете набрати текст, get <file name>щоб завантажити файли з віддаленої машини на локальну машину.


6

Якщо це лише один файл, ви можете скористатися наступною процедурою (у шпаклівці):

  1. vi ім'я файлу. розширення (відкриває нове ім'я файлу в активній папці на сервері),
  2. скопіювати + клацнути правою клавішею миші під час шпаклювання (скопіювати та вставити)
  3. редагувати та зберігати. => команди редактора vi

Редагуйте дозвіл на файл наступною командою: chmod u + x filename.extension


Це надзвичайно добре працює для текстових файлів, які вмістяться в буфер обміну. Щодо бінарних файлів див. Xxd, але вам також знадобиться програма Windows для перетворення бінарних файлів у шістнадцяткові. напр. HEXDUMP
Джеймс Ньютон

4

Оскільки ви запитували про в / з, ось трюк, який працює для частини "з". Відкрийте екран «Змінити налаштування ...», термінал, і в розділі «Принтер для надсилання вихідних даних принтера ANSI:» виберіть «Загальний / Лише текст»

Тепер у віддаленій системі запустіть це в один рядок:

tput mc5; cat whatever.txt; tput mc4

Шпаклівка повідомить вас, що файл збережено. Це робить переведення терміналу в режим принтера (tput mc5), друк файлу на екран (cat), а потім вимкнення режиму принтера (tput mc4). Якщо ви не покладете всі команди в один рядок, екран стане замороженим, оскільки Putty зберігає всі вихідні дані терміналу у файл у фоновому режимі.

Якщо ви працюєте в більш обмеженій системі, яка не має команди tput (наприклад, qnap), ви можете спробувати printf "\ x1b [5i" замість tput mc5, а printf "\ x1b [4i" замість tput mc4 .

Команда посередині - це просто все, що друкується на екрані. Тож використовуйте tail -n 10000 blah.log, щоб завантажити останні 10 тис. Рядків файлу журналу, або скористайтесь кодером base64, щоб зіставити двійковий файл із чимось, що можна надрукувати (а потім декодувати у вашій локальній системі):

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

Ви, сер, ви геній! Я вже деякий час шукаю спосіб передачі файлів через активний сеанс SSH, і це перший, з яким я легко можу працювати. Чи знаєте ви, чи можна цю техніку модифікувати для роботи за допомогою терміналу на клієнті на базі macOS або Linux (тобто термінали, крім PuTTY)?
Домінік П

3

Якщо вам потрібно зробити перевірку приватного ключа; у командному рядку (cmd), запустіть

Спочатку;

set PATH=C:\PuttySetupLocation

Другий;

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

Крім того, якщо вам потрібні додаткові опції, перегляньте наступне посилання. https://the.earth.li/~sgtatham/putty/0.60/htmldoc/Chapter5.html


Який сенс set PATH=C:\PuttySetupLocation? Чому ви не робите C:\PuttySetupLocation\pscpбезпосередньо? - Навіть якщо ви хочете змінити PATH, вам слід додати новий шлях, а не скидати його повністю.
Мартін Прикрил,

Запущений набір PATH = C: \ PuttySetupLocation не скидає шлях, лише додає PSCP до шляху як новий запис. Крім того, ви маєте рацію щодо використання C: \ PuttySetupLocation \ pscp . Це може також бути дійсним.
ÖMER TAŞCI

1
Це СКИДАЄ шлях.
Мартін Прикрил,

який пароль? Це не повинно стосуватися будь-яких налаштувань пароля.
ÖMER TAŞCI

Який пароль? Можливо, ви прочитали мій коментар відразу після того, як я опублікував його з друкарською помилкою "пароль" , а не "шлях" . Я виправив це через секунду після публікації (задовго до вашого коментаря).
Мартін Прикрил

3

Послухайте:

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

Він рекомендує використовувати pscp.exePuTTY, який можна знайти тут: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

Прямий переказ, такий як FTP, неможливий, оскільки всі команди під час сеансу надсилаються на сервер.


Дякую, вхід в систему за допомогою приватного ключа, який скасовує посилання, здається, не детальний?
blue-sky

1
@ user470184 Якщо вам вдалося пройти два роки, не дізнавшись як, деякі інструкції щодо того, як це можна зробити, можна знайти внизу: > цієї сторінки <
Хокінг

1

Передача файлів за допомогою шпаклівки (pscp / plink.exe)

Інсталяція шпаклівки за замовчуванням надає кілька способів передачі файлів. Швидше за все, puttyце ваш шлях за замовчуванням, тому ви можете безпосередньо зателефонувати puttyз командного рядка. Якщо це не так, можливо, вам доведеться змінити свої змінні середовища. Дивіться інструкції тут: https://it.cornell.edu/managed-servers/transfer-files-using-putt

Кроки

  1. Відкрийте командний рядок, набравши cmd

  2. Щоб перенести папки з комп’ютера Windows на інший комп’ютер Windows (зверніть увагу на -rпрапорець, який вказує на те, що файли будуть передаватися рекурсивно, не потрібно їх застібати в архів): 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. Для передачі файлів з комп’ютера Windows на інший комп’ютер Windows використовуйте: 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. Іноді, можливо, ви лише plinkвстановили. plinkпотенційно може використовуватися для передачі файлів, але найкраще обмежуватися простими текстовими файлами. Він може мати невідому поведінку з двійковими файлами ( /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. Для передачі файлів із сервера Linux на комп'ютер Windows на комп'ютер Linux використовуйте pscp -r -i C:/Users/username/.ssh/id_rsa.ppk "C:/Program Files (x86)/Terminal PC" username@10.15.48.16:/home/username

Щоб усі вони працювали, потрібно мати відповідний відкритий / приватний ключ. Щоб сформувати це для шпаклівки, див. Https://superuser.com/a/1285789/658319


0

Таким чином, у Windows pscp дозволяє завантажувати безпосередньо (без будь-якого запиту на, наприклад, прийняття ключа):

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.