Установка пакета SSH
yum install openssh-serverВ Ubuntu командой
apt install openssh-server
systemctl start sshd systemctl enable sshd
firewall-cmd --permanent --add-service=ssh firewall-cmd --reloadВ Ubuntu командой
ufw allow 22
Подключение из Linux в Linux по SSH
Подключение по логину и паролю
ssh user@hostnameгде
user - это пользователь удаленной системы, если совпадает с локальным, то можно не указывать
hostname - это ip-адрес или имя хоста удаленной системы
Например
ssh test_user@192.168.10.15
ssh hostnameНапример
ssh 192.168.10.15
ssh -p <port> user@hostnameНапример
ssh -p 22020 test_user@192.168.10.15
ssh test_user@192.168.10.15 hostname
Настройка аутентификации на основе ключей SSH между Linux системами
ssh-keygen
- при генерировании ключа нужно будет ответить на несколько вопросов:
- Enter file in which to save the key - предлагается ввести имя файла в котором будет сохранен закрытый ключ, по умолчанию в каталоге пользователя создается скрытый каталог .ssh и в нем сохраняются ключи
- Enter passphrase - предлагается ввести пароль для ключа, его можно не вводить, тогда при ssh подключении не нужно будет вводить пароль
ssh-copy-id test_user@192.168.10.15При этом нужно будет ввести пароль пользователя удаленной системы к которому будет осуществляться подключение
После этого можно подключатся к удаленной системе через ssh по ключу, если при создании ключа не задавался пароль, то он не будет запрашиваться
ssh test_user@192.168.10.15 idкоторая должна вывести id пользователя test_user удаленной системы
Подключение из Windows в Linux по SSH
Подключение по логину и паролю
Для подключения по ssh из windows используется ssh клиент, самый популярный это PuTTY, его можно скачать с официального |сайта|, можно скачать как установщик, так и портативную версию. А также, начиная с Windows 10 поддерживается SSH в командной строке, подключение осуществляется так же, как через терминал linux.
Для подключения по логину и паролю достаточно ввести ip-адрес или hostname сервера
Можно сразу ввести имя пользователя, под которым будет осуществляться подключение
Можно сохранить параметры сессии, для этого нужно ввести ее название, оно может быть любым, и нажать Save.
Настройка аутентификации на основе ключей SSH между Windows и Linux
Нужно в windows сгенерировать ключ с помощью программы PuTTYgen, которая устанавливается вместе с PuTTY, в портативной версии ее нет.
После ее запуска нужно нажать кнопку Generate и подвигать мышкой для генерации ключа
Будут сгенерированы ключи Можно задать пароль для ключа в строке Key passphrase, тогда нужно будет вводить его при каждом подключении или можно не задавать.
Закрытый ключ нужно сохранить в системе с которой будет осуществляться подключение, нажав на кнопку Save private key, он будет представлять собой файл формата ppk
~/.ssh/authorized_keysкоторый должен быть создан в домашнем каталоге пользователя удаленной системы, к которому будет осуществляться подключение, при этом файл должен иметь право для чтения только владельцем.
cd ~ mkdir .ssh chmod 700 .ssh cd .ssh touch authorized_keys chown -R test_user:test_user .ssh chmod 700 .ssh chmod 600 authorized_keys vim authorized_keys #вставить открытую часть ключаauthorized_keys может содержать в себе много ключей, например
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGhMhhwetREVgCvfG7lQBzzFnveWFPMkKV+OKGTOVjk3OzqiVWQWYtuJSQ1qft8tePdY5bytsETT/xr/3NFUYFuMCxp3h1oRLFn+BnQLYCTYRnHDpoojE+qMCo5O9aa0C9svgAWA7qGI892qyKvp/zwLhWpH6oN86dqw6X3DwvdEGN2wa1MNjAOdIv/639l9ieRhYwnZntOlvRsmIMyPjMI9CC/SEXENZghaS41M9KT7QqluA3AU0KSUh1xSheHSQ21O33xkdTAtL68wy0kJxJjSURLKulkr0xvlScVK7oVpObLjn1qaAO3yytaf2+6+RAMY7NjuHKA6SD3lBd6hc5 username1@hostname1 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFJP2yGM9KZ2psLgNyNRXtjctZsBamoNtH0/4KY2U+W0ciGONhgKxG/1maNrLDYbjyFL8mUjC5y9EiBGRzSBstMSa789LoKp8D8TJsDQRyEMc4N2DZKVq3PXfvvDFkJT+XBdIWwJNtuPU3greEaBlNb+jxqxU36lgTx57cJdYHafzyD0ZuhNBfwNOSNRxMmsJpNHVeoePcxZ0ZQQ70h9S1VfqJZulIgO8N1sagKaUjZ6GbrGpE0KMWHmSZRzf24zlx14H5vhgKojQp6oEljfK6numn4wfSl1uNX6ePpM+B86SPCOzD8CIM6nMLpKstMPBWRtMYyZGlzV92/mDUbEK/ username2@hostname2
Теперь можно подключаться по ключу из PuTTY, в категории Session указывается пользователь и хост, как и при обычном подключении а в категории Connection ⇒ SSH ⇒ Auth указывается путь к закрытому ключу. Что бы каждый раз не указывать путь к ключу можно сохранить настройки сессии, как было описано ранее.
Принцип работы SSH
При подключении по SSH с использованием ключа, генерируется ключ. Файл открытого ключа копируется в системы, к которым планируется подключиться. Файл закрытого ключа - используется как учётные данные для аутентификации. Разрешение для закрытого ключа - 600, открытого - 644.
- Процесс получения сессионного ключа в общем состоит из:
- При запросе на подключение от клиента сервер отсылает клиенту свой ключ, который храниться в каталоге /etc/ssh;
- Если клиент производит соединение с данным сервером впервые, то пользователя спросят о доверии ключу сервера, при положительном ответе, на клиенте ключ добавляется в ~/.ssh/known_hosts. Если соединение ранее устанавливалось, то клиент сравнивает присланный ключ с ~/.ssh/known_hosts. (ключ можно удалить командой ssh-keygen -R <servername>);
- Теперь, когда клиент и сервер установили защищенный канал, они могут произвести аутентификацию по паролю или ключам;
- Клиент отсылает серверу имя пользователя и свой публичный ключ;
- Сервер проверяет в файле /home/<username>/.ssh/authorized_keys наличие присланного клиентом открытого ключа. Если открытый ключ найден, то сервер генерирует случайное число, шифрует его открытым ключом клиента, и отсылает результат клиенту;
- Клиент расшифровывает сообщение своим приватным ключом и отправляет результат серверу;
- Сервер проверяет полученный результат на совпадение, и в случае успеха считает аутентификацию успешной;
- Открывается доступ в командную оболочку пользователя на сервере или позволяется копирование файлов.
Безопасность SSH
/etc/ssh/sshd_configПосле изменения параметров в конфиге нужно перезапускать ssh для их применения
systemctl reload sshd
Атакующие в первую очередь проверяют стандартный - 22 порт, можно его сменить
Port 1234 #порт для подключения по SSHМожно запретить подключение по SSH для пользователя root
PermitRootLogin no #запрет подключения по SSH под пользователем rootЗапрет аутентификации по паролю, если задать этот параметр разрешено будет аутентифицироваться только по ключу
PasswordAuthentication no #запрет подключения по паролю (разрешено подключаться только по ключу)Можно указать то, каким пользователям разрешено использовать SSH
AllowUsers user1 user2 #список пользователей, для которых разрешено подключение по SSH
AllowUsers group1 group2 #список групп, для которых разрешено подключение по SSH