Як SCP з сервера Linux на клієнт Windows


23

Я SSHing в машину Linux за допомогою PuTTY і намагаюся скопіювати файл кудись (де завгодно) на свою локальну машину. Я вважаю, що SCP є найкращим кандидатом на роботу, але насправді це не хвилює, поки рішення працює!

Я cdдо каталогу, що містить файл, який я хочу ( app.war), і наберіть наступне:

scp app.war ./

Я намагався обидва безрезультатно:

scp app.war ./C:/Users/myUser/
scp app.war ./Users/myUser/

Мене змусило думати, що, можливо, SCP є інструментом клієнт / сервер і вимагає клієнта на моїй машині Windows, якого там немає.

Я просто використовую неправильний синтаксис? Або я далеко поза базою? Якщо так, то які варіанти у мене є? Спасибі заздалегідь!


Справжня відповідь на це питання тут: stackoverflow.com/a/23412501/1579667 . Синтаксисscp some_file user@host:/c/temp
Benj

Також див. Клієнт і сервер Bitvise SSH. Це одне з найдавніших програм SSH для Windows. Клієнт - це безкоштовне завантаження та безкоштовне користування.
jww

Відповіді:


25

для того, щоб ви могли скопіювати файли назад у вашу Windows, вам потрібен демон / сервіс SSH для роботи на вашій Windows, набагато простіше використовувати цей інструмент замість цього, він має можливість імпортувати сеанси з Putty, дуже простого прямого клієнта ви будете любити це!

WinSCP :: Безкоштовний клієнт SFTP та FTP для Windows


Просто чудовий інструмент :). Полюбив це \ м /
Чайтанья

Це насправді не відповідає на початкове запитання, яке було в командному рядку. Дивіться мій коментар нижче оригінального запитання.
Бендж

@Benj OP попросив рішення, WinSCPчи є хорошим рішенням для цього завдання.
alexus

12

Ви праві. SSHD - це сервер сервера SSH, який працює на хості. Він приймає з'єднання від клієнтів SSH (наприклад, PuTTy), клієнтів SCP та клієнтів SFTP.

Ви можете завантажити pscpз того самого веб-сайту, де розміщено PuTTY .

З машини Windows ви виконали команду, схожу на

pscp.exe someuser@somehost.com:/path/to/app.war c:\tmp


2

Щоб SCP-файл на машині Windows, вам потрібен SSH / SCP-сервер у Windows.

У Windows не підтримується SSH / SCP. Ви можете встановити Microsoft зборку OpenSSH для Windows ( випуски та завантаження) ). Він доступний як додаткова функція для Windows 10 версії 1803 та новіших. Його також можна встановити вручну на старих версіях Windows.

Я підготував посібник з налаштування SSH / SFTP-сервера в Windows за допомогою цієї версії Microsoft OpenSSH .

Дивіться також Чи IIS SFTP підтримується Windows?


Хоча ви SSH на Linux-сервер з машини Windows, ви фактично можете завантажити файл з Linux-сервера на сервер Windows, замість того, щоб намагатися завантажувати файл з Linux-сервера на сервер Windows.

Якщо у вас є доступ SSH з Windows до Linux, у вас також є доступ SCP (а ще краще SFTP-доступ).

Використовуйте будь-який доступний клієнт SCP / SFTP.

Ви можете використовувати клієнт WinSCP SFTP / SCP , який має інтерфейс GUI та командного рядка .

Інша альтернатива - набір інструментів PuTTY, який включає інструмент pscpкомандного рядка з синтаксисом, подібним до команди OpenSSH scp. Крім того, останні версії Windows 10 поставляються із scpвбудованою OpenSSH, і вона може бути встановлена ​​і на старих версіях.

(Я автор WinSCP)


чи є версія pscp для OSX / Linux?
кодування ручки

@codingknob Звичайно, існує пакет "шпаклівки" для багатьох дистрибутивів. Хоча pscpфункціонально ідентичний OpenSSH scp, який легко доступний у всіх / більшості дистрибутивів.
Мартін Прикрил

1

Зараз у Windows 10 вбудований OpenSSH. Https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse

Отримайте командний рядок адміністратора

Open PowerShell as an Administrator.

Перевірте доступні версії

Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

Встановити клієнт

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

Встановити сервер

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Запустіть сервер і включіть його під час завантаження

Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'

Знайдіть свою IP-адресу Windows

ipconfig

Знайдіть свою IP-адресу на віддаленому (Linux) пристрої.

ifconfig

Створіть відкритий ключ SSH

ssh-keygen.exe

Скопіюйте відкритий ключ з локальної (Windows) на віддалену (Linux) машину, щоб вам не потрібно було постійно вводити пароль.

Зауважте, що ssh-copy-id наразі недоступний у Windows.

cat C:\Users\YOU/.ssh/id_rsa.pub | ssh USER@REMOTE_IP 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'

Зробіть те ж саме на своїй машині Linux (зауважте, ssh-copy-id не працює)

ssh-keygen # if needed
cat ~/.ssh/id_rsa.pub | ssh USER@WINDOWS_IP 'mkdir -p ~/.ssh && type con >> C:/Users/YOU/.ssh/authorized_keys'
  • Метод, описаний вище, не працював для мене, тому я закінчив вручну SCPing відкритий ключ і вставив його у файл C: /Users/YOU/.ssh/authorized_keys.

  • Це все ще не спрацювало, тому мені довелося змінити файл sshd_config.

    • Відкрийте Блокнот як адміністратор

    • Відкрийте% programdata% \ ssh \ sshd_config

    • Додайте наступні рядки:

        Match User YOU
             AuthorizedKeysFile C:/Users/YOU/.ssh/authorized_keys
  • Перезавантажте

Створіть пароль у Windows, якщо у вас його ще немає

System Settings...Sign-in options

- Зверніть увагу, ви все ще можете відключити екран входу в Windows, встановивши: a) Установити параметр "Потрібно ввійти" та ніколи б) Використовуючи команду "netplwiz" та зніміть прапорець "Користувачі повинні ввести пароль ...".

Тепер ви маєте змогу SSH або SCP зі своєї машини Linux

scp FILE WINDOWS_IP:C:/Users/YOU/Desktop

1

Це можна зробити за допомогою підсистеми Ubuntu Linux для Windows (для цього потрібно включити функцію Windows). Потім ви можете використовувати клієнтський термінал Linux, який працює в Windows, отримавши його з магазину Microsoft (наприклад, Ubuntu 16.04 LTS). Потім, якщо у вас встановлена ​​безпека ssh для віддаленого доступу до вашої машини Linux, ви можете scpз локального терміналу Windows Ubuntu (коли ви входите в систему як ім’я користувача, встановлене для вашого примірника Linux) приблизно так:

scp -i ~/.ssh/my_rsa username@11.11.11.11:~/myfile ~/ ... введіть прохідну фразу RSA

Віддалений файл буде скопійовано у локальну файлову систему Ubuntu, яку використовує Windows, наприклад

C:\Users\my.username\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home\my_linux_username


1
В останніх версіях Windows 10 scp(.exe)вбудовано (Win32-OpenSSH) . Вам не потрібно нічого встановлювати.
Мартін

-1

Крок 1: Завантажте pscp
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
(На основі завантаження відповідної версії на вашу машину)

Крок 2: Ознайомтеся з командами pscp.
Для цього відкрийте командний рядок на своїй машині Windows, перейдіть до каталогу, де ви завантажили pscp.exe і введіть "pscp"

Крок 3: Перенесіть файл зі своєї машини Linux на машину Windows,
відкрийте командний рядок та запустіть нижче команду, надавши ваші дані:

pscp usernameofyourlinuxmachine@10.40.000.000:/path/of/your/File/nameofyourfile.txt ./

і ця команда перенесе файл з вашої машини Linux у поточний каталог вашої машини Windows

Крок 4: Перенесіть файл зі своєї машини Windows на машину Linux,
відкрийте командний рядок та запустіть команду нижче, надавши ваші дані:

pscp nameofyourfile.txt usernameofyourlinuxmachine@10.40.000.000:/path/where/youwantyourfile

Сподіваюся, це все зрозуміло і працює для вас усіх!


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