Загрузить файл на сервер ssh с windows

Как копировать и передавать файлы по SSH

В статье мы расскажем, как передать файлы через SSH на разных операционных системах — Windows и Linux.

  1. Что нужно для подключения
  2. Как скопировать файл через SSH на Linux
    • Как отправить файл по SSH с локального компьютера на сервер
    • Как скачать файлы с удаленного сервера на компьютер
  3. Как скопировать файлы по SSH на Windows
    • Как загрузить файл с компьютера на сервер
    • Как скачать файл через SSH на локальный компьютер

Для подключения к серверу вам потребуются:

  • IP-адрес или имя сервера,
  • логин пользователя (в том числе root),
  • пароль пользователя,
  • порт.

Чаще всего копирование файлов через SSH делают с помощью двух мини-программ:

  1. scp (Secure Copy) — утилита для Linux. Она позволяет безопасно передать или скачать файл по протоколу SSH. Программа scp входит в комплект OpenSSH и не требует установки.
  2. pscp.exe — это утилита для Windows. Она используется по тому же назначению, что и scp: подключение к серверу по SSH и работа с файлами. Эта мини-программа входит в состав PuTTY: ее можно скачать на официальном сайте. Процедура настройки SSH-клиента описана в нашей статье.

Важно: если загружаемый файл существует на целевом хосте, он перезапишется.

Работа через SSH предполагает использование консольных команд. Наиболее популярные из них вы можете найти в статье.

Как скопировать файл через SSH на Linux

Копирование файлов по SSH на Linux можно сделать с помощью scp. Эта утилита позволяет:

  • передать файл с локального компьютера на удаленный сервер,
  • скачать файл с удаленного сервера на локальный компьютер.

Команда scp имеет следующий синтаксис:

scp опция источник получатель

Как отправить файл по SSH с локального компьютера на сервер

Чтобы загрузить файл:

  1. Подключитесь к серверу по SSH.
  2. Выполните команду:

scp /home/test.doc username@servername:/directory

Где:

  • /home/test.doc — путь к файлу на локальном компьютере;
  • username — имя SSH-пользователя;
  • servername — имя сервера или его IP-адрес;
  • directory — директория на сервере, в которую нужно загрузить файл.

Готово, вы загрузили файл на сервер.

Как скачать файлы с удаленного сервера на компьютер

Чтобы загрузить файл:

  1. Подключитесь к серверу по SSH.
  2. Выполните команду:

scp username@servername:/directory/test.doc /home

Где:

  • /directory/test.doc — путь к файлу на сервере;
  • username — имя SSH-пользователя;
  • servername — имя сервера или его IP-адрес;
  • home — папка на компьютере, в которую нужно загрузить файл.

Готово, вы скачали файл на компьютер.

Как скопировать файлы по SSH на Windows

Копирование через SSH на ОС Windows выполняется с помощью утилиты pscp.exe из набора PuTTY.

Как загрузить файл с компьютера на сервер

Чтобы загрузить файл:

  1. Подключитесь к серверу по SSH.
  2. Выполните команду:

pscp C:/documents/test.doc username@servername:/directory

Где:

  • /documents/test.doc — путь к файлу на локальном компьютере;
  • username — имя SSH-пользователя;
  • servername — имя сервера или его IP-адрес;
  • directory — директория на сервере, в которую нужно загрузить файл.

Если название файла или путь содержит пробелы, заключите его в кавычки:

pscp “C:/documents/test 1.doc” username@servername:/directory

Готово, вы загрузили файл на сервер.

Как скачать файл через SSH на локальный компьютер

Чтобы загрузить файл:

  1. Подключитесь к серверу по SSH.
  2. Выполните команду:

pscp username@servername:/directory/test.doc C:/documents

Где:

  • username — имя SSH-пользователя;
  • servername — имя сервера или его IP-адрес;
  • directory/test.doc — путь к файлу на сервере;
  • /documents — директория на локальном компьютере, в которую нужно загрузить файл.

Если название файла или путь содержит пробелы, заключите его в кавычки:

pscp username@servername:”/directory/test 1.doc” C:/documents

Готово, вы скачали файл на компьютер.

Команда scp это утилита, которая работает по протоколу SSH, а значит, все что вам нужно для передачи файла на компьютер, это чтобы на нем был запущен SSH сервер, а также вы должны знать логин и пароль для подключения к нему. С помощью команды scp вы можете не только перемещать файлы между локальной и удаленной системой, но и между двумя удаленными системами. Для этого тоже будет достаточно знать пароли от них.

Синтаксис

scp опции пользователь1@хост1:файл пользователь2@хост2:файл

Опции

Опции утилиты больше касаются протокола SSH и настраивают общее ее поведение. Дальше следует адрес первого и второго файла. Каждый из них может быть расположен как на локальной, так и на удаленной машине. А теперь рассмотрим основные опции, которые могут нам понадобиться.

  • -1 использовать протокол SSH1
  • -2 использовать протокол SSH2
  • -B пакетный режим для передачи нескольких файлов
  • -C включить сжатие
  • - l установить ограничение скорости в кбит/сек
  • -o задать нужную опцию SSH
  • -p сохранять время модификации
  • -r рекурсивное копирование директорий
  • -v более подробный режим

Скопировать файл по SSH с локальной машины на удалённый сервер

Файл test.txt будет скопирован на хост 123.123.123.123 в директорию /directory:

scp /home/test.txt root@123.123.123.123:/directory

Скопировать файл по SSH с удалённого сервера на локальный компьютер

Файл test.txt будет загружен с сервера 123.123.123.123 на локальный компьютер в папку /directory:

scp root@123.123.123.123:/home/test.txt /directory

Скопировать файл по SSH с одного удалённого сервера на другой

Необходимо подключится по SSH к серверу, на котором расположен файл, затем выполнить команду:

scp /home/test.txt root@123.123.123.123:/directory

Файл test.txt будет скопирован на хост 123.123.123.123 в директорию /directory.

Скопировать папку со всеми файлами и подпапками

Если вы хотите скачать папку со всеми файлами и подпапками, используйте ключ -r:

scp -r [источник] [получатель]

Подключиться к серверу по нестандартному порту

Бывает, что для подключения по SSH нужно указать нестандартный порт. Без указания порта команда подключается к серверу по стандартному 22 порту. Чтобы указать нестандартный порт, введите команду с ключом -P:

scp -P номер_порта [источник] [получатель]

Команда подключается по порту 12345 к серверу 123.123.123.123 и копирует на него файл test.txt с локального компьютера в директорию /directory:

scp -P 12345 /home/test.txt root@123.123.123.123:/directory

Передать и скачать файлы по SSH в Windows

Увидеть список папок и файлов на сервере можно через pscp.exe, для этого введите:

pscp -ls [имя пользователя]@[имя сервера/ip-адрес]:[путь]

Скопировать файл по SSH с сервера можно командой:

pscp [имя пользователя]@[имя сервера/ip-адрес]:[путь к файлу] [путь к файлу]

Скопировать файл по SSH на сервер можно командой:

pscp [путь к файлу] [имя пользователя]@[имя сервера/ip-адрес]:[путь к файлу]

Если в пути или в названии файла есть пробелы, используйте кавычки:

pscp “C:\files or docs\file name” root@123.123.123.123:/home

Примеры загрузки файлов с локальной машины на сервер и скачивания файлов с сервера на локальную машину через SSH для Linux и Windows.

Linux

Скачивание с сервера

scp [СЕРВЕР:ПУТЬ_ДО_ФАЙЛА] [ДИРЕКТОРИЯ_НА_ЛОКАЛЬНОЙ_ОС]

scp root@255.255.255.255:/home/user/my_file.txt /opt

Загрузка файла на сервер

scp [ПУТЬ_ДО_ФАЙЛА] [СЕРВЕР:ДИРЕКТОРИЯ_НА_СЕРВЕРЕ]

scp /opt/my_file.txt root@255.255.255.255:/home/user

Windows

Для удобства использования утилиты pscp в Windows вам нужно указать в переменной PATH полный путь до директории с ней. Эта утилита обычно идет вместе с популярным SSH-клиентом PuTTY и находится в одной директории с ним.

Скачивание с сервера

pscp [СЕРВЕР:ПУТЬ_ДО_ФАЙЛА] [ДИРЕКТОРИЯ_НА_ЛОКАЛЬНОЙ_ОС]

pscp root@255.255.255.255:/home/user/my_file.txt "D:\"

Загрузка файла на сервер

pscp [ПУТЬ_ДО_ФАЙЛА] [СЕРВЕР:ДИРЕКТОРИЯ_НА_СЕРВЕРЕ]

pscp "D:\my_file.txt" root@255.255.255.255:/home/user

Если при загрузке файла с сервера у вас появляется ошибка с текстом «Нельзя создать файл»/»Can’t create file», то попробуйте указать в конце пути назначения точку – «.». Пример:

pscp root@255.255.255.255:/home/user/my_file.txt "D:\."

SSH — это безопасный способ подключаться к удалённым серверам для передачи файлов. Он обеспечивает зашифрованное соединение, которое защищает данные во время передачи. Благодаря этому копирование файлов по SSH более безопасно в сравнении с незашифрованными протоколами, такими как FTP.

копирование файлов ssh

Как загружаются файлы на сервер

Если у вас есть сайт, файлы для него нужно загружать на сервер. Это могут быть HTML-документы, стили (CSS), скрипты (JavaScript), изображения, видео, резервные копии, файлы базы данных или любые другие ресурсы, необходимые для работы сайта. Передача файлов без SSH обычно менее защищённая, так как данные передаются в незашифрованном виде и могут быть перехвачены или подменены злоумышленниками. Даже если речь идёт о HTML, CSS или изображениях, их можно изменить, внедрив в сайт вредоносный код.

Как загружаются файлы на сайт, зависит от платформы, на которой он работает. Если сайт работает на CMS, файлы передаются через встроенный файловый менеджер или по SSH, если есть доступ.

Чтобы проверить, настроено ли копирование файлов через SSH, попробуйте подключиться через терминал командой ssh user@server, где user — ваш логин, а server — адрес удалённого компьютера. Если вас спрашивают пароль, значит, всё работает. Также нужно проверить, что у вас есть доступ к папке, куда вы собираетесь копировать файлы.

Если сайт сделан на конструкторе, передача файлов через SSH не нужна — обновления загружаются через веб-интерфейс, но стоит убедиться, что сам сервис обеспечивает защиту соединения, например, через HTTPS.

Как SSH передает файлы: SCP, Rsync и SFTP

Есть несколько способов копирования файлов по SSH, среди которых SCP, Rsync и SFTP. Каждый из них имеет свои особенности и подходит для различных сценариев:

  • SCP (Secure Copy Protocol) — самый простой способ, работает аналогично копированию файлов между папками на одном компьютере, но через сеть. SCP удобен, когда нужно быстро передать файлы, но если их больше нескольких сотен или они весят больше нескольких гигабайт, лучше подойдёт Rsync.

  • Rsync — для больших и повторяющихся передач. Он работает эффективнее, так как передаёт только изменённые файлы, экономя время и ресурсы. Это ускоряет процесс, особенно когда речь идёт о больших папках.

  • SFTP (Secure File Transfer Protocol) — ручное управление файлами. Работает как FTP, но через SSH, позволяя вручную загружать и скачивать файлы через консоль или графический клиент.

Обычно файлы копируют через командную строку, но есть и графические клиенты, например, FileZilla, WinSCP и Cyberduck. Они работают как обычный файловый менеджер, только с подключением к серверу.

копирование файлов в linux по ssh

Как автоматизировать передачу файлов

Чтобы не вводить пароль каждый раз, можно настроить SSH-ключи. Это что-то вроде электронного пропуска. Команды:

ssh-keygen

ssh-copy-id user@server

Теперь при входе через SSH или передаче файлов вводить пароль не придётся. Однако, если кто-то получит доступ к вашему приватному ключу, он сможет подключаться без пароля. Чтобы избежать этого, установите пароль на ключ (ssh-keygen -p) и храните его в защищённом месте. Это удобно, если файлы передаются регулярно, например, с помощью cron. Добавив команду SCP или Rsync в расписание, можно настроить автоматическое копирование.

Как защитить файлы при передаче

Передача файлов по SSH уже зашифрована, но есть несколько способов сделать её ещё безопаснее:

  • Открывать доступ к серверу только нужным пользователям.

  • Отключить вход по паролю и оставить только SSH-ключи, но при этом защитить приватный ключ паролем и хранить его в безопасном месте.

  • Ограничить доступ по IP-адресу.

  • Использовать VPN, если сервер доступен через интернет.

Что делать, если что-то не работает

Если файлы не передаются, проверьте:

  • Доступ к серверу (ssh user@server).

  • Права на папку (ls -l на сервере).

  • Достаточно ли места на диске (df -h).

Если команда висит, добавьте -v, чтобы увидеть подробности. Иногда помогает отключение firewall или настройка iptables.

копирование файлов SSH в Windows и Linux

Копирование файлов SSH в Windows и Linux

Копирование файлов по SSH в Windows и копирование файлов в Linux по SSH несколько отличается. В основном, из-за различий в командных оболочках и файловых системах.

  • Командная строка

В Linux для копирования файлов по SSH удобно использовать scp, rsync и sftp прямо из терминала.

В Windows раньше было сложнее, но с появлением встроенного OpenSSH (Windows 10 и выше) можно использовать те же команды (scp, rsync, sftp) через PowerShell или cmd. В старых версиях Windows приходилось устанавливать дополнительные программы, например, PuTTY (включая pscp.exe для SCP) или Cygwin.

  • Файловые пути

В Linux используются пути в формате /home/user/file.txt.

В Windows пути пишутся через C:\Users\user\file.txt, но при работе через OpenSSH в PowerShell или Git Bash нужно использовать Unix-подобный синтаксис (/c/Users/user/file.txt).

  • Графические клиенты

В Windows часто используют WinSCP или FileZilla, так как они дают удобный интерфейс без необходимости писать команды.

В Linux графический режим тоже доступен через Nautilus (GNOME) или Dolphin (KDE) с возможностью подключения по SFTP.

  • Rsync в Windows

В Linux rsync предустановлен, а в Windows его нет по умолчанию. Нужно ставить Cygwin или WSL (Windows Subsystem for Linux), если хочется полноценно работать с rsync.

  • В целом 

Если в Windows включён OpenSSH или установлен WSL, разницы с Linux почти нет. Если используется классический Windows без этих инструментов, удобнее работать через WinSCP или другие GUI-клиенты.

В Linux для копирования файлов по SSH удобно использовать scp, rsync и sftp прямо из терминала.

Протокол SSH (Secure Shell) — это сетевой протокол для удаленного управления операционной системой через командную строку, который можно назвать стандартом для удаленного доступа к *nix-машинам. Позволяет производить защищенный вход на сервер, удаленно выполнять команды, управлять файлами (создавать, удалять, копировать и т.д.) и многое другое. Большинство облачных и хостинг-провайдеров требуют наличие SSH для доступа к своим сервисам. В этой статье рассмотрим копирование файлов по SSH в Windows и Linux-системах.

Копирование Файлов По Ssh (1)

SSH способен передавать любые данные (звук, видео, данные прикладных протоколов) через безопасный канал связи. В отличие от устаревших и небезопасных протоколов telnet и rlogin, в SSH обеспечивается конфиденциальность передаваемых данных и подлинность взаимодействующих сторон — необходимые условия для сетевого взаимодействия в Интернете.

Рассмотрим алгоритм установки зашифрованного соединения между клиентом и сервером:

  1. Установка TCP-соединения. По умолчанию сервер слушает 22-й порт. В работе протокола используется набор алгоритмов (сжатие, шифрование, обмен ключами), поэтому стороны обмениваются списком поддерживаемых алгоритмов и договариваются, какие из них будут использовать.
  2. Чтобы третья сторона не смогла выдать себя за сервер или клиент, стороны должны удостоверится в подлинности друг друга (аутентификация). Для этого используются асимметричные алгоритмы шифрования и пара открытый-закрытый ключ. Вначале проверяется аутентичность сервера. Если соединение происходит впервые, пользователь увидит предупреждение и информацию о сервере. Список доверенных серверов и их ключей записывается в файл по адресу /home/<username>/.ssh/known_hosts.
  3. Как только клиент убедился в достоверности сервера, стороны генерируют симметричный ключ, с помощью которого происходит шифрования всех обмениваемых данных. Таким образом при перехвате данных, никто, кроме сторон не сможет узнать содержимое сообщений.
  4. Далее происходит аутентификация пользовательского сеанса. Для этого используется либо пароль, либо присланный клиентом публичный ключ, сохраняемый в файле /home/<username>/.ssh/authorized_keys на сервере.

Самая популярная реализация на Линукс, OpenSSH, предустанавливается практически на всех дистрибутивах: Ubuntu, Debian, RHEL-based и других. На Windows в качестве клиентов можно использовать программы PuTTY, MobaXterm. Начиная с WIndows 10 и Windows Server 2019 инструменты OpenSSH доступны и на Windows.

Подробнее об SSH и работе с ним мы писали в статье «Как пользоваться SSH».

VDS

Копирование файлов

Копирование файлов в Linux по SSH осуществляется с помощью двух основных программ: scp и sftp. Обе утилиты поставляются вместе с пакетом OpenSSH. Суще­ствуют две основные версии протокола SSH: 1 и 2. Оболочка OpenSSH поддержи­вает обе версии, однако первая применяется редко.

Настройка автодополнений

При работе с scp крайне удобно использовать tab для автодополнения путей на удаленной машине. Для этого нужно настроить аутентификацию пользователя по публичному ключу.

Для начала сгенерируем открытый и закрытый ключ:

ssh-keygen

Вывод:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Created directory '/home/user/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:wJQ/XBZq69qXGHxseTuccUEpzWYHhsVVHcDXE3MrTHQ user@host

В конце вывода будет графическое представление ключа (key’s randomart image), которое легче запомнить, чем хэш ключа.

По умолчанию ключи (id_rsa.pub — открытый, id_rsa — закрытый) сохранятся в домашнем каталоге пользователя в директории .ssh. Также во время генерации программа попросит ввести пароль, которым будут защищены ключи. Если не хотите дополнительной защиты, нажмите два раза Enter.

Теперь копируем публичный ключ на удаленную машину:

ssh-copy-id [имя пользователя]@[ip-адрес]

Здесь [имя пользователя] — учетная запись пользователя, под которой будем логиниться на удаленной машине, [ip-адрес] — адрес удаленной машины (можно использовать доменное имя, если они локально резолвится). Далее вводим пароль пользователя. Если все прошло корректно, то в выводе будет команда для удаленного подключения:

Number of key(s) added: 1
Now try logging into the machine, with:   "ssh '<имя пользователя>@<ip-адрес>'"
and check to make sure that only the key(s) you wanted were added.

Secure copy (SCP)

Для копирования небольших объемов информации (например, конфиги сервисов) лучше всего подойдет утилита scp. 

Синтаксис команды для копирования с локальной машины на удаленный сервер:

scp [путь к файлу] [путь к файлу] [имя пользователя]@[ip-адрес]:[путь к файлу]

Попробуем скопировать файл на сервер:

scp test.txt user@192.168.1.29:/home/user/

Вывод:

test.txt                              100%   12   20.6KB/s   00:00

Можно передать несколько файлов за раз. Для этого указываем пути, разделенные пробелами:

scp test1.txt test2.txt user@192.168.1.29:/home/user/

Для копирования с удаленного сервера на локальную машину нужно поменять источник и место назначения местами:

scp user@192.168.1.29:/home/user/test.txt ~/

Для передачи директории используйте ключ -r:

scp -r testdir user@192.168.1.29:/home/user/

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

scp gendo@192.168.1.25:/home/gendo/test.txt user@192.168.1.29:/home/user/

Secure FTP (SFTP)

Еще одной утилитой для передачи файлов, поставляемых в OpenSSH, является sftp. C релизом OpenSSH 9.0 утилита scp переведена по умолчанию на использование SFTP вместо устаревшего протокола SCP/RCP. Sftp работает практически также, как и классический ftp, за исключением того, что в sftp данные передаются не в виде обычного текста, а по зашифрованному туннелю (туннелирование — это процесс упаковки и передачи одного сетевого подключения с помощью другого). Также для работы sftp не нужен отдельный FTP-сервер.

Пример простого скачивания через sftp:

gendo@melhior:~$ sftp misato@192.168.1.29
Connected to 192.168.1.29.
sftp> ls
file.txt   file1.txt  file2.txt  test.txt  
sftp> lcd testdir/
sftp> get test.txt
Fetching /home/misato/test.txt to test.txt
test.txt                              100%  12  4.8KB/s  00:00    
sftp> bye

Сам по себе sftp применяется редко: вместо этого его используют файловые менеджеры, например Midnight Commander и Nautilus:

Image1

Использование sftp в файловом менеджере Nautilus. Удаленная машина отображается в виде папки с именем пользователя и IP-адресом.

Копирование файлов по SSH в Windows

Скачать файл с сервера или на сервер в Windows можно с помощью консольной программы pscp, поставляемой вместе с PuTTY. Синтаксис очень похож на обычный scp:

pscp [путь к файлу] [имя пользователя]@[имя сервера/ip-адрес]:[путь к файлу]

Для SSH-копирования файлов на сервер, используйте следующую команду:

pscp C:\server\test.txt misato@192.168.1.29:/home/misato/

Скачивание файла с сервера на компьютер:

pscp misato@192.168.1.29:/home/misato/test.txt C:\file.txt

Увидеть список файлов на сервере можно при помощи опции -ls:

pscp -ls [имя пользователя]@[ip-адрес]:[путь]

Если в пути или в названии файла есть пробелы, используйте кавычки:

pscp "C:\dir\bad file name" misato@192.168.1.29:/home/misato

Для получения помощи по команде введите pscp без аргументов.

Заключение

Мы рассмотрели, как копировать файлы на сервер и с сервера с помощью безопасного сетевого протокола SSH. Если вы используете облачные серверы, важно уметь работать с SSH, так как он является стандартом для удаленного доступа к *nix-машинам и будет необходим вам в повседневной работе. 

Кстати, в официальном канале Timeweb Cloud собрали комьюнити из специалистов, которые говорят про IT-тренды, делятся полезными инструкциями и даже приглашают к себе работать. 

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Как сделать приоритет на игру windows 10 навсегда
  • Reverso для windows отзывы
  • Создание удаленного сервера windows
  • Автоматический поиск драйверов для windows 10 не работает
  • Как поменять имя учетки в windows 10