Алгоритм входа на удаленную машину по SSH

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, необходимо создать конфигурационный файл. Делается это следующим образом:

  1. На локальной машине создайте папку ~/.ssh и задайте на неё права:$ mkdir -p ~/.ssh
    $ chmod 700 ~/.ssh
  2. Создайте в папке ~/.ssh файл с именем config:$ touch ~/.ssh/config && chmod 600 ~/.ssh/config
  3. Скопируйте приватный и публичный ключи в папку ~/.ssh/:$ cp -fv timeweb timeweb.pub ~/.ssh/
    $ chmod 600 ~/.ssh/timeweb*
  4. Отредактируйте файл ~/.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

Ну и небольшая шпаргалка наиболее частых сочетаний установки прав доступа на файлы к вопросу о 600 и 700 выше:

Права доступаКомандаОписание
dUGO 
rw-chmod 600только владелец файла может читать/записывать
rw-r—r—chmod 644владелец файла может читать и записывать, члены группы и остальные — только читать
rw-rw-rw-chmod 666любой пользователь может читать/записывать
rwxchmod 700только владелец файла, может читать/записывать и запускать на исполнение
rwx—x—xchmod 711владелец файла, может читать/записывать и запускать на исполнение, члены группы и остальные могут запускать на исполнение, но не могут читать и изменять
rwxr-xr-xchmod 755владелец файла, может читать/записывать и запускать на исполнение, члены группы и остальные могут читать и запускать на исполнение, но не могут записывать
rwxrwxrwxchmod 777любой пользователь может читать/записывать и запускать на исполнение
drwxchmod 700только владелец может входить в этот каталог, читать и записывать в него файлы
drwxr-xr-xchmod 755любой пользователь может входить в этот каталог и читать содержимое каталога, но изменять содержимое может только владелец
d = directory; U = user; G = group; O = other
r = Read; w = Write; x = eXecute; — = Нет права