Как копировать и передавать файлы по SSH
В статье мы расскажем, как передать файлы через SSH на разных операционных системах — Windows и Linux.
- Что нужно для подключения
- Как скопировать файл через SSH на Linux
- Как отправить файл по SSH с локального компьютера на сервер
- Как скачать файлы с удаленного сервера на компьютер
- Как скопировать файлы по SSH на Windows
- Как загрузить файл с компьютера на сервер
- Как скачать файл через SSH на локальный компьютер
Для подключения к серверу вам потребуются:
- IP-адрес или имя сервера,
- логин пользователя (в том числе root),
- пароль пользователя,
- порт.
Чаще всего копирование файлов через SSH делают с помощью двух мини-программ:
- scp (Secure Copy) — утилита для Linux. Она позволяет безопасно передать или скачать файл по протоколу SSH. Программа scp входит в комплект OpenSSH и не требует установки.
- pscp.exe — это утилита для Windows. Она используется по тому же назначению, что и scp: подключение к серверу по SSH и работа с файлами. Эта мини-программа входит в состав PuTTY: ее можно скачать на официальном сайте. Процедура настройки SSH-клиента описана в нашей статье.
Важно: если загружаемый файл существует на целевом хосте, он перезапишется.
Работа через SSH предполагает использование консольных команд. Наиболее популярные из них вы можете найти в статье.
Как скопировать файл через SSH на Linux
Копирование файлов по SSH на Linux можно сделать с помощью scp. Эта утилита позволяет:
- передать файл с локального компьютера на удаленный сервер,
- скачать файл с удаленного сервера на локальный компьютер.
Команда scp имеет следующий синтаксис:
scp опция источник получатель
Как отправить файл по SSH с локального компьютера на сервер
Чтобы загрузить файл:
- Подключитесь к серверу по SSH.
- Выполните команду:
scp /home/test.doc username@servername:/directory
Где:
- /home/test.doc — путь к файлу на локальном компьютере;
- username — имя SSH-пользователя;
- servername — имя сервера или его IP-адрес;
- directory — директория на сервере, в которую нужно загрузить файл.
Готово, вы загрузили файл на сервер.
Как скачать файлы с удаленного сервера на компьютер
Чтобы загрузить файл:
- Подключитесь к серверу по SSH.
- Выполните команду:
scp username@servername:/directory/test.doc /home
Где:
- /directory/test.doc — путь к файлу на сервере;
- username — имя SSH-пользователя;
- servername — имя сервера или его IP-адрес;
- home — папка на компьютере, в которую нужно загрузить файл.
Готово, вы скачали файл на компьютер.
Как скопировать файлы по SSH на Windows
Копирование через SSH на ОС Windows выполняется с помощью утилиты pscp.exe из набора PuTTY.
Как загрузить файл с компьютера на сервер
Чтобы загрузить файл:
- Подключитесь к серверу по SSH.
- Выполните команду:
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 на локальный компьютер
Чтобы загрузить файл:
- Подключитесь к серверу по SSH.
- Выполните команду:
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
Готово, вы скачали файл на компьютер.
SSH — это безопасный способ подключаться к удалённым серверам для передачи файлов. Он обеспечивает зашифрованное соединение, которое защищает данные во время передачи. Благодаря этому копирование файлов по SSH более безопасно в сравнении с незашифрованными протоколами, такими как FTP.
Как загружаются файлы на сервер
Если у вас есть сайт, файлы для него нужно загружать на сервер. Это могут быть 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. Они работают как обычный файловый менеджер, только с подключением к серверу.
Как автоматизировать передачу файлов
Чтобы не вводить пароль каждый раз, можно настроить 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 несколько отличается. В основном, из-за различий в командных оболочках и файловых системах.
-
Командная строка
В 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 – один из основных методов управления *nix серверами. Довольно часто возникает необходимость загрузить файл на удаленный сервер, либо выгрузить, и других средств кроме SSH-подключения нет. К счастью, копирование файлов через защищенное соединение – одна из штатных функций этого протокола и реализуется с помощь отдельной команды scp в Linux-системах, либо с помощью pscp.exe, входящей в состав SSH-клиента Putty для операционной системы Windows.
Работаем на ОС семейства Linux
Используем следующий формат команд:
scp [модификатор] [источник] [место_назначения]
Если в качестве источника или места назначения указывается удаленный сервер, то формат параметра такой:
[пользователь]@[сервер]:[путь_к_файлу]
После запуска команды потребуется ввести пароль от указанной учетной записи удаленного сервера.
Если собрать все вместе, то скопировать локальный файл /home/user/file.tgz в домашний каталог пользователя root удаленного сервера 123.123.123.123 можно командой:
scp /home/user/file.tgz root@123.123.123.123:/root
Чтобы скачать этот же файл с удаленного сервера:
scp root@123.123.123.123:/root/file.tgz /home/user
За одну операцию можно скопировать несколько файлов, для этого необходимо указать их в качестве источника, разделив пробелом – местом назначения будет считаться последний указанный параметр. Например, загрузить файлы file1.tgz и file2.tgz из локального каталога на удаленный сервер позволит команда:
scp file1.tgz file2.tgz root@123.123.123.123:/root
Для копирования каталога потребуется задействовать модификатор команды –r. Копируем локальный каталог /home/user/dir на удаленный сервер:
scp –r /home/user/dir root@123.123.123.123:/root
В тех случаях, когда SSH-сервер работает на нестандартном порту, поможет опция –P. Если нужно подключиться через порт 10022:
scp –P 10022 /home/user/file.tgz root@123.123.123.123:/root
Чтобы узнать какие еще модификаторы поддерживает команда, можно просто запустить scp без параметров и прочитать краткую справку.
Работаем на ОС семейства Windows
При использовании операционной системы Windows и Putty в качестве клиента, формат команды остается тот же, меняется только название исполняемого файл и используется синтаксис указания путей к файлам и каталогам Windows при указании источника или места назначения. Запускаем командную строку (cmd.exe) или PowerShell, переходим в каталог, где расположен файл pscp.exe вводим команду:
pscp.exe C:Tempfile.tgz root@123.123.123.123:/root
В случае запуска из какой-либо другой папки понадобится указать полный путь к pscp.exe. Если в каком-либо из путей присутствуют пробелы, используются двойные кавычки — “Путь к файлу”:
“C:Program FilesPuttypscp.exe” C:Tempfile.tgz root@123.123.123.123:/root
Как и в случае с scp, запустив pscp.exe без параметров, можно увидеть краткую справку по синтаксису команды и перечень поддерживаемых модификаторов.
Запуск команд на удаленном сервере через SSH-подключение
Протокол SSH, помимо работы в интерактивном режиме, поддерживает также разовый запуск команд или скриптов на удаленном сервере.
Работаем на ОС семейства Linux
Синтаксис команды:
ssh [пользователь]@[сервер] ‘[команда]’
При запросе вводим пароль указанного пользователя и в консоли получаем вывод команды, если таковой имеется.
Например, получим информацию об установленной на удаленном сервере операционной системе:
ssh root@123.123.123.123 ‘uname -a’
Чтобы запустить несколько команд за одно подключение, можно использовать символ “;” в качестве разделителя. Проверим сетевые настройки и активные сетевые подключения на удаленном сервере:
ssh root@123.123.123.123 ‘ifconfig; netstat -anp tcp’
В случае, если потребуется запустить на удаленном сервере локальный файла сценария, потребуется в SSH-подключении вызвать командный интерпретатор в режиме исполнения сценария (например, bash с ключом -s), и на стандартный ввод передать ему файл сценария. Выглядеть эта конструкция будет так:
ssh root@123.123.123.123 ‘bash -s’ < /home/user/myscript.sh
В результате локальный файл /home/user/myscript.sh исполнится на удаленном сервере.
Запуск команды SSH без параметров позволит ознакомиться с краткой справкой по синтаксису и списком дополнительных модификаторов, которые позволяют расширить функциональность команды.
Работаем на ОС семейства Windows
Если мы подключаемся к удаленному серверу с компьютера, работающего на операционной системе Windows, то нам снова потребуется обратиться к терминальному клиенту Putty, в состав которого входит исполняемый файл plink.exe. Работать с этим файлом необходимо из командной строки (cmd.exe) или из PowerShell.
Для запуска команды на удаленном сервере используется следующий синтаксис:
plink.exe [сервер] -ssh -l [пользователь] “[команда]”
Проверим конфигурацию сетевых интерфейсов:
plink.exe 123.123.123.123 -ssh -l root “ifconfig”
Как и при работе с командой SSH в Linux, plink.exe позволяет использовать “;” в качестве разделителя для запуска нескольких команд:
plink.exe 123.123.123.123 -ssh -l root “ifconfig; netstat -anp tcp”
А запуск команд из локального файла можно реализовать с помощью дополнительного ключа —m:
plink.exe 123.123.123.123 -ssh -l root -m “C:Tempmyscript.sh”
Запустив команду plink.exe без параметров, можно ознакомиться с краткой справкой по синтаксису и списком дополнительных модификаторов команды.
Аverage rating : 5
Оценок: 5
220140
Минск
ул. Домбровская, д. 9
+375 (173) 88-72-49
700
300
ООО «ИТГЛОБАЛКОМ БЕЛ»
220140
Минск
ул. Домбровская, д. 9
+375 (173) 88-72-49
700
300
ООО «ИТГЛОБАЛКОМ БЕЛ»
700
300
Introduction
While there are various methods available for file transfers from a Windows system to a Linux system, using the Command lines provides a straightforward and reliable approach. In this guide, we’ll walk you through the step-by-step process, highlighting the necessary commands and techniques to seamlessly transfer your files from Windows to Linux.
Prerequisites
Verify Your Remote Linux Server is Ready
If you have ordered one from Database Mart, you will receive an email containing the information of your VPS, including server IP and login credentials. You can also obtain the information on the overview page in the control panel. Please refer to this guide on how to get server credentials if you need assistance.
Steps to Transfer Files from Windows to Linux Using Command Prompt
Step 1. Open the Command Prompt in Local Windows
Search cmd in the search bar, and double-click the Command Prompt to open it. Or press the Windows key + R, then type cmd or cmd.exe in the Run command box, and press Enter.
Then, you should see the command prompt interface as below.
Step 2. Transfer Files between Local Windows and Remote Linux
Before the transfer, we will explain some terms used in the command. When using the command, you should replace these terms with the actual value.
filename.extension: it’s the name of a file and file extension that’s to be transferred. In this case, we may use mydata.txt and website.txt.
folderName: it’s the name of a folder that’s to be transferred. In this case, we may use the Website folder.
customPort: it’s the custom port you use to connect to your remote Linux server.
localFilePath: it’s the path on your local Windows PC.
username: it’s the username used to log into the remote Linux server.
remoteServerAddress: it’s the server IP of the remote Linux server.
remoteFilePath: it’s the path on the remote Linux server. In this case, we use /home/administrator.
2.1 Transfer a File from Local to Remote Server
For demonstration purposes, we have created a file in the desktop>website named «mydata.txt». First, we need to go to the file’s directory by inputting cd, followed by the file path on our local Windows. In this case, the file is located at desktop\website. Therefore, we enter the following command.
After that, you can see that we navigate to the folder where the file is located.
Then, we use the following command to transfer the «mydata.text» from local Window to the remote Linux server.
scp filename.extension username@remoteServerAddress:remoteFilePath
After entering the command, you will be prompted for the password for connecting to the remote server. Input the password and hit the Enter button, the file will be transferred. In this case, we have transferred the local file mydata.txt (located at desktop/website) to the /home/administrator directory on the remote Linux server.
2.2 Transfer a File from Remote Server to Local
You can run the following command to copy a file from the remote server to your local Windows PC.
scp username@remoteServerAddress:remoteFilePath/filename.extension localFilePath
In this case, we have transferred the mydata.txt (located at home/administrator on the remote server) to the desktop directory on the local server.
2.3 Transfer Multiple Files from Local to Remote Server
The SCP command also allows you to transfer multiple files in a single command. Navigate to the file folder and run the following command.
scp localFilePath/filename1.extension localFilePath/filename2.extension username@remoteServerAddress:remoteFilePath
In this case, we have transferred two local files mydata.txt (located at desktop) and mywebsite.txt (located at desktop/website) to the /home/administrator directory on the remote Linux server.
2.4 Transfer a Folder from Local to Remote Server
Besides files, the SCP command also allows you to securely copy folders between the local and remote server. Use the following command to copy a folder from local to the remote server.
scp -r localFilePath/folderName username@remoteServerAddress:remoteFilePath
In this case, we have transferred the local Website folder, which contains two files mydata.txt and mywebsite.txt, to the /home/administrator directory on the remote Linux server.
2.5 Transfer a File Faster
Adding the -c option after the scp command will compress the file while it’s being transferred. Once the file reaches its destination, it returns to its normal size.
scp -c localFilePath/filename.extension username@remoteServerAddress:remoteFilePath
In this case, we have transferred the local Website folder, which contains two files mydata.txt and mywebsite.txt, to the /home/administrator directory on the remote Linux server.
2.6 Transfer a File Using a Custom Port
The scp command uses the 22 port by default. If you have changed to a custom port, please run the following command to transfer a file. Make sure to capitalize the P.
scp -P customPort localFilePath/filename.extension username@remoteServerAddress:remoteFilePath
In this case, we have transferred the local file mydata.txt to the /home/administrator directory on the remote Linux server using a custom port.
Step 3. Verify the File has been Transferred
Then, Use a preferred editor to open the file. Here, we use the «Nano editor.» In this example, the remoteFilePath is /home/administrator, and the filename.extention can be mydata.txt, mywebsite.txt, and myweb.txt.
nano remoteFilePath/filename.extention
We can also check if the folder has been copied to the remote server. Go to the /home/administrator directory and check if the Website folder is there.
cd /home/administrator ll
Conclusion
In conclusion, transferring files from a local Windows machine to a remote Linux server using the command prompt (CMD) is a powerful and efficient method for managing data. By following the step-by-step guide outlined in this blog, you can establish a secure connection, utilize the SCP (Secure Copy Protocol) command, and successfully transfer files between these two platforms.