PSCP
PSCP (англ. PuTTY Secure Copy Protocol) — это утилита командной строки, предназначенная для безопасной передачи файлов между компьютерами по протоколу SSH (Secure Shell). Она входит в состав пакета программ PuTTY, разработанного Саймоном Тэтэмом (Simon Tatham) для операционных систем семейства Windows. PSCP является аналогом стандартной Unix-утилиты scp, но с некоторыми особенностями в синтаксисе и функционале.
История и происхождение
Утилита PSCP была создана в рамках проекта PuTTY, который начал разрабатываться в 1998 году Саймоном Тэтэмом. Первоначально PuTTY представлял собой простой SSH-клиент для Windows, но со временем расширился до набора утилит, включающего PSCP, PSFTP (PuTTY SFTP), Plink (интерфейс командной строки) и Pageant (агент аутентификации).
PSCP появилась как ответ на отсутствие встроенной поддержки защищённой передачи файлов в Windows. В то время как в Unix-подобных системах существовала утилита scp, входящая в состав пакета OpenSSH, для Windows требовалось отдельное решение. PSCP реализовала ту же функциональность, используя протокол SSH для шифрования данных и аутентификации.
Принцип работы
PSCP работает поверх протокола SSH, который обеспечивает шифрование передаваемых данных и аутентификацию сторон. В отличие от незащищённых протоколов (например, FTP), PSCP не передаёт пароли и содержимое файлов в открытом виде. Утилита использует тот же механизм аутентификации, что и SSH-клиент PuTTY: по паролю, по ключу (RSA, DSA, ECDSA, Ed25519) или через Pageant.
Протокол передачи
PSCP использует протокол SCP (Secure Copy Protocol), который основан на протоколе SSH. SCP был разработан в рамках проекта OpenSSH и является простым, но эффективным средством для копирования файлов. В отличие от SFTP (SSH File Transfer Protocol), SCP не поддерживает расширенные операции (например, список файлов, удаление, переименование) — он предназначен исключительно для копирования.
Синтаксис и основные команды
PSCP запускается из командной строки Windows (cmd.exe или PowerShell). Основной синтаксис:
`` pscp [опции] [источник] [назначение] ``
Основные опции
-P порт— указание порта SSH (по умолчанию 22).-pw пароль— передача пароля в командной строке (не рекомендуется из соображений безопасности).-i файл_ключа— указание файла приватного ключа для аутентификации.-r— рекурсивное копирование каталогов.-v— подробный вывод (verbose), полезен для отладки.-q— тихий режим (без вывода статистики).-l имя_пользователя— указание имени пользователя на удалённом сервере.-scp— принудительное использование протокола SCP (по умолчанию).-sftp— принудительное использование протокола SFTP (если поддерживается сервером).
Примеры использования
- Копирование локального файла на удалённый сервер:
`` pscp C:\file.txt user@server:/home/user/ ` После ввода пароля файл file.txt будет скопирован в каталог /home/user/ на сервере server`.
- Копирование файла с удалённого сервера на локальную машину:
`` pscp user@server:/home/user/file.txt C:\ ``
- Рекурсивное копирование каталога:
`` pscp -r C:\localdir user@server:/home/user/ ``
- Копирование с указанием порта:
`` pscp -P 2222 C:\file.txt user@server:/home/user/ ``
- Использование ключа аутентификации:
`` pscp -i C:\keys\private.ppk C:\file.txt user@server:/home/user/ ``
Особенности и отличия от Unix-утилиты scp
Хотя PSCP является аналогом Unix-утилиты scp, между ними есть несколько важных различий:
- Синтаксис путей: В Windows используются обратные слеши (
\), в Unix — прямые (/). PSCP корректно обрабатывает оба варианта, но рекомендуется использовать прямые слеши для совместимости. - Поддержка ключей: PSCP использует формат ключей PuTTY (
.ppk), а не стандартный формат OpenSSH. Для конвертации ключей используется утилита PuTTYgen. - Отсутствие glob-подстановки: В некоторых версиях PSCP не поддерживает подстановку символов (wildcards) в удалённых путях, хотя в локальных путях это работает.
- Интерактивный ввод пароля: PSCP, как и PuTTY, запрашивает пароль в интерактивном режиме, если не указан ключ или пароль в командной строке.
Аутентификация и безопасность
PSCP поддерживает несколько методов аутентификации:
- По паролю: Пароль передаётся в зашифрованном виде через SSH-сессию.
- По ключу: Используется пара ключей (публичный и приватный). Приватный ключ хранится на клиентской машине, публичный — на сервере. PSCP поддерживает ключи в формате PuTTY (
.ppk), создаваемые утилитой PuTTYgen. - Через Pageant: Агент аутентификации Pageant позволяет хранить расшифрованные приватные ключи в памяти и автоматически использовать их для аутентификации. Это удобно при частых подключениях к разным серверам.
Предупреждения безопасности
- Передача пароля в командной строке: Опция
-pwпозволяет передать пароль в открытом виде в командной строке. Это может быть удобно для скриптов, но создаёт риск перехвата пароля (например, через историю команд или процессы других пользователей). Рекомендуется использовать ключи аутентификации или Pageant. - Проверка ключа хоста: При первом подключении к серверу PSCP запрашивает подтверждение ключа хоста. Это защита от атак «человек посередине» (MITM). Ключ сохраняется в реестре Windows (или в файле, если настроено).
Применение
PSCP широко используется в следующих сценариях:
- Администрирование серверов: Копирование конфигурационных файлов, логов, скриптов между сервером и рабочей станцией.
- Автоматизация развёртывания: Использование в скриптах для автоматической загрузки обновлений или резервных копий.
- Перенос данных: Передача файлов между Windows-машиной и Unix-подобными серверами (Linux, FreeBSD, macOS).
- Обучение и тестирование: Изучение основ SSH и безопасной передачи данных.
Ограничения
- Только Windows: PSCP не является кроссплатформенной утилитой — она работает только в Windows. Для Unix-подобных систем существует встроенная утилита scp.
- Отсутствие графического интерфейса: PSCP — исключительно консольная утилита. Для пользователей, предпочитающих GUI, существуют другие инструменты (например, WinSCP).
- Устаревший протокол SCP: Протокол SCP считается устаревшим и менее безопасным, чем SFTP. В некоторых современных реализациях SSH рекомендуется использовать SFTP вместо SCP.
Альтернативы
- WinSCP — графический клиент для Windows, поддерживающий SCP и SFTP.
- OpenSSH for Windows — начиная с Windows 10, в систему можно установить встроенный OpenSSH-клиент, включающий утилиту scp.
- psftp — утилита из того же пакета PuTTY, использующая протокол SFTP (более функциональный, чем SCP).
- rsync — мощная утилита для синхронизации файлов, работающая поверх SSH.
Источники
- Официальная документация PuTTY (PuTTY User Manual)
- Саймон Тэтэм, «PuTTY: A Free SSH Client for Windows», 1998–2024
- RFC 4251 — The Secure Shell (SSH) Protocol Architecture
- RFC 4252 — The Secure Shell (SSH) Authentication Protocol
- RFC 4254 — The Secure Shell (SSH) Connection Protocol
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →