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 update
sudo 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
необходимо для управления удаленными серверами.
Если у вас есть вопросы, оставьте комментарий ниже.