Страница 1 из 1

man ssh и scp (удаленное соединение и копирование по ssh)

Добавлено: 07 мар 2011, 13:37
zaka
man ssh и scp (удаленное соединение и копирование по ssh)
1) SSH удаленное соединение:
(Википедия)
SSH (англ. Secure Shell — «безопасная оболочка») — сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов). Сходен по функциональности с протоколами Telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая и передаваемые пароли. SSH допускает выбор различных алгоритмов шифрования. SSH-клиенты и SSH-серверы имеются для большинства сетевых операционных систем.
SSH позволяет безопасно передавать в незащищенной среде практически любой другой сетевой протокол, таким образом, можно не только удаленно работать на компьютере через командную оболочку, но и передавать по шифрованному каналу звуковой поток или видео (например, с веб-камеры). Также SSH может использовать сжатие передаваемых данных для последующего их шифрования, что удобно, например, для удаленного запуска клиентов X Window System.
Думаю с определением все ястно, приступим к установе и настройке (для Debian, Ubuntu, Runtu и прочих deb систем).
Выполняем установку:

Код: Выделить всё

sudo aptitude install openssh-server
или

Код: Выделить всё

sudo apt-get  install openssh-server
Настройки хранятся в файле /etc/ssh/sshd_config.
Открываем его на правку:

Код: Выделить всё

sudo nano /etc/ssh/sshd_config
перечислю параметры, которые желательно изменить:
Port 22 - номер порта по умолчанию. Желательно установить в другое значение, т.к. первым делом ломятся на этот порт Конечно, и другие сканируют, но лишняя защита не помешает.
PermitRootLogin no - обязательно установите значение в "no". Это запрещает логинится рутом через ssh.
AllowUsers name_user - этого параметра нет в конфиге, допишите его. name_user - это имя пользователя в системе, которому разрешен вход по ssh.
К имени можно добавить ip-адрес - name_user@IP Такой параметр разрешит логинится только пользователю name_user и только при условии, что он подключается с указанного IP.
PermitEmptyPasswords no - Запретить пустые пароли.
После произведенных настроек, перезапускаем демон sshd:

Код: Выделить всё

sudo /etc/init.d/ssh restart
В качестве клиента, если подключаетесь в винды, используем программу Putty или WinSCP (описание, скачать). Для подключения из под *nix будет следующего вида команда:

Код: Выделить всё

ssh -l name_user IP -p №порта

Код: Выделить всё

ssh -l zaka@192.168.0.1 -p 22
(пример)
-p ключ для указания порта, если он отличается от 22, если используется стандартный, то данный ключ не нужен.
Русский man по sshd с описанием всех ключей, можете посмотреть здесь...

В заключение скажу о неком тюненге , изменяем стандартное приветствие выводимое в консоль при подключении.
Первые три абзаца текста расположены в файле:
/etc/motd
Можете изменить текст и дописать что то свое.

Чтобы отключить сообщение о последнем входе (не рекомендовано), надо отредактировать:
/etc/ssh/sshd_config
параметр:

Код: Выделить всё

PrintLastLog no
2) Удаленное копирование по ssh с помощю команды scp
У нас есть сервер на котором есть SSH, ни кокого FTP там и в помине нет, а файлы надо как то по сети перекинуть. Собственно для этих целей воспользуемся SCP, подробнее о команде можно узнать из мануала, набрав: (по материалам википедии)
SCP (от англ. secure copy) — протокол RCP копирования файлов, использующий в качестве транспорта не RSH, а SSH. В UNIX-подобных операционных системах существует одноимённая (scp) утилита удалённого копирования файлов (входит в состав openssh).

Стало быть раз уж SSH установлен, а если нет, смотрим статью SSH - настройки, то и команда scp в наличии.
Простейший пример использования SCP выглядит так:

Код: Выделить всё

scp file user_name@remote_server:~/
При этом локальный файл file будет скопирован на удаленный сервер и помещен в домашний каталог пользователя user_name. Вместо ~/ можно использовать любой другой путь или любую другую папку, в которой пользователь user_name имеет права на запись.

Чтобы скопировать файл с удаленного сервера на локальный компьютер, используется другой синтаксис SCP:

Код: Выделить всё

scp user_name@remote_server:~/file
При этом файл file, расположенный в домашнем каталоге пользователя user_name в удаленной системе, будет скопирован в локальную папку (в которой мы сейчас находимся).

Как и для команды cp (обычное копирование), команда scp поддерживает такие полезные ключи как:
-p для сохранения времени изменения файлов и -r для рекурсии.
Еще упомяну ключик -P port – использовать нестандартный порт (по умолчанию 22) – этот параметр следует использовать, если сервер ожидает соединения на нестандартном порту.

Утилита scp имеет одну особенность синтаксиса. Допустим, в домашнем каталоге есть подкаталог с именем video и нужно скопировать его на удаленную систему. Необходимо, чтобы содержимое ~/video заменило содержимое каталога video на удаленном компьютере, если имена файлов или каталогов при копировании будут совпадать.

Код: Выделить всё

scp -pr ~/video user_name@remote_server:/dir/video
В этом случае scp поймет команду как "копировать каталог ~/video в каталог /dir/video." Вместо перезаписи содержимого удаленного каталога, каталог video на исходном компьютере будет просто скопирован в удаленный каталог.

Следует учитывать данную особенность при работе и применять закрывающий слешь там, где этого требует ситуация. Подобное положение дел, должно быть знакомо тем, кому приходилось работать с утилитой rsync, но это уже тема отдельной статьи. Очень полезная утилита, будет время, собирусь с мыслями напишу.

Графические интерфейсы для SCP:

Если вам не нравится работать с консолью, то вы можете использовать графический (или псевдографический) клиент SCP.

Midnight Commander – одна из программ, обладающая функциями SCP-клиента (Меню > Правая панель/Левая панель > Shell-соединение).

Nautilus и Konqueror также поддерживают SCP. Для подключения к удаленной системе в адресной строке надо ввести ssh://user_name@remote_server:~/. При этом файлы могут копироваться, как если бы они были расположены локально.

В среде MS Windows есть отличное приложение WinSCP. Его интерфейс очень похож на Total Commander. Cуществует плагин для Total Commander, позволяющий выполнять SCP-подключения.
Литература:
man scp
http://unixa.ru
Википедия