- Копирование файлов через SSH
- Копирование файлов по SSH на Linux
- Как скопировать файл по SSH с локальной машины на удалённый сервер
- Как скопировать файлы с удалённого сервера на локальный компьютер
- Как скачать папку со всеми файлами и подпапками
- Как подключиться к серверу по нестандартному порту
- Как передать и скачать файлы по SSH на Windows
- Копирование файлов по ssh. Команда scp
- Синтаксис команды scp
- Копирование локального файла
- Локальный→Удаленный
- Указываем порт
- Копирование файла с удаленного компьютера на локальный
- Удаленный→Локальный
- Копирование директории
- Копирование со сжатием данных (ускорение)
- Сохранение атрибутов файла
- Если в пути есть пробелы
- Передача файлов по сети Linux
- Передача файлов по сети Linux
- 1. Утилита nc
- 2. Передача файлов ssh
- 3. Передача файлов по FTP
- 4. Как передать файл в rsync
- 5. Сервер NFS
- 6. Сервер Samba
- 7. KDE-Connect
- Выводы
- Копирование файлов и запуск команд через SSH
- Работаем на ОС семейства Linux
- Работаем на ОС семейства Windows
- Запуск команд на удаленном сервере через SSH-подключение
- Работаем на ОС семейства Linux
- Работаем на ОС семейства Windows
Копирование файлов через SSH
В статье мы расскажем, как копировать файлы в Windows и Linux-системах, и покажем основные команды, с помощью которых происходит передача файлов по SSH.
Для копирования файлов по SSH в Linux-системах и Windows используют разные инструменты:
- scp (Secure CoPy) — утилита для безопасного копирования данных между Linux-системами по протоколу SSH. Она входит в состав OpenSSH, поэтому для работы с утилитой не нужно устанавливать дополнительное ПО;
- pscp.exe — утилита для загрузки файлов по SSH в ОС Windows. Она обладает теми же возможностями, что и scp. Утилита входит в состав программы Putty — SSH-клиента для Windows. Скачать программу можно по ссылке.
Копирование файлов по SSH на Linux
Для Linux копирование файлов по SSH происходит с использованием команды scp. С её помощью можно копировать файлы:
- с локального компьютера на удалённый сервер,
- с удалённого сервера на локальный компьютер.
Общий вид команды:
scp [опция] [источник] [получатель]
Как скопировать файл по 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».
Как скачать папку со всеми файлами и подпапками
Если вы хотите скачать папку со всеми файлами и подпапками, используйте ключ -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 и копирует на него файл «test.txt» с локального компьютера в директорию «/directory».
Как передать и скачать файлы по SSH на Windows
Скопировать файл по 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. Команда scp
Для копирования файлов по ssh между компьютерами под управлением Linux применяется команда scp . Рассмотрим, как можно копировать файлы с одного компьютера на другой по ssh, используя команду scp .
Синтаксис команды scp
Синтаксис команды scp следующий:
Команда scp принимает на вход различные опции (см. примеры ниже), а также файл или директорию, которую необходимо скопировать (аргумент что_копируем ). Последним аргументом указывается путь назначения, в который будет произведено копирование (аргумент куда_копируем ).
Аргументы что_копируем и куда_копируем могут быть, как локальными путями, так и удаленными. То есть можно копировать файлы с удаленного компьютера на локальный и наоборот. Можно копировать файлы с удаленного компьютера на другой удаленный компьютер.
что_копируем и куда_копируем имеют следующий синтаксис:
имя_пользователя — это имя пользователя для подключения по ssh.
IP_адрес — IP адрес компьютера (хоста) на который или с которого будет копирование.
Копирование локального файла
Локальный→Удаленный
Рассмотрим простой пример. Скопируем по ssh локальный файл myfile.dat на компьютер с IP адресом 192.168.1.74 в директорию /home/pingvin .
Указываем порт
Выполним тоже самое, но укажем еще и порт для подключения по ssh (используем опцию -P ). Обратите внимание, что опция для указания порта это прописная буква P !
Копирование файла с удаленного компьютера на локальный
Удаленный→Локальный
Теперь наоборот. Скопируем файл с удаленного компьютера в нашу текущую директорию.
Копирование директории
Скопируем с нашего локального компьютера директорию
/mydir на удаленный компьютер в директорию /home/pingvin . Используется опция -r .
Копирование со сжатием данных (ускорение)
Скорость копирования файлов можно увеличить. Для этого используется опция -C . Данная опция выполняет сжатие файлов при копировании, таким образом по сети передается меньшее количество данных. Сжатие выполняется только при передаче данных, то есть результирующий файл будет в первоначальном виде.
Пример копирования файла myfile.dat с включенным сжатием.
Сохранение атрибутов файла
Чтобы результирующий файл получил те же атрибуты что и исходный файл, используется опция -p (не путать с опцией -P для указания порта). При использовании опции -p сохраняются права доступа к файлу, владелец файла, временные метки и так далее.
Если в пути есть пробелы
Если путь до удаленного файла/директории содержит пробелы, то при использовании команды scp необходимо этот путь заключить и в одинарные и двойные кавычки:
Это связано с тем, что одни кавычки используются при разборе пути на локальной стороне, а вторые на удаленной.
Для получения полной справки по команде scp выполните в терминале:
Источник
Передача файлов по сети Linux
Мне, как владельцу персонального компьютера и ноутбука часто приходится передавать файлы с одного устройства на другое. Внешние жесткие диски и флешки использовать не всегда удобно, они актуальны для больших файлов, где важна скорость записи, а вот для маленьких файлов и документов хочется чего-нибудь попроще.
Если оба устройства подсоединены к одной сети идеальным вариантом будет передача файлов по сети linux. Здесь мы получаем большую скорость, и удобство использования — не нужно искать флешку или USB провод, достаточно прозрачно скопировать файл в нужную папку и он уже на целевом устройстве. Сегодня мы рассмотрим основные способы передачи файлов по сети между компьютерами.
Передача файлов по сети Linux
1. Утилита nc
Этот способ отлично подойдет, если вам нужно передать один или несколько файлов и вы не хотите устанавливать никаких новых программ в систему. Утилита nc или netcat позволяет создавать tcp и unix сокеты в системе. По сути, это туннели, через которые мы можем передать любые данные, в том числе и файлы.
Утилита уже предустановлена, так что ничего дополнительно ставить не придется, нужно только знать IP адреса компьютеров в сети. Сначала создаем слушающий сокет на компьютере, все поступившие на него данные сразу пишем в файл:
nc -l -p 12345 > newfile
Здесь опция -p задает порт, можно брать привольное значение, только чтобы совпадало в обоих командах. Теперь отправляем файл из другого компьютера:
cat file | nc 192.168.0.101 12345
Тут мы указываем тот же порт и ip компьютера, где был запущен слушающий сокет — 192.168.0.101. Убедитесь, что Firewall не мешает подключению к выбранному порту иначе ничего не получится.
Мы можем передавать не только файлы, но и папки. Передача может быть выполнена в обоих направлениях, теперь отправим не на сокет, и от сокета:
tar -cf — /data | nc -l -p 12345
И принимаем отравленные данные на другом компьютере:
nc 192.168.1.2 12345 | tar -xf —
2. Передача файлов ssh
Передача файлов по ssh Linux — это самый быстрый и удобный способ обмена файлами. Достаточно, чтобы на компьютере была запущена служба SSH и у вас был к ней доступ. Затем с помощью утилиты scp туда можно передать любой, файл, это быстро и удобно, а ещё вы можете выбрать папку, в которую его надо сохранить. Допустим, вам надо передать файл с именем
/file.txt на компьютер с IP адресом 192.168.0.101, тогда используйте такую команду:
Утилита загрузит файл прямо в домашнюю папку на удалённом компьютере и вы сможете выполнять с ним действия по SSH. Если надо передать все файлы из папки можно использовать опцию -r:
Читайте более подробно про утилиту scp в отдельной статье.
3. Передача файлов по FTP
Не очень удобный и очень медленный способ передачи файлов по сети. Хорошо работает для больших файлов, но большое количество мелких файлов будут передаваться очень долго. На одном компьютере должен быть развернут FTP сервер, а на другом можно использовать графический FTP клиент FileZilla для подключения и передачи файлов.
4. Как передать файл в rsync
Утилита rsync тоже использует для передачи файлов SSH, однако она позволяет передавать целые папки, а также следить за состоянием файлов и если на удалённом компьютере такой файл уже есть, то он передаваться не будет. Таким образом можно копировать только измененные файлы и удобно передавать целые папки. Для примера возьмем тот же компьютер 192.168.0.101 и папку
Мы записываем все файлы из папки
/files в папку /home/root, а также получаем возможность синхронизировать их. Подробнее про rsync читайте в отдельной статье.
5. Сервер NFS
Ещё один способ передачи файлов между Linux серверами — это NFS. На одном из серверов разворачивается NFS сервер, а на другом, монтируется удаленная NFS папка в обычную файловую систему, после чего она становится частью файловой системы Linux и туда уже можно копировать файлы так, как будто это на той же машине. Просто и удобно, но надо настраивать NFS и ещё один минус по сравнению с FTP, у NFS нет возможности настроить простую авторизацию по паролю, можно ограничить монтирование только по IP адресу что не всегда удобно.
6. Сервер Samba
Передавать файлы в Windows на Linux и обратно может помочь удалённый доступ с помощью Samba сервера. Если развернуть сервер Samba на Linux машине, то к нему можно будет подключится из Windows и видеть все файлы в общей папке. Samba — не очень хорошее решение, так как могут возникнуть проблемы с файлами больше 1 Гб, передающимися очень долго, но для обмена файлами между Windows и Linux довольно неплохое решение, тем более, что обмен файлами выполняется через стандартный файловый менеджер.
7. KDE-Connect
Для обмена файлами между компьютером Linux и Android можно использовать программу KDE-Connect. У неё есть приложение для Android, она встроена в окружение KDE, а для Gnome есть расширение GSConnect. Утилита позволяет передавать файлы на компьютер прямо с телефона, а также монтировать общую папку, в которую можно скидывать как файлы на компьютере, так и файлы на телефоне. Очень удобно. Читайте подробнее в статье про настройку KDE-Connect.
Выводы
Вы можете спросить, а какой же способ мне использовать? Ответ зависит от ваших потребностей, если вам нужен только передать один файл раз в месяц, может решением станет scp или FTP, а для регулярной передачи файлов по сети Linux удобнее использовать rsync, к тому же с помощью этой утилиты можно запланировать автоматическую синхронизацию. А какими способами пользуетесь вы? Напишите в комментариях!
Источник
Копирование файлов и запуск команд через SSH
Подключение к серверу посредством 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 исполнится на удаленном сервере.
Запуск команды 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:
Источник