
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.linuxgazette.ru
При первом подключении к удаленной машине через SSH вы увидите сообщение, подобное приведенному ниже.
The authenticity of host 'ssh.linuxgazette.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.linuxgazette.ru' (ECDSA) to the list of known hosts. dev@ssh.linuxgazette.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 , введя в терминале man ssh .
файла конфигурации SSH
Если вы ежедневно подключаетесь к нескольким удаленным системам через SSH, вы обнаружите, что запомнить все удаленные IP-адреса, различные имена пользователей, нестандартные порты и различные параметры командной строки сложно, если не невозможно.
Клиент OpenSSH считывает параметры, заданные в файле конфигурации пользователя ( ~/.ssh/config ). В этом файле можно хранить различные параметры SSH для каждой удалённой машины, к которой вы подключаетесь.
Пример конфигурации SSH показан ниже:
Host dev HostName dev.linuxgazette.ru User mike Port 4422
При запуске SSH-клиента командой ssh dev команда прочитает файл ~/.ssh/config и использует данные подключения, указанные для хоста dev. В этом примере ssh dev эквивалентен следующему:
ssh -p 4422 mike@dev.linuxgazette.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-сервера, а затем на порт хоста назначения.
Чтобы создать локальную переадресацию портов, передайте ssh клиенту опцию -L :
ssh -L [LOCAL_IP:]LOCAL_PORT:DESTINATION_HOST:DESTINATION_PORT -N -f username@hostname
Опция -f указывает команде ssh работать в фоновом режиме, а -N не выполнять удаленную команду.
Удаленная переадресация портов
Удалённая переадресация портов — это противоположность локальной переадресации портов. Она перенаправляет порт с хоста-сервера на хост-клиент, а затем на порт хоста-получателя.
Опция -R указывает ssh создать удаленную переадресацию портов:
ssh -R [REMOTE:]REMOTE_PORT:DESTINATION:DESTINATION_PORT -N -f username@hostname
Динамическая переадресация портов
Динамическая переадресация портов создает прокси-сервер SOCKS , который обеспечивает связь через ряд портов.
Чтобы создать динамическую переадресацию портов (SOCKS), передайте ssh-клиенту опцию -D :
ssh -D [LOCAL_IP:]LOCAL_PORT -N -f username@hostname
Более подробную информацию и пошаговые инструкции можно найти в статье «Как настроить SSH-туннелирование (переадресацию портов)» .
Заключение
Чтобы подключиться к удаленному серверу через SSH, используйте команду ssh , за которой укажите имя удаленного пользователя и имя хоста ( ssh username@hostname ).
Умение использовать команду ssh необходимо для управления удаленными серверами.
Если у вас есть вопросы, пожалуйста, оставьте комментарий ниже.
Связанные руководства