SSH

JOUR

Administrator
Команда форума
Администратор
Если вы арендовали облачный сервер работающий на linux, значит на нём уже будет установлен ssh-server. Стоит заметить, что ssh-server и ssh-client это разные программы, однако в большинстве случаев, сервер и клиент устанавливаются вместе, если в дистрибутиве есть клиент, но нет сервера, достаточно ввести команду для установки того и другого:
sudo apt install ssh -y

Если команда выполняется от пользователя root, sudo вводить не обязательно.
Эта команда подходит для Debian / Ubuntu / LinuxMint и других дистрибутивов, в которых по умолчанию встроен пакетный менеджер apt

Для Fedora это пакетный менеджер dnf, для CentOS - yum, для RedHat - rpm, для Gentoo - emerge, для Arch - pacman и тд. Если у вас одна из этих систем, вероятно вы сами знаете как ставить в них программы, поэтому пропустим варианты установки для них.

Для termux в Android
pkg install openssh

Для запуска сервера в termux, нужно принудительно его запустить командой:
sshd

Для подключения к удалённому серверу нужно указать адрес сервера. Первое подключение спросит подтверждение, нужно ввести "yes", затем Enter
ssh localhost
ssh localhost.jpg


В этом примере подключение происходит к "самому себе", то есть к localhost, это значение может быть ip-адресом сервера (123.123.123.123) или доменом в onion (myabrakadabra.onion), или обычным доменом в клирнете (example.com)После подключения, в локальном файле ~/.ssh/known_hosts будет добавлена строка/отпечаток удалённого хоста и следующее подключение не будет спрашивать подтверждение. Так же будет запрос ввести пароль пользователя на сервере, к которому подключаетесь
запрос ввести пароль пользователя на сервере.jpg


Как правило указывают имя пользователя на сервере, что бы получить доступ к его оболочке, если этого не сделать, программа будет пытаться получить доступ к оболочке пользователя с таким же именем, от которого происходит подключение.
ssh [email protected]

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

SSH как и другие программы имеет свои опции, например, можно указать порт на котором слушает удалённый ssh-server. По умолчанию используется 22й порт, поэтому не обязательно его указывать, но можно этот порт изменить.
Для termux по умолчанию ssh-server работает на 8022!
ssh mytermuxserver.com -p 8022


Теперь сделаем подключение к серверу без ввода пароля, то есть по ключу. Для этого сначала нужно сгенерировать ключи:
ssh-keygen

Затем трижды нажмите Enter

ssh-keygen.jpg


В каталоге ~/.ssh появятся сгенерированные ключи: id_rsa (секретный ключ) и id_rsa.pub (публичный ключ)
публичный ключ.jpg


Секретный ключ используется для проверки/подключения, а публичный помещается на удалённый сервер. Если к серверу происходит подключение, он шифрует сообщение публичным ключом и локальный демон ssh пытается его расшифровать своим секретным ключом, если расшифровка успешная, удалённый сервер одобряет авторизацию и даёт доступ к оболочке.

Вы можете вручную скопировать публичный ключ на удалённый сервер, либо использовать простую команду которая самостоятельно скопирует ключ
ssh-copy-id

ssh-copy-id.jpg


Введите пароль пользователя на сервере и ключ скопируется

ключ скопируется.jpg


На сервере будет создан файл ~/.ssh/authorized_keys, в нём будет ваш содержание публичного ключа из локального хранилища (id_rsa.pub)

ваш содержание публичного ключ.jpg


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

После добавления ключа демон будет всё ещё работать на старой конфигурации, что бы авторизация происходила автоматически, без ввода пароля, нужно поправить конфиг и перезапустить демона
sudo nano /etc/ssh/sshd_config

Листайте вниз, ищите строки #PubkeyAuthentication и #PasswordAuthentication, эти строки нужно раскомментировать и привести значение к yes и no соответственно:

PubkeyAuthentication.jpg


Здесь же, в начале файла можете изменить порт. Строку нужно раскомментировать, то есть убрать решетку в начале

изменить порт.jpg


Сохраняйте и закрывайте файл Ctrl+S / Ctrl+X

Теперь нужно перезапустить демон что бы он заново прочитал файл конфигурации
sudo systemctl restart sshd

Теперь можно подключаться к серверу без ввода пароля, для авторизации будет использоваться ключ ~/.ssh/id_rsa

Использование SSH

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

Копирование файлов

В комплекте с ssh предусмотрена программа scp
Скопировать файл с локального хранилища на удалённый сервер:
scp ~/Pictures/mk.png [email protected]:~/photos/

Из удалённого сервера в локальное хранилище:
scp [email protected]:~/photos/mk.png ~/Pictures/mk.png

Выполнить команду на удалённом сервере и вернуть доступ к вводу в локальной оболочке:
ssh [email protected] 'ls /etc'

Вывод команды будет видно в локальной оболочке.
 
Последнее редактирование:
Сверху