Копировать файлы через SSH можно с помощью scp, sftp, rsync, а также графических программ — WinSCP, FileZilla и других. В Linux и macOS утилиты scp, sftp и rsync входят в состав OpenSSH и доступны сразу из терминала. В Windows можно использовать встроенный клиент OpenSSH (через PowerShell или командную строку), отдельные утилиты PuTTY (включая pscp) или графические приложения, например WinSCP.
В статье мы расскажем, как копировать файлы в Windows и Linux-системах, и покажем основные команды, с помощью которых происходит передача файлов по SSH.
Для копирования файлов по SSH в Linux-системах и Windows используют разные инструменты:
- scp (Secure CoPy) — утилита для безопасного копирования данных между Linux-системами по протоколу SSH. Она входит в состав OpenSSH, поэтому для работы с утилитой не нужно устанавливать дополнительное ПО;
- pscp.exe — утилита для загрузки файлов по SSH в ОС Windows. Она обладает теми же возможностями, что и scp. Утилита входит в состав программы PuTTY — SSH-клиента для Windows. Скачать программу можно по ссылке.
Обратите внимание
Если файл, который вы хотите скопировать, уже существует на целевом хосте, при копировании он будет перезаписан.
Способы передачи файлов по SSH
Передавать файлы по SSH можно с помощью разных инструментов в зависимости от задачи.
Передача файлов через SFTP
Если вам нужно поработать с сервером как с файловым менеджером — посмотреть содержимое, перейти в другую папку, удалить или переименовать файлы и многое другое — для этого подойдет утилита sftp.
Для запуска интерактивной среды sftp используйте команду вида:
sftp [имя пользователя]@[имя сервера/ip-адрес]
Пример команды:
sftp root@123.123.123.123
В этом случае пользователь root подключится к серверу с IP 123.123.123.123 по SFTP.
Копирование файлов по SSH на Linux
Для Linux копирование файлов по SSH происходит с использованием команды scp. С ее помощью можно копировать файлы:
- с локального компьютера на удаленный сервер,
- с удаленного сервера на локальный компьютер,
- с одного удаленного сервера на другой.
Что касается macOS, OpenSSH предустановлен в системе по умолчанию. Поэтому утилиты scp, sftp и rsync работают точно так же, как в Linux.
Общий вид команды:
scp [опция] [источник] [получатель]
Обратите внимание
Для подключения к удаленному серверу вам понадобится логин и пароль пользователя.
Копирование файлов по SSH на macOS
OpenSSH входит в состав системы macOS по умолчанию, поэтому утилиты scp, sftp и rsync работают точно так же, как в Linux.
Как загрузить файл на сервер по SSH (с локального компьютера)
Как загрузить файл на сервер по SSH? Для этого используйте команду вида:
scp [путь к файлу] [имя пользователя]@[имя сервера/ip-адрес]:[путь к файлу]
Пример команды:
scp /home/test.txt root@123.123.123.123:/directory
Файл test.txt будет скопирован на хост 123.123.123.123 в директорию /directory.
Как скопировать файлы с удаленного сервера на локальный компьютер
При подключенном SSH скачать файл на локальный компьютер с удаленного сервера можно с помощью команды:
scp [имя пользователя]@[имя сервера/ip-адрес]:[путь к файлу] [путь к файлу]
Пример команды:
scp root@123.123.123.123:/home/test.txt /directory
Файл test.txt будет загружен с сервера 123.123.123.123 на локальный компьютер в папку /directory.
Как скопировать файл по SSH с одного удаленного сервера на другой
Подключитесь по SSH к серверу, на котором расположен файл. Затем выполните команду:
scp [путь к файлу] [имя пользователя]@[имя сервера/ip-адрес]:[путь к файлу]
Пример команды:
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 [порт] [источник] [получатель]
Пример команды:
scp -P 12345 /home/test.txt root@123.123.123.123:/directory
Эта команда подключается по порту 12345 к серверу 123.123.123.123 и копирует на него в файл text.txt с локального компьютера с Linux в директорию /directory.
Копирование файлов по SSH на Windows: pscp и WinSCP
Скопировать файл по SSH на сервер можно командой:
pscp [путь к файлу] [имя пользователя]@[имя сервера/ip-адрес]:[путь к файлу]
Скачать файл по SSH с сервера командой:
pscp [имя пользователя]@[имя сервера/ip-адрес]:[путь к файлу] [путь к файлу]
Увидеть список папок и файлов на сервере можно через pscp.exe. Для этого введите:
pscp -ls [имя пользователя]@[имя сервера/ip-адрес]:[путь]
Если в пути или в названии файла есть пробелы, используйте кавычки:
pscp “C:\files or docs\file name” root@123.123.123.123:/home
Копирование файлов по SSH в Windows 10 и Windows 11
В современных версиях Windows OpenSSH-клиент может быть установлен по умолчанию, поэтому использовать PuTTY и pscp необязательно. Проверить наличие можно командой в PowerShell:
ssh
Если OpenSSH не установлен на вашей ОС, его можно добавить самостоятельно. Для этого перейдите в раздел: Параметры → Приложения → Управление дополнительными компонентами → Добавить компонент → Клиент OpenSSH.
После установки в PowerShell или командной строке работают стандартные команды scp и sftp:
scp file.txt user@server:/home/user/
sftp user@server
Это делает процесс копирования идентичным Linux и macOS.
Альтернативы командной строке
Если вы предпочитаете графический интерфейс, можно использовать:
WinSCP — популярный бесплатный SFTP- и SCP-клиент для Windows с двухпанельным интерфейсом, интеграцией с PuTTY и поддержкой скриптов;
FileZilla — многофункциональный FTP/SFTP-клиент с поддержкой SSH, удобен для массовых операций и работы с разными серверами;
VS Code Remote SSH — расширение для Visual Studio Code, позволяющее работать с файлами на удаленном сервере через SSH прямо из редактора, редактировать и копировать их без дополнительных программ.
Частые вопросы
Как скопировать папку через SSH?
*scp -r folder user@server:/home/user/*
Как передать файл через SSH по нестандартному порту?
*scp -P 1234 file.txt user@server:/home/user/*
Чем отличается SCP от SFTP?
Как копировать файлы через SSH в Windows?
Для этого существует несколько инструментов:
PowerShell / CMD — OpenSSH-клиент;
WinSCP — SFTP и SCP-клиент;
pscp — утилита из состава PuTTY;
FileZilla — клиент с поддержкой SFTP.
Можно ли передавать файлы через SSH без пароля?
*ssh-keygen -t rsa*, а затем скопируйте публичный ключ на сервер при помощи команды *ssh-copy-id user@server*
Была ли статья полезна?
Спасибо за оценку. Рады помочь 😊