Открыть сервис

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 (если поддерживается сервером).

Примеры использования

  1. Копирование локального файла на удалённый сервер:

`` pscp C:\file.txt user@server:/home/user/ ` После ввода пароля файл file.txt будет скопирован в каталог /home/user/ на сервере server`.

  1. Копирование файла с удалённого сервера на локальную машину:

`` pscp user@server:/home/user/file.txt C:\ ``

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

`` pscp -r C:\localdir user@server:/home/user/ ``

  1. Копирование с указанием порта:

`` pscp -P 2222 C:\file.txt user@server:/home/user/ ``

  1. Использование ключа аутентификации:

`` 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 →