Все возможности SCP · Блог Синявского

Описание scp и основных параметров

from-host – имя или IP адрес хоста, на котором находится файл (хост источник). Может быть пропущено если хостом является локальный копьютер, на котором исполняется эта команда.

Basic usage

The basic usage of scp is as follows:

scp file host:path

This copies the file to the remote host. The destination path is optional, but can be a directory on the server, or even a file name if copying a single file. It is possible to specify multiple files; the last one is the destination.

To copy a file from the remote host, use:

scp host:file path

This fetches the file from the host, and puts it in the directory indicated by path. Often, path is just ., meaning the current working directory.

Configuring public key authentication

Normally, scp asks for a password. To avoid this, or to automate file copying in scripts, public key authentication is usually used.

The basic idea is to create a key pair on the client and copy the public key to the server into an authorized keys file. See how to set up public key authentication.

Don’t forget to establish proper SSH key management pratices. See how to manage SSH keys.

Copying directory trees with scp

To cpoy entire directory trees instead of single files, add the -r option. For example:

scp -r host:path/directory .

This would fetch path/directory from the host, copying it to the current working directory (creating directory in current working directory).

Scp трюки

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

limit указывается в Кбит/с.

Увеличить скорость передачи

scp по-умолчанию использует алгоритм AES-128 для шифрования данных, это очень безопасно, но медленно. Если важна скорость, то можно использовать алгоритмы Blowfish или RC4.

Измение алгоритма шифрования с AES-128 на Blowfish

Использование алгоритма шифрования RC4, который является самым быстрым из возможных

Увеличение скорости в этом случае будет за счет меньшей безопасности.

Это самый медленный алгоритм шифрования, но он более безопасный.

Графический интерфейс sftp

SCP и SFTP являются не только утилитами, но и протоколами. То есть другие программы могут поддерживать работу с ними и использоваться в качестве удобного графического интерфейса. Благодаря этому вы сможете управлять файлами на сервере, например, через FileZilla или привычные файловые менеджеры. Подробности смотрите в статье «Как скачивать файлы по SSH».

Связанные статьи:

Интерактивные команды sftp


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

Любые специальные символы, содержащиеся внутри имён путей, которые распознаются в glob(3), должны быть экранированы обратным слэшом (‘’).

bye

Выйти из sftp.

cd [ПУТЬ]


Изменить удалённую директорию на ПУТЬ. Если ПУТЬ не указан, то директория будет сменена на ту, с которой началась текущая сессия.

chgrp [-h] ГРУППА ПУТЬ

Изменить группу файлов ПУТЬ на ГРУППА. Если указан флаг -h, тогда не будет производиться переход по символическим ссылкам. Пути могут содержать подстановочные символы (glob) и могут соответствовать нескольким файлам. ГРУППА должна быть числовым GID.

chmod [-h] РЕЖИМ ПУТЬ


Изменить права доступа ПУТЬ на РЕЖИМ. Если указан флаг -h, то не будет производиться переход по символическим ссылкам, пути могут содержать подстановочные символы (glob) и могут совпадать с несколькими файлами.

chown [-h] ВЛАДЕЛЕЦ ПУТЬ

Изменяет владельца файла ПУТЬ на ВЛАДЕЛЕЦ. Если указан флаг -h, то не будет производиться переход по символическим ссылкам, пути могут содержать подстановочные символы (glob) и могут совпадать с несколькими файлами. ВЛАДЕЛЕЦ должен быть указан цифровым UID.

df [-hi] [path]

Как использовать другой файл настройки для scp и как указать файл ключей аутентификации

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

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

Как копировать файлы при помощи scp

Итак, для получения справки по работе с программой SCP выолните команду man scp

Среди прочих параметров, обратите внимание на параметры вида:

Как настроить работу ssh и scp для работы без пароля

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

ssh-keygen –t rsa

На вопрос ввода ключевой фразы ничего не вводите, а нажмите энтер два раза(второй раз для подтверждения). В результате выполнения команды, в директории ~/.ssh/ появятся два файла:

Суть настройки авторизации по открытому ключу заключается в том, что на удаленном сервере, в файле ~/.ssh/authorized_keys должен находиться ваш открытый ключ. Для копирования открытого ключа на удаленный сервер выполните команду:

Как ограничить скорость передачи данных в scp

По умолчанию передача файла происходит на максимально возможной скорости. Если по каким-то причинам нужно уменьшить лимит скорости, то используйте опцию -l, после которой укажите значение в Kbit/s.

Как пользоваться sftp


Адресат может быть указан как [ПОЛЬЗОВАТЕЛЬ@]ХОСТ[:ПУТЬ] или как URI в форме sftp://[ПОЛЬЗОВАТЕЛЬ@]ХОСТ[:ПОРТ][/ПУТЬ]

Если место назначения содержит ПУТЬ, который не является каталогом, sftp автоматически получит файлы, если используется неинтерактивный метод аутентификации; в противном случае это будет сделано после успешной интерактивной аутентификации.

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

Вот пример сессии:

sftp [email protected]

Connected to [email protected].
sftp> ls
bin                                     dirlist.txt                             
go                                      nfile.txt                               
results                                 Видео                              
Документы                      Загрузки                        
Изображения                  Музыка                            
Общедоступные              Рабочий стол                 
Шаблоны    
sftp> lls
dirlist.txt  nfile.txt
sftp> ls temp
temp/TakeMeHome
sftp> cd temp/
sftp> get TakeMeHome
Fetching /root/temp/TakeMeHome to TakeMeHome
sftp> bye

Как пользоваться утилитой scp


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

scp ОПЦИИ ИСХОДНЫЙ-ФАЙЛ ПУНКТ-НАЗНАЧЕНИЯ

То есть всего имеется три элемента в команде. В качестве ИСХОДНОГО-ФАЙЛА может быть как файл на локальной системе, так и на удалённой. Аналогично, в качестве ПУНКТА-НАЗНАЧЕНИЯ может быть как файл на локальной системе, так и на удалённой.

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

Что касается файла на удалённой системе, то он может быть указан так:

[ПОЛЬЗОВАТЕЛЬ@]ХОСТ:[ПУТЬ_ДО_ФАЙЛА]


Или в виде URI в форме:

scp://[ПОЛЬЗОВАТЕЛЬ@]ХОСТ[:ПОРТ][/ПУТЬ_ДО_ФАЙЛА]

Следовательно, если мы копируем файл с удалённой системы на локальную, общий вид команды такой:

scp [ПОЛЬЗОВАТЕЛЬ@]ХОСТ:[ПУТЬ_ДО_ФАЙЛА] ./ПУТЬ/В/ЛОКАЛЬНОЙ/СИСТЕМЕ

В качестве ./ПУТЬ/В/ЛОКАЛЬНОЙ/СИСТЕМЕ можно указать просто . (точку) и тогда файл будет скопирован с текущим именем в текущий рабочий каталог.

Если мы копируем файл с локальной системы на удалённую, общий вид команды такой:

scp ./ПУТЬ/В/ЛОКАЛЬНОЙ/СИСТЕМЕ [ПОЛЬЗОВАТЕЛЬ@]ХОСТ:[ПУТЬ_ДО_ФАЙЛА]

Синтаксис обращения к удалённому хосту схож с SSH: ПОЛЬЗОВАТЕЛЬ@ХОСТ, отличие только в том, что после двоеточия указывается путь до файла (или просто имя файла). При использовании URI, после двоеточия указывается порт (если он отличается от стандартного), а путь до файла указывается после слэша.

Рассмотрим пример выполнения команды на удалённой системы и скачаем этот файл на локальную систему:

# удалим файл на локальной машине, если он есть
rm dirlist.txt
# создадим файл на удалённой машине
ssh [email protected] 'ls > dirlist.txt'
# проверим его наличие
ssh [email protected] 'ls -l'
# скопируем его на локальную машину
scp [email protected]:dirlist.txt .
# проверим его содержимое
cat dirlist.txt

В scp команде ИСХОДНЫЙ-ФАЙЛ обозначен как [email protected]:dirlist.txt — здесь до двоеточия идёт имя пользователя на удалённой системе и адрес хоста — та информация, которая необходима для подключения по SSH. Затем двоеточием отделён файл, который должен быть скачен.

ПУНКТ-НАЗНАЧЕНИЯ в этой команде обозначен как . (точка) — что означает текущую рабочую директорию (в локальной системе).

Теперь рассмотрим пример копирования файла с локальной машины на удалённую:

# создаём новый файл
touch nfile.txt
# отправляем файл
scp nfile.txt [email protected]:.
# проверяем наличие файла на удалённой машине
ssh [email protected] 'ls -l'

В команде отправки scp:

  • nfile.txt — имя файла,
  • [email protected] — имя пользователя и удалённый хост (как в команде подключения по SSH),
  • . (точка) означает, что файл нужно скопировать в текущую рабочую директорию на удалённом сервере, при этом имя файла останется прежним, т. е. nfile.txt

Как скопировать файл с одного удалённого хоста на другой удалённый хост

Программа scp умеет копировать между двумя удалёнными хостами. Если используется URI формат, порт можно указать только для цели если используется опция -3.


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

Как сохранить метки времени при передаче по scp

С помощью опции -p (не путайте её с опцией -P, которая изменяет порт подключения) можно сохранить время модификации, время последнего доступа к файлу и режимы оригинального файла. Дополнительно о метках времени смотрите в статье «Время создания, доступа и изменения файла: что это, как их узнать и изменить. Как найти файлы по их времени создания, изменения или последнему открытию».

Как указать порт для scp

Указать другой порт, отличный от стандартного 22, можно с помощью опции -P ПОРТ. Обратите внимание, что эта опция написана заглавной ‘P’, поскольку -p уже занята для другой настройки (сохраняет время и режимы файла).

Копирование с удалённого компьютера и на удалённый компьютер (scp и sftp)


Пакет OpenSSH также включает две программы, которые используют зашифрованный туннель SSH для копирования файлов по сети. Первая программа — scp («безопасное копирование») похожа на программу cp для копирования файлов.

Вторая программа для копирования файлов через SSH — это sftp. Как следует из её имени, она является безопасным заменителем ftp программ. sftp работает как и оригинальная ftp программа. Тем не менее вместо отправки данных в виде простого текста, она использует зашифрованный туннель SSH.

Важным преимуществом sftp перед ftp является то, что для неё не требуется запущенный FTP сервер на удалённом хосте. Для неё требуется только SSH сервер. Это означает, что любая удалённая машина, на которой запущен SSH сервер, может также быть использована как FTP-подобный сервер.


Итак, обе команды:

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

Различия команд:

  • scp не работает в интерактивном режиме, а sftp умеет работать в интерактивном режиме и в автоматическом
  • в интерактивном режиме sftp поддерживает синтаксис FTP команд для различных действий в файловой системе (копирование и перемещение файлов, создание и удаление файлов и папок и т.д.)
  • sftp умеет дописывать частично переданные файлы, если произошёл обрыв при передаче большого файла (настраивается опцией)
  • sftp поддерживает пакетный режим — файлы, в которых последовательность действий определена последовательностью команд sftp
  • популярные файловые менеджеры понимают протокол sftp и могут интегрироваться с этой командой — подробности ниже
  • при рекурсивном скачивании или закачивании папок, по умолчанию scp следует по символическим ссылкам, а sftp — нет

Опции sftp

Следующие опции указываются в строке команды запуска клиента sftp. Они оказывают влияние как на запущенный sftp в интерактивной сессии, так и без интерактивного режима.

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

-B РАЗМЕР_БУФЕРА

Устанавливает размер буфера, который использует sftp при передаче файлов. Большие буферы требуют меньше циклов обработки за счёт более высокого потребления памяти. Значение по умолчанию равно 32768 байтам.

-b ПАКЕТНЫЙ_ФАЙЛ

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

ПАКЕТНЫЙ_ФАЙЛ в виде ‘-’ может использоваться для обозначения стандартного ввода. Работа sftp будет прекращена, если какая-либо из следующих команд потерпит неудачу: get, put, reget, reput, rename, ln, rm, mkdir, chdir, ls, lchdir, chmod, chown, chgrp, lpwd, df, symlink и lmkdir.

Завершение в случае ошибки может быть подавлено для каждой команды в отдельности путём добавления к команде префикса с символом «-» (например, -rm /tmp/blah*). Вывод команд может быть подавлен, если перед ней поставить символ ‘@’. Эти два префикса могут сочетаться в любом порядке, например, -@ls /bsd.


Включить сжатие (через флаг -C в ssh).

-D sftp_server_path

Подключиться напрямую к локальному sftp серверу (а не через ssh). Эта опция может быть полезной при отладке клиента и сервера.

-F КОНФИГУРАЦИЯ_SSH


Указывает альтернативный пользовательский конфигурационный файл для ssh. Эта опция напрямую отправляется в ssh.

Отключение строгой проверки имён файлов

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

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

Прежде чем вы начнете


Для передачи данных scp используется команда ssh , поэтому для аутентификации на удаленных системах требуется ключ ssh или пароль.

Двоеточие ( : ) – это то, как scp различать локальные и удаленные местоположения.

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


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

При передаче больших файлов рекомендуется запускать scp команду внутри сеанса экрана или tmux .

Синтаксис команд scp

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

scp Синтаксис команда имеет следующий вид:

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

  • -P  – Определяет удаленный хост ssh порт.
  • -p  – Сохраняет файлы модификации и время доступа.
  • -q  – Используйте эту опцию, если вы хотите отключить индикатор выполнения и сообщения об ошибках.
  • -C – Эта опция принудительно scp сжимает данные при их отправке на конечный компьютер.
  • -r – Эта опция говорит scp рекурсивно копировать каталоги.

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


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

Скопируйте удаленный файл в локальную систему с помощью scp команды#

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

Например, чтобы скопировать файл file.txt с удаленного сервера с IP-адресом, 10.10.0.2 выполните следующую команду:

Скопируйте файл между двумя удаленными системами, используя scp команду

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

Тихий режим


Опция -q включает тихий режим: отключает шкалу прогресса, а также предупреждения и диагностические сообщения от ssh.

Финальные заметки

Очень важно понимать, что scp шифрует данные перед передачей их через сеть интернет. Для копирования файлов также можно использовать ftp или rcp.

В Windows scp называется WinSCP. Для Mac OS X scp доступно по-умолчанию, также как и для Linux.

Вывод

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


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

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

Похожее:  Способы оплаты заказов Avon какой лучше выбрать

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *