SSH Linux
Содержание
Установка
В Ubuntu устанавливаем пакет OpenSSH, проверяем, что служба (демон) запущена, разрешаем в файрволе подключения по ssh:
sudo systemctl status ssh
sudo ufw allow ssh
Быстрое подключение
Чтобы избежать многих параметров в командной строке, а подключаться например так:
добавляем в файл конфигурации ~/.ssh/config
(т.е. файл config
в подкаталоге .ssh
домашнего каталога) строки:
Host srv HostName domain.ru Port 22 User www IdentityFile ~/.ssh/rsa_key
где:
- www -- пользователь, которым подключаемся
- rsa_key -- имя файла с секретным ключом SSL сертификата (параметр не обязателен)
Ограничение на подключения
Ограничения вносятся в конфигурационный файл сервера OpenSSH: /etc/ssh/sshd_config
.
Разрешаем подключение только указанным пользователям:
AllowUsers user1 user2
Разрешаем всем, кроме указанных пользователей:
DenyUsers user3 user4
Подробней о ограничениях см в статье в on-line журнале о Linux
Подключаемся из Linux к Linux
- Чтобы подключаться без пороля по защищённому соединению ssh, нужно создать пару ключей (публичный и приватный) командой ssh-keygen
. Место хранения ключей по умолчанию: $HOME/.ssh. Названия файлов по умолчанию:
- id_rsa -- приватный
- id_rsa.pub -- публичный
Приватный ключ должен остаться в своём каталоге в секрете, а публичный мы будем раздавать всем, к кому желаем подключиться.
- Для генирации ключа запускаем от пользователя. На запрос пароля жмём enter, чтобы не пришлось потом вводить этот пароль при подключении. Итак, создаём:
Generating public/private rsa key pair. Enter file in which to save the key (/home/pavel/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/pavel/.ssh/id_rsa. Your public key has been saved in /home/pavel/.ssh/id_rsa.pub. The key fingerprint is:
da:eb:83:04:f4:d2:1f:52:b7:90:5c:cb:1b:2e:ee:59 pavel@teo.mynetwork.ru- Чтобы разрешить (запретить = no) подключение пользователем root в /etc/ssh/sshd.conf (или /etc/openssh/sshd_config) меняем:
PermitRootLogin yes PermitEmptyPasswords no PasswordAuthentication yes
- Публичный ключ нужно скопировать на удалённый компьютер в домашнюю директорию пользователя, которым будем подключаться, в файл $HOME/.ssh/authorized_keys, т.е. для root это /root/.ssh/authorized_keys, а для пользователя pavel это будет /home/pavel/.ssh/authorized_keys. В этом файле по одному в строку будут располагаться все публичные ключи удалённых пользователей, которым мы дадим доступ для такого соединения.
- Проверяем. Пытаемся подключиться к удалённому компьютеру пользователем pavel:
По смене приглашения командной строки видим, что подключились удачно.
- Отпечатки всех компьютеров, к которым мы подключались по шифрованному каналу хранятся в $HOME/.ssh/known_hosts.
- Созданная пара ключей не привязана к ПК и её можно переносить с одного ПК на другой, при этом важно, чтобы права на доступ к файлам и каталогу были строго ограничены (при копировании могут измениться): на ключи должны быть права доступа 0600, на каталог - 0700. Проверка и установка прав:
ls -la | grep ssh drwx------ 2 pavel pavel 4096 дек 15 14:47 .ssh ls -l ./.ssh -rw-rw-r-- 1 pavel pavel 1679 сен 11 14:00 id_rsa -rw-rw-r-- 1 pavel pavel 407 сен 11 14:04 id_rsa.pub -rw-rw-r-- 1 pavel pavel 888 сен 11 11:41 known_hosts chmod 600 ./.ssh/id_rsa chmod 600 ./.ssh/id_rsa.pub chmod 600 ./.ssh/known_hosts ls -l ./.ssh -rw------- 1 pavel pavel 1679 сен 11 14:00 id_rsa -rw------- 1 pavel pavel 407 сен 11 14:04 id_rsa.pub
-rw------- 1 pavel pavel 888 сен 11 11:41 known_hostsПодключаемся из Windows к Linux
Схема подключения та же самая, только в Windows для подключения используем программу PuTTY.