SSH Linux

Материал из СисадминВики (SysadminWiki.ru)
Перейти к: навигация, поиск

Установка

В Ubuntu устанавливаем пакет OpenSSH, проверяем, что служба (демон) запущена, разрешаем в файрволе подключения по ssh:

sudo apt install openssh-server

sudo systemctl status ssh

sudo ufw allow ssh


Быстрое подключение

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

ssh srv

добавляем в файл конфигурации ~/.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, чтобы не пришлось потом вводить этот пароль при подключении. Итак, создаём:

$ ssh-keygen -t rsa

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:

[pavel@teo .ssh]$ ssh pavel@10.0.0.254 [pavel@astra pavel]$

По смене приглашения командной строки видим, что подключились удачно.

  • Отпечатки всех компьютеров, к которым мы подключались по шифрованному каналу хранятся в $HOME/.ssh/known_hosts.
  • Созданная пара ключей не привязана к ПК и её можно переносить с одного ПК на другой, при этом важно, чтобы права на доступ к файлам и каталогу были строго ограничены (при копировании могут измениться): на ключи должны быть права доступа 0600, на каталог - 0700. Проверка и установка прав:
cd ~

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.

См. также

Создание vpn туннеля

Ссылки