Введение
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.noviello.it
При первом подключении к удаленному компьютеру через SSH вы увидите сообщение, подобное приведенному ниже.
The authenticity of host 'ssh.noviello.it (192.111.122.333)' can't be established.
ECDSA key fingerprint is SHA256:PvzTdh83hdjaie8dhqEzz38fhF7lgA/9/2bLSiO3QQQBFG.
Are you sure you want to continue connecting (yes/no)?
Каждый хост имеет уникальный отпечаток, хранящийся в файле ~/.ssh/known_hosts
.
Введите yes
, чтобы сохранить удаленный отпечаток пальца, и вам будет предложено ввести пароль.
Warning: Permanently added 'ssh.noviello.it' (ECDSA) to the list of known hosts.
[email protected]'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
, n
в терминале:
man ssh
Файл конфигурации SSH
Если вы ежедневно подключаетесь к нескольким удаленным системам через SSH, вы обнаружите, что запомнить все удаленные IP-адреса, разные имена пользователей, нестандартные порты и различные параметры командной строки сложно, если вообще возможно.
Клиент OpenSSH считывает параметры, установленные в файле конфигурации для каждого пользователя ( ~/.ssh/config
). В этом файле вы можете хранить различные параметры SSH для каждой удаленной машины, к которой вы подключаетесь.
Пример конфигурации SSH показан ниже:
Host dev
HostName dev.noviello.it
User alice
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 -R [LOCAL_IP:]LOCAL_PORT -N -f username@hostname
Более подробную информацию и пошаговые инструкции смотрите в статье Как настроить туннелирование с переадресацией портов (SSH).
Вывод
Чтобы подключиться к удаленному серверу через SSH, используйте команду ssh
, за которой следует имя удаленного пользователя и ssh username@hostname
.
Знание того, как использовать команду ssh
, необходимо для удаленного управления сервером.