...

Что за программа scp

Копирование файлов 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 [email protected]:/root/

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

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

scp -r /home/sergiy/photos [email protected]:/root/

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

scp -r /home/sergiy/photos/* [email protected]:/root/

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

scp [email protected]:/root/file /home/sergiy/

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

scp -r [email protected]:/root/photos /home/sergiy/

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

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

scp [email protected]:/home/root/index.html [email protected]:/home/root/www/

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

scp [email protected]:/root/photos [email protected]:/home/root/www/

Выводы

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

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Похожие записи

Оцените статью

(21 оценок, среднее: 4,43 из 5)

Об авторе

Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.

28 комментариев к “Копирование файлов scp”

блин, а если порт не 22 то че. ( Ответить
scp -P NNNN user@server Ответить

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

Копирую с одного удаленного хоста на другой. На исходном ssh работает на 22-м порту, на целевом хосте — на альтернативном.
Т.е. получается такая строка:
scp [email protected]:/path/file -P 2222 [email protected]:/path/file
При этом получаю сообщение: ssh: connect to host 192.168.4.33 port 22: Network is unreachable
Т.е. опция выбора порта не срабатывает. Как сделать, чтобы сработало? Ответить

Игорь VK Team

Сначала -P а потом уже хост. Если ты с 192.168.3.33 хочешь на 192.168.4.33 залить, то тебе надо зайти по SSH на 192.168.3.33 $ ssh [email protected]
$ cd /path/
$ scp -P 2222 file [email protected]:/path Ответить

А можно ли не копировать а перемещаться(скопировать с сервера и на нём же удалить) ?
А то не хочется сначала копировать, а потом удалять на сервере. Что то типа mv только для этой темы. Ответить

Кто знает скрипт для того, чтобы копирование происходило автоматиески с хоста в определенное время? Ответить

cron же, ну что вы. В терминале crontab -e, добавьте строку для задания и всё работает. Ответить

Этого недостаточно.
Ведь там же потребует пароль при вводе
А в этом уже поможет утилита sshpass Ответить

Добрый день! объясните в чем проблема?
Я понимаю, что в ключах но как мне подсоединить их к локальной машине или я что то не то?
root@ip-172-31-47-98:/home/ubuntu# scp /users/desktop/webapp.7z [email protected]:/home/
[email protected]: Permission denied (publickey).
lost connection Ответить

Погуглите ssh без пароля .. вот прям первая ссылка даст вполне вразумительный ответ. Ответить

«Обратите внимание, что папка, в которую вы собираетесь копировать должна завершаться косой чертой, иначе папка, которую вы копируете запишется вместо той, в которую нужно скопировать.» — не увидел влияние слеша на процесс копирования (CentOS 8) — что с ним, что без него папка-источник целиком помещается в папку назначения без затирания папки назначения, либо каких бы то ни было файлов в ней. Это из-за различий в используемых дистрибутивах? Ответить

Кто-то пробовал через scp реализовать примерно следующее? На одном сервере происходит обновление некоего файла, к примеру сертификата.
После этого нужно скопировать файл на другой сервер.
На исходном сервере сгенерирован ключ для ssh с помощью ssh-keygen.
Команда вида
scp -i /etc/letsencrypt/live/example.org/fullchain.pem user@webserver:/home/user/ssl/example.org
отрабатывает успешно
Но если указать команду в виде
scp -i /etc/letsencrypt/live/example.org/fullchain.pem user@webserver:/etc/letsencrypt/live/example.org
то получаем
Permission denied
В принципе логично.
На целевом сервере (Ubuntu) используется механизм sudo. А ключ для ssh сгенерирован для текущего пользователя.
Если генирировать через команду sudo ssh-keygen, то ключ будет для пользователя root. Но как такового пользователя нет в системе, и в команде его не использовать.
Как-то можно с помощью scp использовать sudo для того, чтобы положить файлы в системные каталоги? Ответить

Наверное лучше всего смотреть на следующий вариант:
1. Копируем файлы с помощью scp
sudo scp /etc/letsencrypt/live/example.org/fullchain.pem user@webserver:/home/user/ssl/example.org/
2. Настраиваем беспарольный доступ на sudo пользователю с помощью visudo (тут можно тонко выбрать разрешения, в общем поиграться)
3. Используем команду вида
sudo ssh user@webserver sudo cp /home/user/ssl/example.org/fullchain.pem /etc/ssl/example.org/ Как то примерно так.
Можно еще настроить через rsync, тоже с настройкой разрешений через visudo, но не стал пробовать.
Хочется обойтись минимумом ПО. Ответить

Команда SCP Linux: безопасное копирование и передача файлов

img

SCP включает шифрование через соединение SSH (Secure Shell). Это гарантирует, что даже если данные будут перехвачены, они будут защищены.

Команда SCP Linux: безопасное копирование и передача файлов

Как безопасно копировать файлы с помощью SCP

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

Команда scp позволяет использовать подстановочные знаки.

Используйте символ тильды ~/ для обозначения home/user каталога пользователя.

Вы можете указать строку текста со знаком * .

Например, /~/*.txt заставит SCP скопировать все файлы в домашнем каталоге, которые заканчиваются на .txt .

Как правило, вам не нужно указывать расположение файла в текущем каталоге. Если вы находитесь в каталоге /home/user и хотите скопировать файл test.txt на сервер, вы можете ввести следующее:

scp test.txt username2@destination:/location2

Чтобы скопировать все файлы .txt в домашний каталог username2 , введите следующее:

scp *.txt username2@destination_host:/~/

Если вы укажете только каталог назначения, SCP оставит имя файла как есть.

Чтобы изменить имя файла, определите новое имя файла в месте назначения:

scp test.txt username2@destination_host:/user/home/user1test.txt

В этом примере файл test.txt копируется с локального компьютера, а затем сохраняется как user1test.txt в каталоге пользователя системы назначения.

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

scp –P 1234 test.txt user2@destination_host:/location2/

Это копирует test.tx t из вашей локальной системы на целевой хост, используя порт 1234.

Копировать с одного удаленного хоста на другой

Вы не ограничены только подключением между локальным компьютером и удаленным сервером.

Чтобы скопировать из одной удаленной системы в другую:

scp [email protected]:/files/test.txt [email protected]:/files

Это приведет к репликации файла test.txt из каталога /files на host1.com в каталог /files на /host2.com. Система предложит вам ввести пароль для пользователей user1 и user2 до завершения операции.

Копирование больших файлов с помощью SCP

Если вы копируете большие файлы, запустите команду в терминальном мультиплексоре, например tmux .

Если операция прервана, мультиплексор позволит вам возобновить копирование без необходимости начинать заново.

Вы можете проверить, установлен ли в вашей системе tmux , выполнив в терминале следующее:

tmux -V

Рекомендации по использованию SCP

Команда scp не проверяет место назначения перед записью. Любые файлы в месте назначения с тем же именем будут перезаписаны без уведомления.

Вам будет предложено ввести пароль, когда вы нажмете Enter.

Используйте пароль пользователя в удаленной системе.

Управление разрешениями

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

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

Параметры команды SCP

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

scp [options] username1@source_host:/location1/file1 username2@destination_host:/location2/file2

Вот некоторые общие параметры команды scp:

  • –P — Указать порт SSH сервера
  • –p — сохранить метку времени для изменения и доступа (обратите внимание на строчные буквы)
  • –q — тихий режим, без отображения прогресса или сообщений (все равно будут отображаться ошибки)
  • –C — Сжимать данные во время передачи
  • –r — Рекурсивно — включать подкаталоги и их содержимое

Раздел, следующий сразу за параметрами, — это источник (путь) файла, который вы хотите скопировать. Вы можете скопировать из своей системы в удаленную или наоборот.

В следующем разделе указывается место, куда копируется файл. Например:

scp user@local_system:/home/user/test.txt admin@remote_system:/home/user

Это скопирует документ test.txt из пользовательского каталога в локальной системе и поместит копию в каталог учетной записи администратора в удаленной системе.

Другой пример SCP — чтобы скопировать файл с удаленного хоста на локальный:

scp user@from_host:file.txt /local/directory/

Итоги

В этом руководстве вы узнали, что такое команда scp и как ее использовать для защиты передачи файлов.

12 примеров команд SCP и как использовать SCP

В этой статье рассказывается о команде SCP (Secure Copy Protocol) как о безопасном и эффективном способе передачи файлов через общедоступный Интернет, приводятся 12 примеров команд SCP, которые вы можете попробовать практически в любом дистрибутиве.

Что такое команда SCP?

SCP расшифровывается как Secure Copy Protocol. Как следует из инициализма, целью команды SCP является безопасная передача файлов между двумя компьютерами.

В отличие от многих других методов передачи файлов, SCP обеспечивает подлинность и конфиденциальность передаваемых данных с использованием протокола Secure Shell (SSH).

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

Многие дистрибутивы Linux, включая Linux Mint, позволяют вам использовать команду SCP (входит в состав OpenSSH) прямо из коробки, и вы всегда можете установить пакет openssh-client вручную в любой дистрибутив, который его не включает.

Почему я должен использовать команду SCP?

Есть две основные причины использовать команду SCP: удобство и безопасность. Давайте рассмотрим их в том же порядке.

Удобство. Существует множество способов копирования файлов между двумя компьютерами. Вы можете перенести их с помощью USB-накопителя, создать сервер NFS или samba или загрузить их в облачное хранилище, например Dropbox. Однако все эти методы требуют, чтобы вы выполнили гораздо больше шагов, чем команда SCP.

Безопасность. Категорически запрещается передавать конфиденциальные файлы через общедоступный Интернет в незашифрованном виде, например по протоколу FTP. SCP основан на SSH, поэтому он достаточно хорошо защищает данные при передаче.

Мы говорим, что SCP достаточно хорошо справляется со своей задачей, потому что разработчики OpenSSH считают его «устаревшим, негибким и плохо исправимым». Они рекомендуют sftp и rsync как более современные альтернативы. Несмотря на это, SCP — удобный инструмент, и научиться им пользоваться не так уж и сложно.

Как использовать команду SCP?

Основной синтаксис команды SCP выглядит следующим образом:

scp [параметры] /local/file/or/folder UserName@TargetHost:/target/path

scp [параметры] Имя_пользователя@TargetHost:/target/path/local/file/or/folder

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

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

12 примеров команд SCP

Теперь, когда вы знакомы с основным синтаксисом команды SCP и параметрами, которые она поддерживает, мы можем более подробно рассмотреть 12 примеров команд SCP, которые иллюстрируют, как использовать SCP на практике.

Пример 1. Скопируйте файл из вашей системы на удаленный хост

$ scp document.txt morelo @ 192.168.44.132: / tmp

Пример 2. Скопируйте файл с удаленного хоста в свою систему

$ scp morelo @ 192.168.44.132: / tmp / document.txt / tmp

Пример 3. Копирование файла с одного удаленного узла на другой удаленный узел

scp morelo @ 192.168.44.132: / tmp / document.txt robert @ 192.168.44.130: / tmp /

Пример № 4. Включение подробного вывода

$ scp -v document.txt morelo @ 192.168.44.132: / tmp

Пример 5. Скопируйте два файла из вашей системы на удаленный хост

$ scp document1.txt document2.txt morelo @ 192.168.44.132: / tmp

Пример 6. Рекурсивное копирование всего локального каталога на удаленный хост

$ scp -r ~ / Desktop morelo @ 192.168.44.132~ / Desktop

Пример 7. Скопируйте файл с включенным сжатием

$ scp -C document.txt morelo @ 192.168.44.132: / tmp

Пример № 8. Использование другого шифра при копировании файла

$ scp -c aes256-cbc document.txt morelo @ 192.168.44.132: / tmp

Пример 9. Скопируйте файл, используя другой порт

$ scp -P 4600 document.txt morelo @ 192.168.44.132: / tmp

Пример 10. Ограничьте пропускную способность, используемую при копировании файла

$ scp -l 1000 document.txt morelo @ 192.168.44.132: / tmp

Пример 11. Использование ключа аутентификации для копирования файла

$ scp -i key.pem document.txt morelo @ 192.168.44.132: / tmp

Пример 12. Отключите строгую проверку файлов, чтобы файл не был отклонен

$ scp -T document.txt morelo @ 192.168.44.132: / tmp

Заключение

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

Все права защищены. © Linux-Console.net • 2019-2023

При подготовке материала использовались источники:
https://losst.pro/kopirovanie-fajlov-scp
https://wiki.merionet.ru/articles/komanda-scp-linux-bezopasnoe-kopirovanie-i-peredacha-fajlov/
https://ru.linux-console.net/?p=15248

Оцените статью