SSH, OPENSSH-SERVER, SCP, ключи шифрования
SSH (англ. Secure SHell — «безопасная оболочка») — сетевой протокол сеансового уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов). Сходен по функциональности с протоколами Telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая и передаваемые пароли.
OpenSSH (открытая безопасная оболочка) — набор программ, предоставляющих шифрование сеансов связи по компьютерным сетям с использованием протокола SSH.
В установке никаких сложностей нет:
sudo apt-get install openssh-server и можно подключаться к серверу:
ssh 10.10.10.4 Вводим логин и пароль учетной записи, имеющейся на сервере, и мы внутри.
для отсоединения:
exit scp - утилита для передачи файлов по ssh.
Копируем файл на сервер 10.10.10.4 через 22ой порт:
scp -P 22 /home/virtdiver/test.txt it@10.10.10.4:/home/it/test.txt Копируем файл с сервера 10.10.10.4 через 22ой порт:
scp -P 22 it@10.10.10.4:/home/it/test.txt /home/virtdiver/test.txt копируем папку test на сервер 10.10.10.4 через 22ой порт:
scp -P 22 -r /home/virtdiver/test it@10.10.10.4:/home/it Копируем папку test с сервера 10.10.10.4 через 22ой порт:
scp -P 22 -r it@10.10.10.4:/home/it/test /home/virtdiver Если возникнет необходимость передавать файл, содержащий пробелы в названии, то путь нужно поместить в кавычки, и экранировать пробелы слешем (\). В примере ниже передается файл с именем "filename with space.txt" (За эту информацию спасибо
zbl ):
scp -P 22 ' it@10.10.10.4:/home/it/filename\ with\ space.txt' '/home/virtdiver/filename\ with\ space.txt' Генерация SSH ключей
В первую очередь, нужно создать пару ключей, если их ещё нет. По умолчанию ключи хранятся в домашней директории пользователя, /home/имя пользователя/.ssh/id_rsa и id_rsa.pub. Ключи должны генериться на клиенте именно в той учетке, из которой будете заходить на сервер по ssh. Меняем пользователя на нужного (если необходимо):
sudo su postgres Генерируем ключи:
ssh-keygen путь можно оставить по умолчанию, просто жмем Enter;
вводим пароль, если нужно, если не нужно, жмем Enter.
Пара ключей готова. Мне авторизация при помощи ключей нужна была для автоматического слива бэкапа базы данных с двух серверов на третий посредством scp, для специально созданного пользователя postgres, поэтому пароль я оставил пустым.
Далее нужно скопировать ключ на ssh-сервер:
scp ~/.ssh/id_rsa.pub postgres@10.10.10.4:.ssh/authorized_keys2 Проверяем:
ssh 10.10.10.4 Наблюдаем, что пароль не запросился.
Для других ключи генерятся аналогично, но ключ теперь копировать на сервер не надо, необходимо дописать существующий на ssh-сервере, данными из сгенерированного:
cat ~/.ssh/id_rsa.pub | ssh postgres@10.10.10.4 "cat >> .ssh/authorized_keys2" В итоге имеем доступ без пароля на 10.10.10.4 с авторизацией, использующей ключи шифрования, для пользователя postgres с обоих серверов.
А теперь о том, из-за чего я убил целый час. Если сгенерировать ключик под windows с помощью PuTTYgen и аналогично добавить его на сервер, то через putty с этим ключем мы зайдем на сервак, а с линукса с этим же ключем - нет, так как у putty и openssh разные форматы. Если файл ключа создан в putty и нужно сконвертировать в формат openssh то ставим:
sudo apt-get install putty-tools И конвертируем:
puttygen -O private-openssh /home/virtdiver/putty/priv_key.ppk -o /home/virtdiver/putty/priv_key где priv_key.ppk - файл формата putty , priv_key - получаемый файл ключа в формате openssh.
И обратная процедура, из формата openssh в формат putty:
puttygen /home/virtdiver/putty/priv_key -o /home/virtdiver/putty/priv_key.ppk
Nov. 3, 2010