Некоторые возможности ssh
Бывают иногда ситуации когда необходимо передать какие-либо файлы, а из средств связи есть только ssh. Конечно можно поставить ftp-сервер или что-нибудь еще, но согласитесь, это не совсем удобно, когда можно воспользоваться готовыми решениями. В общем не важно, у нас есть доступ к ssh и мы хотим получить максимум возможностей.
Утилита scp — это аналог cp, создана на базе программы rcp, но только поверх ssh. А также SCP(secure copy) — это RCP протокол копирования файлов, использующий в качестве транспорта не RSH, а SSH.
Синтаксис scp:
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 ... [[user@]host2:]file2
Выглядит немного страшно, но не бойтесь — все просто.
Рассмотрим ключи и опции более подробно:
-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 на удаленный хост командой:
Копируем с удаленного хоста:
Копируем папку:
Если sshd слушает другой порт:
По умолчанию scp использует алгоритм Triple-DES для шифрования передаваемых данных, но если использовать Blowfish, то можно добиться более высокой скорости передачи данных. Для этого нужно добавить ключ -c blowfish:
Также для повышения скорости передачи данных рекомендуется использовать компрессию (сжатие). За это отвечает ключ -C, но, конечно же, увеличится нагрузка на процессор:
Передавать файлы таким образом можно не только между 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 в sshd, необходимо указать его в конфигурационном файле
в качестве подсистемы:
Как правило, это строка уже указана в конфигурационном файле sshd по умолчанию, так что SFTP работает сразу и не требует никаких дополнительных действий для включения.
Все ключи и опции присущие scp, так же подходят и sftp, что очень удобно. Поэтому описывать второй раз смысла не вижу, остановлюсь только на особенностях.
Синтаксис sftp:
[-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> и можем приступать к вводу команд:
скопируем local_file на удаленный хост:
скопируем remote_file в локальный каталог:
Просмотрим содержимое локального каталога:
Просмотрим содержимое удаленного каталога:
Текущий локальный каталог:
Текущий удаленный каталог:
В качестве SFTP-клиента для Windows может использоваться WinSCP, PSFTP из пакета PuTTY или кросс-платформенный ftp-клиент Filezilla.
Если вы используете Gnome, то пишем в Nautilus:
Вводим логин и пароль, и наслаждаемся.
О, спасибо, у тебя прямо талант ко всяким там ssh.