Команда SSH

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

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

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

Установка клиента 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.

[email protected]'s password:

После ввода пароля вы войдете в удаленную машину.

Если имя пользователя не указано, команда ssh использует текущее имя для входа в систему.

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

ssh username@hostname

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

ssh -l username hostname

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

Чтобы подключиться к порту, -p от порта по умолчанию, используйте параметр -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 [email protected]

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

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

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

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

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

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

ssh-keygen -t rsa -b 4096 -C "[email protected]"

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

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

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 необходимо для управления удаленными серверами.

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

Оставьте комментарий