ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Команда SSH

Как установить и настроить сервер OpenSSH на Ubuntu 16.04.

Secure Shell (SSH) – это криптографический сетевой протокол, используемый для шифрованного соединения между клиентом и сервером. Клиент ssh создает защищенное соединение с сервером SSH на удаленной машине. Зашифрованное соединение может использоваться для выполнения команд на сервере, туннелирования X11, переадресации портов и многого другого.

Есть ряд SSH-клиентов, доступных как бесплатных, так и коммерческих, при этом OpenSSH является наиболее широко используемым клиентом. Он доступен на всех основных платформах, включая Linux, OpenBSD, Windows, macOS и другие.

В этой статье мы расскажем, как использовать клиент командной строки OpenSSH (ssh) для входа на удаленный компьютер и выполнения команд или выполнения других операций.

 

Клиентская программа OpenSSH вызывается ssh и может быть вызвана из терминала. Клиентский пакет OpenSSH также предоставляет другие утилиты SSH, такие как scp и sftp, которые устанавливаются вместе с командой ssh.

 

Клиент OpenSSH по умолчанию предустановлен в большинстве дистрибутивов Linux. Если в вашей системе не установлен клиент ssh, вы можете установить его с помощью менеджера пакетов вашего дистрибутива.

 

sudo apt update
sudo apt install openssh-client

 

sudo dnf install openssh-clients

 

Большинство пользователей Windows используют Putty для подключения к удаленному компьютеру через SSH. Однако последние версии Windows 10 включают в себя клиент и сервер OpenSSH. Оба пакета могут быть установлены через графический интерфейс или PowerShell.

Чтобы найти точное имя пакета OpenSSH, введите следующую команду:

Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

 

Команда должна вернуть что-то вроде этого:

Name  : OpenSSH.Client~~~~0.0.1.0
State : NotPresent
Name  : OpenSSH.Server~~~~0.0.1.0
State : NotPresent

 

Как только вы узнаете имя пакета, установите его, выполнив:

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

 

В случае успеха вывод будет выглядеть примерно так:

Path          :
Online        : True
RestartNeeded : False

 

MacOS поставляется с клиентом OpenSSH, установленным по умолчанию.

 

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

Основной синтаксис команды ssh следующий:

ssh [OPTIONS] [USER@]:HOST

 

Чтобы использовать команду ssh, откройте свой терминал или PowerShell и введите ssh, а затем имя удаленного хоста:

ssh ssh.andreyex.ru

 

При первом подключении к удаленному компьютеру через SSH вы увидите сообщение, подобное приведенному ниже.

The authenticity of host 'ssh.andreyex.ru (192.168.121.111)' can't be established.
ECDSA key fingerprint is SHA256:Vybt22mVXuNuB5unE++yowF7lgA/9/2bLSiO3qmYWBY.
Are you sure you want to continue connecting (yes/no)?

 

Каждый хост имеет уникальный отпечаток, который хранится в файле ~/.ssh/known_hosts.

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

Warning: Permanently added 'ssh.andreyex.ru' (ECDSA) to the list of known hosts.

dev@ssh.andreyex.ru's password:

 

После того, как вы введете пароль, вы войдете на удаленный компьютер.

Если имя пользователя не указано, команда ssh использует текущее имя пользователя системы.
Чтобы войти как другой пользователь, укажите имя пользователя и хост в следующем формате:

ssh username@hostname

 

Имя пользователя также можно указать с помощью опции -l:

ssh -l username hostname

 

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

Чтобы подключиться к порту не по умолчанию, используйте опцию -p для указания порта:

ssh -p 5522 username@hostname

 

Если вы испытываете проблемы с аутентификацией или соединением, используйте опцию -v, чтобы сказать ssh для печати отладочных сообщений:

ssh -v username@hostname

 

Чтобы увеличить уровень детализации, используйте -vv или -vvv.

Команда ssh принимает несколько вариантов.

 

Если вы ежедневно подключаетесь к нескольким удаленным системам через SSH, вы обнаружите, что запоминать все удаленные IP-адреса, разные имена пользователей, нестандартные порты и различные параметры командной строки сложно, если не невозможно.

Клиент OpenSSH считывает параметры, установленные в файле конфигурации для каждого пользователя ( ~/.ssh/config). В этом файле вы можете хранить различные параметры SSH для каждого удаленного компьютера, к которому вы подключаетесь.

Пример конфигурации SSH показан ниже:

Host dev
    HostName dev.andreyex.ru
    User mike
    Port 4422

 

При запуске клиента ssh с помощью команды ssh dev, команда прочитает файл ~/.ssh/config и будет использовать сведения о соединении, указанные для хоста dev. В этом примере ssh dev эквивалентно следующему:

ssh -p 4422 mike@dev.andreyex.ru

 

Для получения дополнительной информации проверьте статью о файле конфигурации SSH.

 

Аутентификация с открытым ключом

Протокол SSH поддерживает различные механизмы аутентификации.

Механизм аутентификации на основе открытого ключа позволяет вам войти на удаленный сервер без необходимости ввода пароля.

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

Если у вас уже нет пары ключей SSH на вашем локальном компьютере, вы можете сгенерировать ее, набрав:

ssh-keygen -t rsa -b 4096 -C "your_email@domain.com"

 

Вам будет предложено ввести безопасную фразу-пароль. Хотите ли вы использовать фразу-пароль, решать только вам.

Получив пару ключей, скопируйте открытый ключ на удаленный сервер:

ssh-copy-id username@hostname

 

Введите пароль удаленного пользователя, и открытый ключ будет добавлен в файл authorized_keys удаленного пользователя.

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

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

 

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

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

Существует три типа переадресации портов SSH:

 

Переадресация локального порта позволяет переадресовать соединение с клиентского хоста на хост сервера SSH, а затем на порт хоста назначения.

Чтобы создать локальную переадресацию портов, передайте опцию -L клиенту ssh:

ssh -L [LOCAL_IP:]LOCAL_PORT:DESTINATION_HOST:DESTINATION_PORT -N -f username@hostname

 

Опция -f указывает команде ssh запускаться в фоновом режиме, а -N – не выполнять удаленную команду.

 

Переадресация удаленных портов является противоположностью переадресации локальных портов. Он перенаправляет порт с хоста сервера на хост клиента, а затем на порт хоста назначения.

 

Опция -L указывает ssh создать перенаправление на удаленный порт:

ssh -R [REMOTE:]REMOTE_PORT:DESTINATION:DESTINATION_PORT -N -f username@hostname

 

Динамическая переадресация портов создает прокси-сервер SOCKS, который обеспечивает связь через ряд портов.

Чтобы создать динамическую переадресацию портов (SOCKS), передайте опцию -D клиенту ssh:

ssh -R [LOCAL_IP:]LOCAL_PORT  -N -f username@hostname

 

Для подключения к удаленному серверу через SSH используйте команду ssh, за которой следуют имя удаленного пользователя и имя хоста (ssh username@hostname).

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

Если у вас есть какие-либо вопросы, пожалуйста, оставьте комментарий ниже.

Exit mobile version