Главная > Manual > Некоторые возможности ssh

Некоторые возможности ssh

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

Утилита scp — это аналог cp, создана на базе программы rcp, но только поверх ssh. А также SCP(secure copy) — это RCP протокол копирования файлов, использующий в качестве транспорта не RSH, а SSH.

Синтаксис scp:

scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 ... [[user@]host2:]file2

Выглядит немного страшно, но не бойтесь — все просто.

scp [опции] [источник] [приемник]

Рассмотрим ключи и опции более подробно:

-1 принудительно использовать 1-ю версию протокола
-2 соответственно вторую
-4 использовать только IPv4
-6 только IPv6
-B выбор пакетного режима (предотвращает запрос пароля или ключевой фразы)
-C разрешить сжатие
-p сохранять время изменения файла
-q не выводить предупреждения в консоль
-r рекурсивный обход каталога
-v режим отладки
-c способ шифрования данных

-F ssh_config указать альтернативный конфиг-файл ssh
-i identity_file указать альтернативный файл ключей
-l limit ограничение скорости передачи в Kbit/s
-o ssh_option указание альтернативных опций для ssh(для подробностей man 5 ssh_config)
-P port указание порта
-S program взаимодействие с други программами

Пора переходить к самой вкусной части, к примерам.

Копируем локальный file на удаленный хост командой:

scp file user@host:/home

Копируем с удаленного хоста:

scp user@host:/home/file file

Копируем папку:

scp -r folder user@host:/home

Если sshd слушает другой порт:

scp -P 22 file user@host:/home

По умолчанию scp использует алгоритм Triple-DES для шифрования передаваемых данных, но если использовать Blowfish, то можно добиться более высокой скорости передачи данных. Для этого нужно добавить ключ -c blowfish:

scp -c blowfish file user@host:/home

Также для повышения скорости передачи данных рекомендуется использовать компрессию (сжатие). За это отвечает ключ -C, но, конечно же, увеличится нагрузка на процессор:

scpfile user@host:/home

Передавать файлы таким образом можно не только между linux-машинами, но и windows тоже. Встречайте:

  • WinSCP — графический SCP-клиент для Windows
  • PSCP — SCP-клиент для Windows, входит в PuTTY

Также, нельзя не сказать про sftp. Sftp это интерактивная программа передачи файлов, подобная ftp, которая выполняет передачу данных в шифрованном виде, используя ssh. Думаю, что следует внести некоторую ясность. SFTP(SSH File Transfer Protocol) — протокол прикладного уровня, предназначенный для копирования и выполнения других операций с файлами поверх надежного и безопасного соединения. Протокол разработан группой IETF как расширение к SSH-2, однако SFTP допускает реализацию и с использованием иных протоколов сеансового уровня. Существует заблуждение, что SFTP это просто обычный FTP, работающий поверх SSH. В действительности SFTP — это новый протокол, разработанный с нуля. Также не стоит путать с Simple File Transfer Protocol.

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

SFTP призван быть более платформонезависимым чем SCP. В частности, как раскрывать файловые шаблоны, описывается в самом стандарте — и это не зависит от сервера. В то время как в SCP раскрытие файловых шаблонов было полностью на совести сервера, точнее командного интерпретатора пользователя. SCP-серверы более распространены для Unix, а SFTP как для Unix, так и для Windows.

SFTP-сервер встроен в OpenSSH. Он реализуется с помощью программы

sftp-server

. Для того чтобы включить sftp-server в sshd, необходимо указать его в конфигурационном файле

sshd_config

в качестве подсистемы:

Subsystem sftp /usr/lib/openssh/sftp-server

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

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

Синтаксис sftp:

sftp [-1246Cpqrv] [-B buffer_size] [-b batchfile] [-c cipher]
[-D sftp_server_path] [-F ssh_config] [-i identity_file]
[-o ssh_option] [-P port] [-R num_requests] [-S program]
[-s subsystem | sftp_server] host
sftp [user@]host[:file ...]
sftp [user@]host[:dir[/]]
sftp -b batchfile [user@]host

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

bye exit quit  выход из sftp
cd path переход по удаленным директориям
chgrp grp path смена группы
chmod mode path смена прав
chown own path смена владельца
df -h path просмотр размера файла или каталога
get -Ppr remote-path local-path копируем в локальный каталог
lcd path выбор локального пути
lls ls-options path просмотр локальной директории
lmkdir path создание локальной директории
ln oldpath newpath создание символьной ссылки
lpwd покажет локальный путь
ls [-1afhlnrSt] [path] всевозможный просмотр списка файлов и каталогов

lumask umask задание локального umask
mkdir path создание удаленного каталога
progress вывод текущего статуса
put [-Ppr] local-path [remote-path] загрузка файлов на сервер -P и -p сохранение прав и времени изменения файлов
pwd покажет удаленный рабочий каталог
rename oldpath newpath переименование удаленных файлов
rm path удаление файла
rmdir path удаление каталога
symlink oldpath newpath создание символьной ссылки
help справка

Примеры.

Соединение с сервером:

sftp remotehost

после соединения мы получим консоль sftp> и можем приступать к вводу команд:

скопируем local_file на удаленный хост:

put local_file

скопируем remote_file в локальный каталог:

get remote_file

Просмотрим содержимое локального каталога:

lls

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

ls

Текущий локальный каталог:

lpwd

Текущий удаленный каталог:

pwd

В качестве SFTP-клиента для Windows может использоваться WinSCP, PSFTP из пакета PuTTY или кросс-платформенный ftp-клиент Filezilla.

Если вы используете Gnome, то пишем в Nautilus:

ssh://ip_server

Вводим логин и пароль, и наслаждаемся.

  1. 22 сентября 2010 в 16:32 | #1

    О, спасибо, у тебя прямо талант ко всяким там ssh.

  1. Пока что нет уведомлений.

What is 9 + 2 ?
Please leave these two fields as-is:
Чтобы продолжить вы должны решить простое уравнение (так мы узнаем, что вы человек) :-)