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

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

5 Января 2020 | Терминал

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

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

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

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


Установка OpenSSH клиента 

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


Установка клиента OpenSSH в Linux 

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


Установка OpenSSH в Ubuntu и Debian 

sudo apt updatesudo apt install openssh-client


Установка OpenSSH на CentOS и Fedora 

sudo dnf install openssh-clients


Установка OpenSSH клиента в Windows 10 

Большинство пользователей 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


Установка OpenSSH клиента на macOS 

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


Как использовать ssh команду

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

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

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

ssh [OPTIONS] [USER@]:HOST

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

ssh ssh.linuxize.com


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

The authenticity of host 'ssh.linuxize.com (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.linuxize.com' (ECDSA) to the list of known hosts.

dev@ssh.linuxize.com'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 справочную страницу, набрав man ssh в своем терминале.


Файл конфигурации SSH 

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

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

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

Host dev
    HostName dev.linuxize.com
    User mike
    Port 4422

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

ssh -p 4422 mike@dev.linuxize.com


Для получения дополнительной информации проверьте статью о файле конфигурации 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 -D [LOCAL_IP:]LOCAL_PORT  -N -f username@hostname


Для получения более подробной информации и пошаговых инструкций ознакомьтесь со статьей « Как настроить SSH-туннелирование (переадресация портов)» .


Вывод 

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

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


    Комментарии

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

Загрузка комментариев...