SSH — сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений. Шифрует весь трафик, включая и передаваемые пароли.
Генерируем пару открытых и закрытых ключей:
ssh-keygen -t rsa -b 2048
Этой командой создается пара ключей типа RSA (алгоритм шифрования) с размером ключа 2048 бит. В результате выполнения команды появятся два фала с закрытым и открытым ключами. При обилии большого количества таких ключей лучше давать файлам осмысленные имена и в сами файлы записывать комментарии. Например, в названии использовать имя хостинга и его же упомянуть в комментарии. Пример полной команды с комментарием и названием фала:
ssh-keygen -t rsa -b 2048 -C "TimeWeb Machine" -f timeweb
Система попросит ввести пароль и повторить его. Пароль лучше не забывать, так как он необходим для соединения с удаленной машиной. После ввода команды в директории, в которой мы находились, появятся два файла «timeweb» и «timeweb.pub» (закрытый и открытый ключи, соответственно). Просмотреть содержимое открытого ключа можно командой:
cat timeweb.pub
Вначале файла будет указан алгоритм шифрования, потом ключ, и в конце наш комментарий.
После настройки VPS зайти на удаленную машину можно командой с указанием названия приватного файла и IP созданного сервера:
ssh -i timeweb root@188.225.72.205
Таким образом выполняется вход из под суперпользователя root, что крайне небезопасно ввиду наличия у такого пользователя неограниченных прав. Чтобы решить эту проблему, необходимо добавить пользователя.
adduser user
И выдать права администратора.
usermod -aG sudo user
Теперь пользователь user состоит в группе sudo, а соответственно может использовать соответствующую команду. Переключиться на юзера можно привилегированной командой su:
su - user
Теперь, если вы попробуете использовать sudo, система попросит у вас пароль, указанный при создании юзера, и исполнит команду. Протестировать можно командой echo:
sudo echo Hello
#Hello
Отключиться от юзера можно командой exit или сочетанием клавиш Ctrl + D. Аналогичным образом мы и отключаемся от удаленного сервера.
Теперь, чтобы соединиться с удаленной машиной сразу под юзером, необходимо делать всё то же самое с командой ssh, только использовать новое имя пользователя. Например:
ssh user@223.226.124.251
Чтобы добавить для пользователя вход по SSH ключу, необходимо на сервере создать соответствующую директорию с правами 700 (т.е. использовать директорию может только создавший ее пользователь) и добавить туда файл с ключом.
cd ~
mkdir -p .ssh
chmod 700 .ssh
echo "ваш паблик ключ" >> ~/.ssh/authorized_keys
Обязательно проверьте, что файл создался следующей командой:
cat ~/.ssh/authorized_keys
Чтобы удалить юзера, необходимо зайти на сервер под рутом и ввести команду:
sudo deluser user
Создание конфигурационного файла SSH подключения на локальной машине
Чтобы каждый раз не добавлять путь к ключу при подключении к серверу и не указывать его в rsync, необходимо создать конфигурационный файл. Делается это следующим образом:
- На локальной машине создайте папку ~/.ssh и задайте на неё права:$ mkdir -p ~/.ssh
$ chmod 700 ~/.ssh - Создайте в папке ~/.ssh файл с именем config:$ touch ~/.ssh/config && chmod 600 ~/.ssh/config
- Скопируйте приватный и публичный ключи в папку ~/.ssh/:$ cp -fv timeweb timeweb.pub ~/.ssh/
$ chmod 600 ~/.ssh/timeweb* - Отредактируйте файл ~/.ssh/config, написав следующие строки:
Host ip_address_of_your_machine
User your_remote_system_user_name
IdentityFile ~/.ssh/timeweb
Например, редактором nano:
nano ~/.ssh/config
Host 223.226.124.251
User user
IdentityFile ~/.ssh/timeweb
Сохраните и закройте файл, нажав Ctrl + X, затем подтвердите сохранение, нажав Y, а затем нажмите Enter.
Теперь зайти под юзером можно всего лишь такой командой:
ssh user@223.226.124.251
С учетом особенности платформы Dzen, публиковать тут статьи про код крайне сомнительная идея. Так что я приглашаю вас на свой сайт, где примерами кода делиться гораздо легче: https://bednyakov.ru/