Bootstrap

Подключение по SSH

Подключение по SSH

Для реализации задуманного, необходимо уже иметь сервер, к которому мы хотим подключиться. Таким сервером может быть и реально арендованный , для каких-либо своих целей, например для использования его в качестве хостинга своего сайта. Но также сгодится любой хост, на unix подобной операционной системе, в нашей локальной сети, к которому у нас есть доступ пользователя, пара логин и пароль. Для этих целей сгодится созданная нами виртуальная машина, например, с помощью ПО .

Итак допустим мы имеем следующие данные, от созданной нами виртуальной машины:

IP адрес VPS: 111.111.111.111
логин: root
пароль: 12345678

Внимание сейчас идут команды, запускаемые в консоле нашего хоста. Мы будет работать с хоста тоже в OS GNU/Linux, допустим пусть это будет дистрибутив. И давайте настроим доступ с этой машины, чтобы входить на свой сервер по SSH используя только ключи, чтобы не вводить пароль.

Это делать не обязательно, если желаете можно оставить вход по паролю, даже не настраивая ключи, но с точки зрения безопасности, лучше бы проделать всё, то что мы сейчас сделаем.

Сперва открываем терминал в своей системе, которая и будет клиентом. Создаём пару SSH ключей (если их у вас их ещё нет), с помощью команды:

       
         
           
         
         ssh-keygen
       
     

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

Таким образом, если вы не устанавливали, т.е. не меняли имена, предложенные по умолчанию, то будет создан подкаталог по пути ~/.ssh/ с файлами ключей: публичный ключ в файле id_rsa.pub и приватный ключ в файле id_rsa

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

my_key и my_key.pub это соответственно, закрытый и открытый ключи.

И ещё, если вы устанавливали какие-либо значения в поле passphrase for key, т.е. парольная фраза для ключа, то её вам нужно будет помнить, чтобы иметь возможность пользоваться этим ключом в моменты подключения.

 

 

Итак создав свои ключи, посмотрите так ли это(для варианта предложенного по умолчанию):

       
         
           
         
         ls ~/.ssh/
       
     
       
         
           
         
         cat ~/.ssh/id_rsa.pub
       
     
       
         
           
         
         cat ~/.ssh/id_rsa
       
     

Если вы задали имена, то смотрите уже по своим именам, например так:

ls ./
cat ~/my_key.pub
cat ~/my_key

Теперь нам нужно отправить публичный ключ на VPS сервер, на нём поднят сервер ssh и мы имеем доступ к нему по паролю. Делается это с помощью следующей команды, с разделителем в виде @ между именем пользователя и ip адресом:

ssh-copy-id "имя пользователя"@"ip адрес VPS"

ssh-copy-id root@111.111.111.111

если же вы поменяли имена ключей на свои, то добавляется опция -i где уточняется имя ключа:

ssh-copy-id -i ~/my_key root@111.111.111.111

однако если ваш ssh сервер настроен вами на другой порт, т.е. не 22, который по умолчанию, а например на 3333, это могут сделать и провайдеры, они иногда устанавливают другой порт, то команда будет следующей(это для ключей созданных с именами по умолчанию):

ssh-copy-id -p "номер порта" "имя пользователя"@"ip адрес VPS"

ssh-copy-id -p 3333 root@111.111.111.111

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

ssh-copy-id -i "путь и имя закрытого ключа" -p "номер порта" -f "имя пользователя"@"ip адрес VPS"


ssh-copy-id -i ~/my_key -p 3333 root@111.111.111.111

При выполнении этой команды потребуется ввести Пароль доступа к серверу, который вам естественно должен быть известен, при создании сервера от провайдера. Вводим свой пароль, допустим это 12345678


Однако добавление своего (клиентского) публичного ключа на сервер можно сделать и вручную, обычно я так и делаю, по ряду причин, просто если например у вас сейчас есть доступ только через веб консоль к своему серверу... По сути всё, то что мы проделали выше с помощью команд, заключается в следующих простых операциях.

Вот, что нужно было в итоге сделать на сервере

  • - Убедитесь, что файл authorized_keys находится на сервере в каталоге ~/.ssh/ т.е. в домашнем каталоге аккаунта, от которого вы планируете подключаться (в данном случае, в домашнем каталоге пользователя root). Если такого файла ещё нет, просто создайте его там.
  • - Убедитесь, что права доступа к файлу authorized_keys установлены как 600 (-rw-------). Вы можете установить права с помощью команды chmod 600 ~/.ssh/authorized_keys.
  • Теперь убедитесь, что в файле /etc/ssh/sshd_config на сервере установлен(раскоментирован) параметр AuthorizedKeysFile .ssh/authorized_keys (без пробелов перед и после .).
  • <Также убедитесь, что другие параметры, связанные с аутентификацией по ключам, правильно настроены, например обязательно должна быть такая строка PubkeyAuthentication yes.
  • Если вы не желаете, чтобы к серверу был доступ по паролю, а только по этому вашему ключу(обычная практика), то обязательно установите такое правило PasswordAuthentication no, но будьте внимательны, после этого вы должны понимать, что если случайно удалите свой ключ на клиентской машине, то не сможете войти на свой сервер(можно конечно сделать бэкап этой пары ключей приват+публичный, и хранить их в зашифрованном виде отдельно, например на флэшке).

Теперь используя данные клиента, нужно сделать следующее:

  • Пару ключей мы уже создали выше. Поэтому, т.е. у себя на клиентской машине, заходим в тот же каталог cd ~/.ssh и выводим на экран содержимое файла публичного ключа cat ~/.ssh/id_rsa.pub и скопируем его в буфер
  • Terminal:

    [username@myclient ~]$ cat ~/.ssh/id_rsa.pub
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDlkRt8cP/FB1n5zCGxpY4Q+mCQXw4ivtTkMlSV/U69ViGL2yFVK6AJDPfLOIwxi40rSekTRc/AY6Oy+uQc2keLCERCiDnPxZ1W9lfHqmKhOGw+qLN1kE+muB9iPVyEsSlUu4Vr8LWsItaf9vUfQNviyUegaeN/JSADFeewfsdfaSDFASDFASfewfSAFASFASFwefasdFSDFAEWfasdFASFdbEufgcWTwbYxD1mkXeymdINlBBPXHVGJklNUtW3vXXmMj2uGNREPUnz//IDGiWm1XI7Hcx9/ZoeRIoCSwLWcAr39BhiuBvhPVLQ6g2w3Bs3f2Wxu8MLXayyLE6fdxT2WdWpX2h7tqnTkmDAPpK1bmyG/vKoQiKtubIY7ie2dNwJCA9fVvHaJP3Jq/n/Uuz5pJXYSCOJd3dnBEjatrucB8zFIIXISIqrlVcw9D3pgcUwgH+h/osas6MKVpmpLui9+H8+oj3MAdR+t4zkwOzKyB9l4GwsVsxNDCorNwOh7qrjk= username@myclient
     
  • Убедимся, что мы правильно скопировали это содержимое публичного ключа в буфер, без лишних знаков и/или пробелов, ни перед, ни после ключа, и вставим это содержимое в файл authorized_keys на нашем сервере, который мы создали чуть выше. Ключ в этом файле должен быть в одной строке.
  • Terminal:

    [root@myserver ~]$ cat ~/.ssh/authorized_keys
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDlkRt8cP/FB1n5zCGxpY4Q+mCQXw4ivtTkMlSV/U69ViGL2yFVK6AJDPfLOIwxi40rSekTRc/AY6Oy+uQc2keLCERCiDnPxZ1W9lfHqmKhOGw+qLN1kE+muB9iPVyEsSlUu4Vr8LWsItaf9vUfQNviyUegaeN/JSADFeewfsdfaSDFASDFASfewfSAFASFASFwefasdFSDFAEWfasdFASFdbEufgcWTwbYxD1mkXeymdINlBBPXHVGJklNUtW3vXXmMj2uGNREPUnz//IDGiWm1XI7Hcx9/ZoeRIoCSwLWcAr39BhiuBvhPVLQ6g2w3Bs3f2Wxu8MLXayyLE6fdxT2WdWpX2h7tqnTkmDAPpK1bmyG/vKoQiKtubIY7ie2dNwJCA9fVvHaJP3Jq/n/Uuz5pJXYSCOJd3dnBEjatrucB8zFIIXISIqrlVcw9D3pgcUwgH+h/osas6MKVpmpLui9+H8+oj3MAdR+t4zkwOzKyB9l4GwsVsxNDCorNwOh7qrjk= username@myclient
     
  • Ещё раз проверим, что мы правильно скопировали ключ, который начинается с ssh-rsa и содержит точно публичный ключ, а не приватный (публичный ключ намного короче приватного...) Если же у вас есть пробелы, или лишние символы перед, или после ключа, то это может вызвать проблемы с аутентификацией.
  • теперь на сервере перезагрузим службу sshd

    sudo /etc/init.d/ssh restart

Вот и всё, мы добавили свой публичный ключ, в разрешённые хосты этого сервера в файл authorized_keys на сервере. Пробуем осуществить вход, нам не нужно уже вводить пароль, поэтому мы можем отключить возможность входа на этот сервер по паролю, сохранив только возможность входа по ключам с нашего хоста. Итак заходим на сервер так:

Если вы всё сделали правильно, у вас не будет запрашиваться пароль, от сервера, но если вы установили парольную фразу на сам ключ при создании, её нужно будет вводить, чтобы иметь возможность использовать этот ключ.

И при первом подобном входе, Вы увидете следующее сообщение:

Terminal:

   The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established.
   ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
   Are you sure you want to continue connecting (yes/no)?
 

пишите yes

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

Внимание далее идут команды запускаемые в консоле нашего сервера. После уже нашего успешного подключения. Так, как в этом случае мы залогинены под супер-пользователем root, приставка sudo нам не требуется.

Отключение проверки пароля

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

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

Итак, авторизуйтесь на сервере сейчас без ввода пароля, затем откройте конфигурационный файл /etc/ssh/sshd_config и найдите там директиву PasswordAuthentication. Раскомментируйте её если нужно, и установите значение в No:

на Ubuntu или Debian это делается так

               
                 
                   
                 
                 nano /etc/ssh/sshd_config

               
             

теперь ищем в файле sshd_config строку

PasswordAuthentication yes

и заменяем yes на no

PasswordAuthentication no

сохраняем изменения и перезапускаем сервис ssh командой

               
                 
                   
                 
                 service ssh restart

               
             

однако, если вы при попытке подключиться получаете что-то вроде этого:

Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

то проверьте всё, ещё раз внимательно

  1. Убедитесь, что публичный ключ, который вы добавили в файл ~/.ssh/authorized_keys на сервере, соответствует вашему приватному ключу на клиентской стороне.
  2. Проверьте, что права доступа к вашему домашнему каталогу и файлам .ssh на сервере установлены правильно:
    1. - Домашний каталог должен иметь разрешение 755 (drwxr-xr-x).
    2. - Каталог .ssh должен иметь разрешение 700 (drwx------).
    3. - Файл authorized_keys должен иметь разрешение 600 (-rw-------).
  3. Проверьте, что параметры PubkeyAuthentication и AuthorizedKeysFile в файле /etc/ssh/sshd_config настроены правильно, как вы указали.
  4. Проверьте, работает ли служба SSH на сервере. Команда lsof -i -P -n выводит список открытых сетевых соединений и портов. Вы ищете строку, связанную с процессом sshd и стандартно портом 22. В нашем случае, вы должны видеть:
    lsof -i -P -n

    Terminal:

          sshd      692            root    3u  IPv4  24754      0t0  TCP *:22 (LISTEN)
          sshd      692            root    4u  IPv6  24764      0t0  TCP *:22 (LISTEN)
    
  5. Перезапустите службу SSH

Копирование материалов разрешается только с указанием автора Roman Sakhno и индексируемой прямой ссылкой на сайт (http://itdid.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/sahroman.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/sahroman.

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как настроить свой компьютер

  2. Текстовая ссылка:

    Она выглядит вот так: Как настроить свой компьютер

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

крипто-донат, на развитие сайта itdid.ru:

В новом окне с терминалом itdid.ru, введите любую сумму: