Secure Copy – это стандарт UNIX, используемый для передачи файлов с одного компьютера на другой. Вот как использовать эту функцию в macOS используя Terminal.
До персональных компьютеров существовали мейнфреймы и Таймшерные терминалы. Пользователи входили в учетную запись с терминала на мэйнфрейме и вводили команды мэйнфрейму для обработки.
По мере становления Интернета в 1990-х годах возникла необходимость в безопасном использовании таких команд терминала в сетях и на компьютерах. В 1994 году финский программист по имени Тату Илонен создал Secure Shell.
В рамках Secure Shell была создана программа SCP (Secure copy protocol). SCP – это и протокол, и программа UNIX, которую можно запустить из командной строки. SCP позволяет передавать файлы на SSH-серверы и с SSH-серверы в обоих направлениях. SCP основан на команде RCP (Remote Copy), которая первоначально использовалась в BSD в середине 1980-х годов.
По умолчанию TCP-порт, используемый для передачи файлов SCP, равен 22 (стандартный порт SSH).
В отличие от других интернет-стандартов, для SCP не существует RFC или формального стандарта – он является частью открытого исходного кода проекта OpenSSH. Вы можете просмотреть весь исходный код OpenSSH на его GitHub.
Основное использование
Чтобы использовать SCP для передачи файлов, вы должны сначала установить SSH-соединение к удаленному серверу, с которым вы хотите обменяться файлами.
После входа в систему на удаленном сервере для передачи файлов используется команда „scp“ с опциями в Terminal. Не существует способа получения списков каталогов с помощью scp, как и способа удаления удаленных файлов, но вы можете использовать стандартные команды файловой системы UNIX, такие как ls, чтобы получить списки каталогов после входа в систему на удаленном компьютере.
Например, в Терминале macOS для получения списка каталогов файлов на локальной машине или удаленном сервере можно выполнить команду ls, например:
ls -l
Флаг -l
указывает ls перечислять файлы вертикально, в окне Терминала с подробной информацией о каждом файле/папке, такой как разрешения UNIX, владелец, группа, размер, дата и время создания файла. Если вы опустите флаг -l, команда ls выведет список только имен файлов в нескольких столбцах без подробной информации о каждом файле.
Для получения более подробной информации о команде ls введите в Terminal man ls
и нажмите Enter.
Чтобы выйти из системы man-страниц в Terminal для любой man-страницы, введите Ctrl + Z и нажмите Enter.
Вы также можете использовать команду cd
(change directory) для изменения каталогов в локальной или удаленной файловой системе. Просто введите cd, за которым следует пробел, и имя или путь к каталогу, в который вы хотите перейти. Все команды Терминала будут работать с этим каталогом, если только вы не повторите cd в другой каталог или не укажете полный путь в команде.
Чтобы подняться на один уровень каталогов в файловой системе с помощью cd в Терминале, вы можете набрать:
cd .../
и нажать Enter
Чтобы перейти на самый верх (корень) файловой системы, введите:
cd /
и нажмите Enter.
Вы можете попросить Terminal вывести текущий полный путь и имя каталога в любой файловой системе, введя:
pwd
и нажав Enter.
pwd
– это команда UNIX для получения текущего рабочего каталога (т.е. текущего каталога, в котором работает оболочка Terminal). Для получения страницы руководства по pwd в Terminal введите:
man pwd
и нажмите Enter.
Для получения подробной информации об использовании флагов в команде:
man scp
и нажмите Enter.
Примеры scp
SCP в Terminal проста в использовании. Основной синтаксис:
scp example.txt <a href="/cdn-cgi/l/email-protection">[email protected]</a>:/directoryName/
Командуем scp скопировать локальный файл в pwd с именем «example.txt» на сервер по IP-адресу 10.10.0.1 в каталог файловой системы этого сервера с именем «directoryName» от имени пользователя «remote_user», при этом удаленный файл должен быть также назван «example.txt».
Если вы опустите имя удаленного файла, будет использоваться то же имя, что и у исходного файла. Если вы хотите изменить имя удаленного файла на другое, включите новое имя файла после пути к удаленному каталогу в конце команды:
scp example.txt <a href="/cdn-cgi/l/email-protection">[email protected]</a>:/directoryName/newExample.txt*
Также обратите внимание, что указанный пользователь должен иметь права в удаленном каталоге, чтобы скопировать файл.
Противоположный пример – копирование файла с удаленного сервера на ваш Mac, выглядит аналогично. Например:
scp <a href="/cdn-cgi/l/email-protection">[email protected]</a>:/directoryName/example.txt /Users/ваше имя пользователя/Desktop/
Копирует файл с именем «example.txt» в директории «directoryName» на удаленном сервере на рабочий стол вашего Mac.
Вы также можете указать флаги сразу после части scp, используя знак минус, за которым следует опция.
Два флага после «scp « могут быть использованы для указания первой или второй версии протокола SSH: -1“ или -2“.
Например:
scp -2 example.txt <a href="/cdn-cgi/l/email-protection">[email protected]</a>:/directoryName/newExample.txt
Заставляем использовать вторую версию протокола для копирования файла example.txt в pwd на удаленный сервер по адресу 10.10.0.1 в каталог с именем «directoryName» с новым именем файла «newExample.txt».
Несколько других флагов, которые можно использовать в scp, чтобы изменить его поведение:
-4
Использовать только адресацию IPv4-6
Использовать только адресацию IPv6-B
Пакетный режим (подавляет дополнительные запросы на аутентификацию)-C
Включает сжатие соединения-F
Использовать альтернативный файл конфигурации ssh для соединений-i
Определяет альтернативный файл закрытого ключа для соединений-l
(Limit) – Устанавливает ограничение пропускной способности соединения в кб/с-O
(Old) – Применять старый протокол SCP вместо нового протокола SSH SFTP при передаче данных.-o
Передать дополнительные, некомандные опции ssh-P
Подключиться по альтернативному номеру порта, отличному от 22-p
Сохранить все метаданные локального файла в удаленном файле после копирования, включая даты и время-q
(Quiet) – не отображать информацию о ходе копирования файла в Terminal-R
(Remote) – принудительно использовать удаленную версию scp для копирования вместо локальной-r
Рекурсивно копировать целые каталоги, а не только отдельные файлы-v
(Verbose) – Выводить дополнительную информацию в Terminal для всех операций scp
Опция -O
предусмотрена для использования в случаях, когда вы подключаетесь к старым SSH серверам, которые не реализуют новый SSH File Transfer Protocol (также часть SSH).
Вы можете использовать опцию -o
для передачи дополнительных параметров ssh, которые недоступны в качестве опций командной строки.
scp локальные копии
scp отлично работает в локальной сети между различными типами компьютеров и операционных систем. Вы можете подключаться и передавать файлы между двумя компьютерами локальной сети так же легко, как и между удаленными компьютерами в Интернете, при условии, что на обоих компьютерах локальной сети работает SSH.
Microsoft включает SSH в более поздние версии Windows 10, начиная с 2019 года. Для использования с более ранними версиями Windows, возможно, придется установить сторонний SSH-сервер на компьютер Windows.
Комментарии (0)