Как подключить 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
Бендж

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

Ответы:


25

чтобы вы могли копировать файлы обратно в Windows, вам нужен SSH-демон / служба, работающий в Windows, вместо этого гораздо проще использовать этот инструмент, у него есть возможность импортировать сессии из Putty, очень простого клиента любить это!

WinSCP :: Бесплатный SFTP и FTP-клиент для Windows


Просто потрясающий инструмент :). Мне понравилось \ m /
Чайтанья

Это действительно не отвечает на первоначальный вопрос, который жил в командной строке. Смотрите мой комментарий ниже оригинального вопроса.
Бендж

@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-клиент , который имеет графический интерфейс и интерфейс командной строки .

Другой альтернативой является набор инструментов PuTTY, который включает pscpинструмент командной строки с синтаксисом, похожим на команду OpenSSH scp. Кроме того, последние версии Windows 10 поставляются со scpвстроенным OpenSSH и могут быть установлены на более старые версии.

(Я автор WinSCP)


Есть ли версия PSCP для OSX / Linux?
codingknob

@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

На вашем удаленном (Linux) компьютере найдите свой IP-адрес.

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'
  • Описанный выше метод не сработал для меня, поэтому я в конечном итоге вручную скопировал открытый ключ и вставил его в файл 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: а) установив параметр «Требовать вход» никогда и б) используя команду «netplwiz» и сняв флажок «Пользователи должны ввести пароль ...».

Теперь вы должны иметь возможность SSH или SCP с вашего компьютера Linux

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

1

Вы можете сделать это с помощью подсистемы Linux Ubuntu для 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 (Win32-OpenSSH) scp(.exe)встроен. Вам не нужно ничего устанавливать.
Мартин Прикрыл

-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.