1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Передача файлов по SSH

Содержание

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

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

В этой статье мы рассмотрим как выполняется копирование файлов с помощью утилиты scp (Secure Copy Command), а также что из себя представляет команда Linux scp. При передаче файлы шифруются, так что больше никто не сможет получить к ним доступ и самое интересное, что вам не нужно настраивать FTP или другое дополнительное программное обеспечение. Будет достаточно сервера SSH.

Что такое SCP?

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

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

Эта статья рассчитана в первую очередь на начинающих, поэтому я попытаюсь объяснять все как можно подробнее. Перед тем, как мы перейдем к практике, нужно рассмотреть общий синтаксис команды:

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

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

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

scp /home/sergiy/file root@losst.ru:/root/

В качестве пользователя нужно использовать любого пользователя, который есть на сервере. Вместо IP вы можете также домен сервера. Только необходимо, чтобы у выбранного пользователя были права записи в указанную папку.

С помощью опции -r вы можете скопировать на удаленную машину целый каталог. Команда будет выглядеть вот так:

scp -r /home/sergiy/photos root@losst.ru:/root/

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

scp -r /home/sergiy/photos/* root@losst.ru:/root/

Если поменять местами локальный путь и сервер, то вы сможете копировать файлы scp c удаленного сервера на локальный компьютер:

scp root@losst.ru:/root/file /home/sergiy/

Таким же самым образом вы можете копирование файлов scp или папок с сервера:

scp -r root@losst.ru:/root/photos /home/sergiy/

Обратите внимание, что папка, в которую вы собираетесь копировать должна завершаться косой чертой, иначе папка, которую вы копируете запишется вместо той, в которую нужно скопировать.

Чтобы скачать файл scp из одного сервера на другой, просто необходимо указать данные аутентификации на каждом из них. Например, скопируем один файл:

scp root@losst.ru:/home/root/index.html root@losst.ru:/home/root/www/

Скопируем папку с того же удаленного сервера:

scp root@losst.ru:/root/photos root@losst.ru:/home/root/www/

Выводы

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

Блог dоктора Dобрянского

Бред в IT

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

При работе с *nix серверами, иногда бывает надобность быстро залить файл на сервер, или скачать c сервера.

Далеко не всегда в таких случаях есть возможность воспользоваться ftp-сервером, или например, передать файл по http (как я иногда делаю), а есть под рукой только ssh.

Но, как мы знаем, ssh протокол очень универсален, в том числе приспособлен и для передачи файлов.

Для этого есть замечательная утилита scp.

Из ее преимуществ можно выделить : простоту использования, защищенность протокола, хорошую производительность.

В Linux она по-умолчанию идет с ssh-клиентом (если я не ошибаюсь), а для Windows есть pscp, который входит в состав замечательного пакета инструментов — всеми любимого PuTTY.

Короче — меньше текста, больше примеров.

Для Linux:

— скачиваем файл на локальную машину

данная команда скачает файл /home/user/file.tar.gz с удаленной машины 11.22.33.44 в папку /opt локальной файловой системы.

— заливаем файл на удаленный сервер

думаю, принцип понятен.

Для Windows:

Открываем консоль и лезем в папку, где у нас установлен PuTTY, затем ищем там pscp.exe

аргументы по аналогии с Linux.

— заливаем файл на удаленный сервер

Ну, в общем вы поняли…

Поделиться ссылкой:

Навигация по записям

Копирование файлов по SSH : 30 комментариев

Пиздец, глазовыколупывалка, сука весь текст расплывается как тут читать можно?? хоть бы шрифт помянял. в спам такой сайт.

в спам такие комменты 😉 читать тебя никто не заставляет, сайту 4 года и до этого никто не жаловался, а если тебе мозгов не хватает установить нормальный браузер и воспользоваться зумом для повышения читаемости — просто пройди мимо, не засирай эфир 🙂

Сайт очень классный и интересный. Но Man в чем-то прав: действительно белый шрифт на черном фоне сильно режет глаз, тяжело читать. Вы не думали немного изменить дизайн? Не воспринимайте мой комментарий как негатив, это скорее вопрос.

P.S. с удовольствием читаю Все Ваши посты, хоть большинство информации и так знаю, но всегда приятно убедиться в своей правоте 🙂

Спасибо за коммент! к критике отношусь позитивно, если это не быдло-критика (это я про первый комментарий) 🙂 и нет, дизайн менять не думал, а даже, если и немного поменяю, то это скорее будет корректировка шрифтов и стилей, а основа останется та же, по крайней мере в ближайшее время. Я бы сказал что это на любителя… Лично мне нравится белый шрифт на черном фоне, я даже на телефоне включаю инверсию, когда что-то читаю 🙂
Но все равно спасибо, мне интересно мнение читателей.

Спасибо!Статья помогла!
но возник вопрос,пытаюсь слить с линукс машины на винду-в итоге ошибка «pscp: D:backup»: Cannot create file»
Как лечить?

Читать еще:  Смотрим информацию о системе в Linux (Ubuntu, CentOS, Fedora)

Сам нашел ответ.Нужно в конце команды C:Program FilesPuTTY>pscp.exe root@11.22.33.44:/home/user/file.tar.gz «D:install» поставить точку в пути

C:Program FilesPuTTY>pscp.exe root@11.22.33.44:/home/user/file.tar.gz «D:install.»

Спасибо за пост! Может кому-то будет полезен.
Ошибка явно в синтаксисе, думаю, здесь могут быть и другие варианты. Например:
— D:install
— D:install*
— D:installfile.tar.gz
и не забываем про кавычки.

Коротко, просто, а главное — работает.

белый на черном с учетом что линки синие =читать невозможно, дизайнер иди улицы мети-хоть какая-то польза будет

Вот просто блядь не знаю даже, как я жил раньше без твоего остроумного мнения. Пойду убью себя апстену.

А мне вкатывает белое на черном. Сколько людей столько и мнений.

Уважаемый разработчик (владелец) сайта. Вы пишите, что Вам нравится такая цветовая схема сайта белым по черному. Однако, стоит подумать прежде всего о читателях. Или Вы сайт исключительно для себя делали? Обратите внимание, сколько людей написали Вам об этом. И это только те кто написали, а те кто просто закрыли страницу, те кто больше никогда сюда не зайдут, те кто портят статистику показателей отказов и прочие. Я рекомендовал бы Вам прислушиваться к мнению читателей. Поверьте многие владельцы сайтов думают о том как бы узнать, что посетителю нравится, а что нет на их сайтах, а Вам тут посетители сами пишут. Думаю стоит пользоваться этим.

Sasser, спасибо за отзыв, но Вы посмотрите на комментарий выше, он свидетельствует о том, что вкусы и предпочтения у всех разные и всем одновременно не угодишь, это во-первых…
Во-вторых, негативно я отношусь только к быдло-критике, которая по большей части выглядит как вброс г**на на вентилятор.
Мне действительно интересно и важно мнение читателей, но этот блог это не коммерческий проект, нацеленный на продвижение и зарабатывание денег, это всего лишь «игрушка» (по крайней мере пока) для того, что бы можно было делиться и обмениваться опытом с читателями.
Если человеку интересен контент и если он найдет здесь решение своей проблемы, или просто узнает что-то полезное и новое — ему по большому счету по барабану, какого цвета шрифт и на каком фоне.
Этот сайт с его дизайном был создан около 5 лет назад и за это время очень многим помог, я не являлся тогда и не являюсь и сейчас профессиональным веб-дизайнером, и что бы сделать редизайн и удовлетворить 2-х человек, мне ну никак не хочется тратить кучу времени, при том, что в конечном итоге все равно найдется умник, который скажет «сайт — говно, автор мудак» и т.п.
Лучше это время (когда оно у меня наконец появится :)) я потрачу на написание нового полезного материала, а редизайн сделаю тогда, когда действительно увижу в этом какой-то смысл (проект станет приносить деньги, или просто некуда будет убить неделю времени).

Подскажите, как можно скачать папку, команда
C:Program FilesPuTTY>pscp.exe root@11.22.33.44:/home/user/dir «D:install»
заканчивается is a directory, и далее ничего не происходит.

Попробуйте так: C:Program FilesPuTTY>pscp.exe root@11.22.33.44:/home/user/dir/* «D:installdir»

Черный шрифт на белом фоне — читать невозможно! (шутка)
Спасибо за статью!

Удивительно, но всё работает. Хотя и статью прочитал с трудом. Шрифт хотелось бы с засечками и синий, на желтом фоне, так, говорят модно.

Пишет pscp: unable to open /home/user/web/web.zip: permission denied

Подскажите пожалуйста. Есть возможность таким образом копировать файлы по принципу сервер-сервер. есть например файл к которому есть прямая ссылка на ругом сайте и я не хочу ее еопировать на локальный компьютер, а хочу сразу сервером скачать его на свой хостинг (сайт). Получается нагрузка трафика идет только на сервер, не нужно файл перезаливать используя локальный посредник.

При копировании файла с сервера на локальную машину выдает ошибку Is a directory
В чем может быть проблема?

весь пост: ну вы поняли
ну тебя нахуйли, объяснятель
не умеешь разложить, не берись

Спасибо за шпаргалку, dоктор Dобрянский
Всего тебе добрянского.

И кто бы что не писал в комментариях, все сюда ходют и ходют.

Здравствуйте!
Что делать если при загрузке файла на сервер сначала идет загрузка, но не загружает до конца и пишет error while writing failure ?
В итоге файл на сервере появляется пустым

Сайт гавно, афтор мудак, чорный шрифт на белом фоне=читать нивазможна.
Иди лудше учи уроки или на зоводе роботай!1. 1!!

Спасибо за Вашу работу очень вовремя понадобилась эта информация!

Спасибо за статью, однако есть вопрос, подскажите где настраивается лимит времени подключения и скачивания с сервера? это таймаут подключения ssh?
при длительной загрузке получаю ошибку: Connection reset by ip port 22

Копирование файлов и запуск команд через 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), и на стандартный ввод передать ему файл сценария. Выглядеть эта конструкция будет так:

Читать еще:  Как в Ubuntu войти как root-пользователь

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:

Блог dоктора Dобрянского

Бред в IT

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

При работе с *nix серверами, иногда бывает надобность быстро залить файл на сервер, или скачать c сервера.

Далеко не всегда в таких случаях есть возможность воспользоваться ftp-сервером, или например, передать файл по http (как я иногда делаю), а есть под рукой только ssh.

Но, как мы знаем, ssh протокол очень универсален, в том числе приспособлен и для передачи файлов.

Для этого есть замечательная утилита scp.

Из ее преимуществ можно выделить : простоту использования, защищенность протокола, хорошую производительность.

В Linux она по-умолчанию идет с ssh-клиентом (если я не ошибаюсь), а для Windows есть pscp, который входит в состав замечательного пакета инструментов — всеми любимого PuTTY.

Короче — меньше текста, больше примеров.

Для Linux:

— скачиваем файл на локальную машину

данная команда скачает файл /home/user/file.tar.gz с удаленной машины 11.22.33.44 в папку /opt локальной файловой системы.

— заливаем файл на удаленный сервер

думаю, принцип понятен.

Для Windows:

Открываем консоль и лезем в папку, где у нас установлен PuTTY, затем ищем там pscp.exe

аргументы по аналогии с Linux.

— заливаем файл на удаленный сервер

Ну, в общем вы поняли…

Поделиться ссылкой:

Навигация по записям

Копирование файлов по SSH : 30 комментариев

Пиздец, глазовыколупывалка, сука весь текст расплывается как тут читать можно?? хоть бы шрифт помянял. в спам такой сайт.

в спам такие комменты 😉 читать тебя никто не заставляет, сайту 4 года и до этого никто не жаловался, а если тебе мозгов не хватает установить нормальный браузер и воспользоваться зумом для повышения читаемости — просто пройди мимо, не засирай эфир 🙂

Сайт очень классный и интересный. Но Man в чем-то прав: действительно белый шрифт на черном фоне сильно режет глаз, тяжело читать. Вы не думали немного изменить дизайн? Не воспринимайте мой комментарий как негатив, это скорее вопрос.

P.S. с удовольствием читаю Все Ваши посты, хоть большинство информации и так знаю, но всегда приятно убедиться в своей правоте 🙂

Спасибо за коммент! к критике отношусь позитивно, если это не быдло-критика (это я про первый комментарий) 🙂 и нет, дизайн менять не думал, а даже, если и немного поменяю, то это скорее будет корректировка шрифтов и стилей, а основа останется та же, по крайней мере в ближайшее время. Я бы сказал что это на любителя… Лично мне нравится белый шрифт на черном фоне, я даже на телефоне включаю инверсию, когда что-то читаю 🙂
Но все равно спасибо, мне интересно мнение читателей.

Спасибо!Статья помогла!
но возник вопрос,пытаюсь слить с линукс машины на винду-в итоге ошибка «pscp: D:backup»: Cannot create file»
Как лечить?

Сам нашел ответ.Нужно в конце команды C:Program FilesPuTTY>pscp.exe root@11.22.33.44:/home/user/file.tar.gz «D:install» поставить точку в пути

C:Program FilesPuTTY>pscp.exe root@11.22.33.44:/home/user/file.tar.gz «D:install.»

Спасибо за пост! Может кому-то будет полезен.
Ошибка явно в синтаксисе, думаю, здесь могут быть и другие варианты. Например:
— D:install
— D:install*
— D:installfile.tar.gz
и не забываем про кавычки.

Коротко, просто, а главное — работает.

белый на черном с учетом что линки синие =читать невозможно, дизайнер иди улицы мети-хоть какая-то польза будет

Вот просто блядь не знаю даже, как я жил раньше без твоего остроумного мнения. Пойду убью себя апстену.

А мне вкатывает белое на черном. Сколько людей столько и мнений.

Уважаемый разработчик (владелец) сайта. Вы пишите, что Вам нравится такая цветовая схема сайта белым по черному. Однако, стоит подумать прежде всего о читателях. Или Вы сайт исключительно для себя делали? Обратите внимание, сколько людей написали Вам об этом. И это только те кто написали, а те кто просто закрыли страницу, те кто больше никогда сюда не зайдут, те кто портят статистику показателей отказов и прочие. Я рекомендовал бы Вам прислушиваться к мнению читателей. Поверьте многие владельцы сайтов думают о том как бы узнать, что посетителю нравится, а что нет на их сайтах, а Вам тут посетители сами пишут. Думаю стоит пользоваться этим.

Sasser, спасибо за отзыв, но Вы посмотрите на комментарий выше, он свидетельствует о том, что вкусы и предпочтения у всех разные и всем одновременно не угодишь, это во-первых…
Во-вторых, негативно я отношусь только к быдло-критике, которая по большей части выглядит как вброс г**на на вентилятор.
Мне действительно интересно и важно мнение читателей, но этот блог это не коммерческий проект, нацеленный на продвижение и зарабатывание денег, это всего лишь «игрушка» (по крайней мере пока) для того, что бы можно было делиться и обмениваться опытом с читателями.
Если человеку интересен контент и если он найдет здесь решение своей проблемы, или просто узнает что-то полезное и новое — ему по большому счету по барабану, какого цвета шрифт и на каком фоне.
Этот сайт с его дизайном был создан около 5 лет назад и за это время очень многим помог, я не являлся тогда и не являюсь и сейчас профессиональным веб-дизайнером, и что бы сделать редизайн и удовлетворить 2-х человек, мне ну никак не хочется тратить кучу времени, при том, что в конечном итоге все равно найдется умник, который скажет «сайт — говно, автор мудак» и т.п.
Лучше это время (когда оно у меня наконец появится :)) я потрачу на написание нового полезного материала, а редизайн сделаю тогда, когда действительно увижу в этом какой-то смысл (проект станет приносить деньги, или просто некуда будет убить неделю времени).

Подскажите, как можно скачать папку, команда
C:Program FilesPuTTY>pscp.exe root@11.22.33.44:/home/user/dir «D:install»
заканчивается is a directory, и далее ничего не происходит.

Попробуйте так: C:Program FilesPuTTY>pscp.exe root@11.22.33.44:/home/user/dir/* «D:installdir»

Черный шрифт на белом фоне — читать невозможно! (шутка)
Спасибо за статью!

Удивительно, но всё работает. Хотя и статью прочитал с трудом. Шрифт хотелось бы с засечками и синий, на желтом фоне, так, говорят модно.

Пишет pscp: unable to open /home/user/web/web.zip: permission denied

Подскажите пожалуйста. Есть возможность таким образом копировать файлы по принципу сервер-сервер. есть например файл к которому есть прямая ссылка на ругом сайте и я не хочу ее еопировать на локальный компьютер, а хочу сразу сервером скачать его на свой хостинг (сайт). Получается нагрузка трафика идет только на сервер, не нужно файл перезаливать используя локальный посредник.

При копировании файла с сервера на локальную машину выдает ошибку Is a directory
В чем может быть проблема?

весь пост: ну вы поняли
ну тебя нахуйли, объяснятель
не умеешь разложить, не берись

Спасибо за шпаргалку, dоктор Dобрянский
Всего тебе добрянского.

И кто бы что не писал в комментариях, все сюда ходют и ходют.

Здравствуйте!
Что делать если при загрузке файла на сервер сначала идет загрузка, но не загружает до конца и пишет error while writing failure ?
В итоге файл на сервере появляется пустым

Читать еще:  Неизвестная ошибка 14 при восстановлении прошивки или обновлении iPhone 4S, 5S, 6

Сайт гавно, афтор мудак, чорный шрифт на белом фоне=читать нивазможна.
Иди лудше учи уроки или на зоводе роботай!1. 1!!

Спасибо за Вашу работу очень вовремя понадобилась эта информация!

Спасибо за статью, однако есть вопрос, подскажите где настраивается лимит времени подключения и скачивания с сервера? это таймаут подключения ssh?
при длительной загрузке получаю ошибку: Connection reset by ip port 22

Копирование файлов по 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 выполните в терминале:

Передача файлов в Linux с помощью SCP

Linux-администратор должен уверенно владеть интерфейсом командной строки, так как на большинстве Linux-серверов не устанавливается графическая оболочка. SSH является наиболее популярным протоколом, который обеспечивает администратору возможность безопасного удаленного управления сервером. Для безопасного копирования файлов между серверами с использованием этого протокола используется команда scp (secure copy – безопасное копирование). В данном руководстве мы рассмотрим основы работы с командой scp и наиболее важные опции.

Базовый синтаксис

Команда scp выглядит следующим образом

Данная команда выполняет копирование указанного файла (имя_файла) в конкретную директорию (директория_назначения) на узле назначения (узел_назначения) с использованием учетной записи определенного пользователя (пользователь).
Подробная информация о процессе копирования
При запуске без параметров команда scp будет копировать файлы в фоновом режиме. Пользователь ничего не видит, пока процесс не будет завершен, или не возникнет какая-либо ошибка. Для вывода подробной информации о процессе копирования на экран можно воспользоваться параметром –v. Это может помочь в отладке проблем соединения, аутентификации и конфигурации.

Сохранение значений атрибутов

Для копирования файлов с сохранением времени доступа, модификации и прав доступа используется опция –p. На экране отобразятся примерное время выполнения и скорость соединения:

Сжатие файлов при передаче

Опция –C поможет ускорить передачу файлов за счет их сжатия. Преимущество такой передачи в том, что сжатие будет выполняться только для передачи по сети. При завершении копирования на сервере места назначения размер файла вернется к первоначальному, каким он был до сжатия.

Допустим, требуется скопировать файл размером 1 ГБ. Следующая команда выполнит это без сжатия:

Время копирования составило 20.3 секунды. Теперь выполним копирование с параметром –C:

Видно, что при использовании сжатия процесс передачи требует всего 3,4 секунды. Это более чем в 6 раз быстрее. Однако, важно отметить, что сжатие работает не для всех файлов. При копировании уже сжатых файлов никакого ускорения не будет, поэтому на архивы, изображения и файлы образов этот параметр не действует.

Выбор алгоритма шифрования

По умолчанию scp использует для шифрования файлов алгоритм AES-128. Если требуется другой алгоритм, его можно изменить при помощи опции -c:

В данном случае задан алгоритм 3DES. Обратите внимание, что данный параметр указывается маленькой буквой , а не большой -C.

Ограничение скорости передачи

Опция -l ограничивает скорость передачи, указывается в кбит/c. Она полезна для использования в скриптах для автоматического копирования большого количества файлов, чтобы процесс scp не занимал весь канал.

После параметра указывается значение ограничения скорости в килобитах в секунду, а при передаче скорость отображается в килобайтах в секунду. В данном случае мы указали 400 кбит/с, что эквивалентно 50 кбайт/с, так как в одном байте 8 бит (400/8 = 50).
Выбор порта для scp
Обычно scp по умолчанию использует порт 22, но в целях безопасности может потребоваться его изменить. Для этого применяется опция -P. Например, если мы используем порт 2249:

Убедитесь, что буква заглавная, так как строчная p используется для сохранения атрибутов.

Рекурсивное копирование каталогов

Если требуется копирование директории со всеми поддиректориями и файлами внутри, лучше сделать это одной командой. В scp для этого используется параметр -r:

scp -r /root/documents root@10.10.10.2:.

После завершения процесса копирования на сервере места назначения появится директория documents со всеми файлами, которая будет создана автоматически.

Отключение отображения прогресса и служебных сообщений

Если вы не хотите видеть прогресс выполнения операции, предупреждения и диагностические сообщения scp, их можно отключить параметром

# scp -q label.pdf root@10.10.10.2:.

После ввода пароля не отображается никакой информации о работе команды. После завершения процесса копирования вы снова увидите командную строку.

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

В офисных сетях часто используются прокси-серверы. Изначально scp не настроена для работы через прокси, поэтому если вы используете прокси-сервер, нужно «сообщить» об этом команде. Для работы протокола SSH через прокси-сервер требуется туннелирование, которое осуществляется при помощи специальной программы Corkscrew. В вашей системе она может быть не установлена, в этом случае нужно воспользоваться стандартной процедурой установки:

Допустим, адрес вашего прокси-сервера 10.0.96.6, а порт 8080, и на сервере требуется аутентификация пользователя. Нужно создать файл

/.ssh/config и прописать там следующую команду:

Затем нужно создать файл

/.ssh/proxyauth, содержащий имя пользователя и пароль для аутентификации на прокси-сервере в следующем формате:

Теперь можно использовать scp в прозрачном режиме, как обычно. Необходимо исключить доступ посторонних лиц к файлу

/.ssh/proxyauth, потому что в нем открытым текстом указаны имя пользователя и пароль.

Выбор другого файла конфигурации

Мобильным пользователям, которые попеременно используют сеть компании и публичные сети, будет тяжело каждый раз менять настройки scp. Лучше всего создать для этого отдельный файл ssh_config и воспользоваться параметром -F.

По умолчанию файл ssh_config для пользователя находится в

/.ssh/config. Если создать отдельный файл proxy_ssh_config для использования прокси, это упростит переход между сетями.

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

Заключение

Мы рассмотрели наиболее распространенные примеры работы с командой scp. Более подробную информацию можно получить в соответствующих man-страницах.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector