Как правильно подключиться к серверу по SSH. Руководство

В этой статье мы рассмотрим современные и удобные способы работы с сервером по SSH с VPS от Infobox и облаком InfoboxCloud.


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

Если вы пользователь Windows и вам нужно просто и быстро подключиться к Linux–серверу — переходите в раздел «Putty или как быстро подключиться к SSH из Windows».

Что необходимо знать для подключения по SSH

Для подключение необходимы:
  • IP адрес сервера
  • логин
  • пароль

Где взять данные для подключения к серверу VPS NG от Infobox
После заказа услуги войдите в панель управления https://panel.infobox.ru.
Выберите услугу «VPS NG» в правом верхнем углу панели управления в выпадающем списке.
Затем перейдите во вкладку «VPS».

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


Для подключения используйте имя пользователя root, ip–адрес с этой страницы и установленный пароль.
Если вы забыли пароль, нажмите на пункт «Редактировать параметры доступа», показанном на скриншоте выше.

Где взять данные для подключения к серверу VPS от Infobox
Войдите в панель управления https://panel.infobox.ru.
Выберите услугу VPS в правом верхнем углу панели управления в выпадающем списке (в названии услуга содержит имя заказанной ОС и регион размещения).

Затем перейдите во вкладку «Управление VPS».


Используйте имя пользователя root, пароль и ip–адрес сервера с этой страницы.

Где взять данные для подключения к серверу InfoboxCloud
После создания сервера данные для подключения придут к вам на электронную почту. Этого достаточно для подключения.


Если вы потеряли письмо с данными для доступа и хотите получить доступ к серверу
По-умолчанию логин администратора сервера: root

Войдите в панель управления по адресу: https://panel.infobox.ru.
Выберите услугу «Облачные серверы» в правом верхнем углу панели управления в выпадающем списке.

Выделенный IP–адрес для сервера можно посмотреть во вкладке «Облачная инфраструктура» панели управления.



Если поле "Выделенный IP адрес" пустое, значит при создании сервера вы не добавили серверу хотя бы 1 выделенный ip–адрес (и следовательно доступа через Интернет к серверу нет, есть только из локальной сети).

Чтобы добавить выделенный IP–адрес, нажмите на имя сервера.


В группе настроек «Сеть» нажмите «Настроить».


Убедитесь, что пропускная способность (скорость) сети достаточна (или поставьте больше при необходимости).
Затем нажмите «Добавить IPv4–адрес» и нажмите «Сохранить изменения».


Теперь у сервера есть выделенный IP–адрес.


Для изменения пароля доступа к серверу нажмите «Изменить», как показано на скриншоте выше. Так вы можете установить пароль для доступа к серверу.
Теперь вы знаете ip–адрес сервера, логин (root) и пароль.

Настройка SSH–клиентов

Для Windows
Для подключения к серверу вам потребуется SSH–клиент. Если необходимо быстро подключиться — рекомендуется Putty. Если требуется работа с unix–утилитами, такими как scp, rsync и ssh-copy-id – используйте Cygwin.

Putty или как быстро подключиться к SSH из Windows
Скачайте инсталлятор Putty для Windows из раздела The latest release version и установите Putty с настройками по-умолчанию.


Запустите Putty (Пуск -> Все приложения -> PuTTY -> PuTTY).

Введите IP–адрес сервера. Убедитесь, что выбран порт 22, а тип подключения SSH и нажмите «Open».


Вам будет задан вопрос, доверяете ли вы серверу, к которому подключаетесь. Нужно ответить «Да».


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


Подключение было успешно установлено.

Cygwin или Unix–окружение на вашем Windows компьютере
Работая с Linux–серверами вам может понадобиться подобное окружение на вашем компьютере. Использовать единый набор утилит на сервере и рабочем компьютере очень удобно, поэтому обязательно попробуйте Cygwin. Linux только с первого взгляда кажется сложным. Постепенно осваивая эту ОС вы все больше будете нуждаться в Cygwin. Хорошее затягивает.

Загрузите файл-установки Cygwin и запустите установку.


При установке дойдите до этапа выбора источника установки и выберите любое зеркало, откуда будут скачиваться компоненты Cygwin и нажмите «Далее».



Будет предложен выбор пакетов, которые необходимо установить. Ничего не изменяйте на этом шаге и завершите процесс установки, просто нажимая «Далее».

После установки запустите Cygwin (Пуск -> Все приложения -> Cygwin -> Cygwin64 Terminal).


Теперь нужно установить менеджер пакетов, чтобы устанавливать необходимое ПО способом, похожим на то, как это делается в Linux. Для этого выполните следующие команды:
lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg

install apt-cyg /bin


Работаем с пакетным менеджером apt-cyg в Windows
Теперь давайте познакомимся с командами apt-cyg:
  • install – устанавливает пакет;
  • remove – удаляет пакет из системы;
  • update – скачивает свежую копию списка пакетов (setup.ini) с сервера, определенного в setup.rc и обновляет установленные пакеты;
  • download — скачивает свежую копию списка пакетов, но ничего не обновляет;
  • show — отображает информацию о пакете;
  • depends – показывает дерево зависимостей пакета;
  • rdepends – показывает деревья зависимостей пакетов, зависящих от этого пакета;
  • list – ищет среди каждого установленного пакета соответствующие по имени регулярному выражению. Если имя пакета или регулярное выражение не передано параметром — выводит все пакеты;
  • listall – ищет в списке доступных к установке пакетов (в setup.ini) по имени или регулярному выражению;
  • category – отображает все пакеты, относящиеся к указанной категории;
  • listfiles – отображает все файлы в указанном пакете. Могут быть указаны один или несколько пакетов;
  • search – ищет внутри загруженных пакетов файл. Указанный путь может быть относительным или абсолютным. Могут быть указаны один или несколько файлов;
  • searchall — Ищет по cygwin.com файл внутри пакетов.

Давайте установим OpenSSH. Для этого сначала скачаем файл с данными о доступных пакетах (и обновим имеющиеся):
apt-cyg update


Как мы видим, для полноценной работы apt-cyg не хватает wget. Установите его:
apt-cyg install wget

Теперь давайте найдем пакет, в котором есть ssh.
apt-cyg listall ssh


Очень похоже, что пакет называется openssh :) Давайте установим его.
apt-cyg install openssh

Теперь подключитесь к SSH так же, как это происходит на Unix–системах. Введите:
ssh root@ip–адрес-сервера
, где root – имя пользователя, а вместо ip-адрес-сервера введите IP–адрес.


Мы успешно подключились по ssh так же, как и в Unix.
(кстати, Microsoft ведет работу над поддержкой OpenSSH клиента и сервера в Windows из коробки).

Для OS X и Linux
Подключение по ssh из Linux и OS X — одно удовольствие. OpenSSH встроен в эти ОС.
Откройте терминал (Finder -> Applications -> Utilites -> Terminal, если вы в Linux – вы знаете, где у вас терминал :))


Для подключения введите:
ssh root@ip–адрес-сервера
, где root – имя пользователя, а вместо ip-адрес-сервера введите IP–адрес.


Подключение к серверу успешно установлено.

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

Для установки дополнительного ПО в Linux уже есть пакетные менеджеры.

В OS X следует установить пакетный менеджер Homebrew.
Для установки выполните команду:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

В процессе ОС предложит установить компоненты XCode, это нужно сделать.

Работаем с пакетным менеджером OS X: Homebrew
Через homebrew программы распространяются в исходных текстах и собираются на компьютере пользователя с помощью XCode. Таким образом в homebrew нет пакетов, а наборы исходных текстов называются формулами.

Давайте познакомимся с командами brew:
  • update – обновляет список доступных формул и себя;
  • outdated – позволяет увидеть, какое ПО устарело;
  • install – позволяет установить указанную формулу;
  • remove – позволяет удалить указанную формулу;
  • search – позволяет найти указанную формулу по имени или регулярному выражению;
  • brew upgrade --all – обновляет все установленное ПО на основании доступного списка формул;
  • brew upgrade – обновляет указанное ПО;
  • pin – позволяет зафиксировать версию ПО и не обновлять ее, когда обновляется все;
  • unpin – позволяет возобновить возможность обновления ПО, для которого раньше был сделан pin;
  • cleanup — по-умолчанию brew не удаляет старые формулы. Если выполнить cleanup без параметра — очистится список всех старых формул. Если выполнить cleanup с названием формулы — очистятся старые версии только ее;
  • cleanup -n – позволяет посмотреть, какие устаревшие формулы можно очистить;
  • doctor – позволяет посмотреть список потенциальных проблем с brew и путей решения.

Например, давайте установим wget с помощью homebrew:
brew update

brew install wget




Работе с пакетными менеджерами Linux будет посвящена отдельная статья. Если вы используете Linux на рабочей станции — наверняка знаете, как установить пaкет в эту ОС.

Подключаемся к серверу Linux по ключу

Вводить пароль при каждом соединении с сервером с доверенного компьютера не удобно. Давайте рассмотрим, как входить на сервер по ключу.

Ключ состоит из открытой и закрытой части. Открытая часть сохраняется в файл authorized_keys папки .ssh в домашнем каталоге пользователя на удаленном сервере. Закрытая остается на компьютере пользователя и ни в коем случае никуда не передается. Во время авторизации клиент подтверждает серверу владение ключом, но не передает сам ключ. Таким образом, взломав сервер нельзя украсть ключ пользователя.

Начните процесс генерации ключа на клиентском компьютере, с которого осуществляется подключение. Сгенерировать ключ на Windows с Cygwin, на OS X и на Linux можно командой
ssh-keygen

Будет задан вопрос, в какой файл сохранить закрытый ключ (по-умолчанию будет предложен id_rsa, просто нажмите enter).
Затем вас попросят ввести пароль. На этом шаге не вводите пароль, иначе при каждом соединении по SSH придется вводить пароль от ключа. Просто нажмите Enter.
Сохраните пароль в надежном месте — восстановить его невозможно.


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

После этого в папке вашего пользователя появится директория .ssh и в ней файлы id_rsa и id_rsa.pub.


Теперь подключитесь к удаленному серверу и введите команду перехода в домашнюю директорию:
cd ~

Убедитесь, что на сервере нет папки .ssh (если есть — следующий шаг можно пропустить).
ls -la

Сгенерируйте ssh–ключ сервера командой ssh-keygen так же, как мы сделали это на предыдущем шаге.
Теперь в директории пользователя появилась папка .ssh.
Нужно в файл ~/.ssh/authorized_keys добавить содержимое id_rsa.pub из директории .ssh на вашем компьютере.
Выйдите из удаленного сервера командой
exit

Теперь выполните команду:
cat ~/.ssh/id_rsa.pub

Будет выведен публичный ключ. Скопируйте его в буфер обмена.


Подключитесь снова к серверу и создайте файл:
touch ~/.ssh/authorized_keys

Откройте файл authorized_keys на редактирование.
Если у вас еще нет редактора, вы можете воспользоваться редактором nano. Установите его с помощью пакетного менеджера ОС.
Для Ubuntu и Debian команда установки:
apt-key update && apt-get update && apt-get -y install nano

Для CentOS и Fedora:
yum -y install nano

Теперь введите:
nano ~/.ssh/authorized_keys

Вставьте публичный ключ из буфера обмена (из контекстного меню правого клика мыши).


Сохраните изменения командой ctl+X, Y, Enter.

Теперь выйдите из удаленного сервера командой
exit

Переподключитесь по SSH. Пароль запрошен не будет.

Как быстрее копировать публичный ключ на удаленные сервера
Конечно, для каждого сервера добавлять публичный ключ в authorized_keys – не очень быстрое занятие. Как это делается — знать надо, но теперь можно использовать утилиту ssh-copy-id для этого.

Убедитесь, что ранее вы сгенерировали ключ через ssh-keygen. В папке пользователя должна быть папка .ssh, а в ней файлы id_rsa и id_rsa.pub. Чтобы убедиться, что эти файлы присутствуют, выполните команду:
ls -la ~/.ssh/

Установитe ssh-copy-id на клиентский компьютер. В Cygwin Windows и Linux мы уже установили эту утилиту в пакете openssh и дополнительных действий не требуется. В OS X homebrew выполните команду:
brew install ssh-copy-id

Теперь для того, чтобы скопировать публичный ключ на удаленный сервер, выполните команду:
ssh-copy-id root@ip_адрес_сервера
Публичный ключ будет скопирован и вы сможете входить в сервер без пароля.

Что делать, если при соединении по SSH происходит ошибка REMOTE HOST IDENTIFICATION HAS CHANGED!

Выполните команду:
ssh-keygen -R hostname
, где в качестве hostname укажите домен или ip-адрес сервера, к которому подключаетесь. В файле ~/.ssh/know_hosts обновится информация о хосте и подключение по SSH произойдет успешно.

Как скопировать файлы по SSH на сервер и обратно (или между серверами)

Об этом мы рассказали в отдельной статье в разделе «Как скопировать файл или директорию по SSH на сервер и обратно».

Нестабильное интернет-соединение при подключении по SSH – что делать?

Часто, работая через нестабильную сеть (например через мобильный интернет 3G/4G или различные точки доступа WiFi) соединение с SSH обрывается. Давайте посмотрим, что можно сделать на уровне клиента, чтобы предотвратить необходимость переподключения. Данные инструменты не подходят для выполнения критически важных операций на сервере (например апгрейд ОС). Для выполнения критически важных операций нужно дополнительно использовать утилиты, описанные в следующем разделе статьи. Предназначение утилит в этом разделе — более удобная работа по SSH для пользователя.

AutoSSH
AutoSSH запускает копию ssh–клиента и осуществляет мониторинг за соединением, перезапуская ssh–клиент при необходимости.

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

AutoSSH поддерживает только 3 параметра:
  • -M <порт>[: эхо-порт] — используется для указания порта мониторинга или порта мониторинга и порта эхо-сервиса. Если не указан порт эхо-сервиса, для него используется следующий по номеру порт. Например, если установлен флаг -M 20000, тестовые данные будут отправляться по порту 20000, а получаться по порту 20001. Если указать -M 0 – мониторинг соединения будет отключен и autossh будет перезапускать ssh только при выходе из ssh (можно использовать это с опциями ServerAliveInterval и ServerAliveCountMax в OpenSSH, если мониторинг в вашей ситуации не может быть использован);
  • -f — отправляет autossh в фон еще до запуска ssh (пароль в таком режиме ввести вы не сможете);
  • -V — отображает версию autossh.
Все остальные аргументы передаются как параметры ssh.

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

Установка AutoSSH в Cygwin в Windows
При использовании Cygwin в Windows введите:
apt-cyg update

apt-cyg install autossh



Теперь можно выполнить подключение к серверу:
autossh -M 20000 root@ip_адрес_сервера


Соединение успешно установлено.

В целом autossh – достаточно удобный инструмент для работы через нестабильные интернет-соединения и для организации ssh–туннелей на сервере (этот сценарий мы рассмотрим в отдельной статье). Недостаток autossh в том, что эта утилита не решает проблему, если в момент ввода команд на сети возникают значительные задержки (что в 3G сети случается). В этом случае вы будете ждать ответа от сервера на ввод каждого символа, что несколько замедляет работу. Тем не менее в обычных условиях работы autossh очень помогает поддерживать ssh–соединение.

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

Как выполнять критически важные и длительные операции на сервере: терминальные мультиплексоры

Если вы обновляете ОС, устанавливаете какое-то ПО или просто редактируете файл на сервере, после подключения через ssh или autossh не работайте напрямую. Если соединение по SSH будет разорвано — вы потеряете сессию, запущенную при подключении по SSH. Чтобы этого не произошло и при переподключении по SSH вы точно попали в продолжающуюся операцию на сервере или в открытое окно редактирования файла с того же момента, используйте на сервере терминальные мультиплексоры: GNU Screen или tmux.

GNU Screen
Изначально программа screen создавалась, чтобы запускать несколько терминальных сессий внутри одного терминала. Однако есть у screen и другое полезное свойство: возможность отсоединять виртуальные сеансы от физического терминала и подсоединять к другому. Это, в частности, позволяет запускать долгоиграющие процессы на удалённых машинах, без необходимости быть постоянно на них залогиненным.

1. Зайдите на удаленный сервер по SSH.
2. Запустите там
screen

3. Вы увидите приветствие, нажмите Enter.
4. Теперь вы можете делать что угодно, как будто вы просто подключены к серверу по SSH (например запустите любой долгий процесс).
5. Вы можете отсоединить сессию, нажав CTRL + a, затем d. Можете даже завершить подключение по SSH к серверу.
6. Чтобы вернуться в сессию, переподключитесь по SSH (или это сделает autossh) и введите
screen -r

Вы вернетесь в запущенную сессию, а в ней продолжается запущенный вами процесс ранее. Более подробно терминальные мультиплексоры мы разберем в последующих статьях.

Заключение

В этой статье мы попытались рассказать основы, необходимые для удобной работы по SSH из различных ОС. Конечно это далеко не все, что возможно, но хорошая база для начала. Если вы нашли ошибку в статье, считаете, что нужно добавить что-то важное или просто у вас есть вопрос — напишите нам.

Успешного использования InfoboxCloud!

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.