Ssh client ubuntu


Полное руководство по настройке SSH в Ubuntu

В наши дни SSH стал методом по умолчанию для доступа к удаленному серверу Linux.

SSH расшифровывается как Secure Shell и представляет собой мощный, эффективный и популярный сетевой протокол, используемый для удаленной связи между двумя компьютерами. И давайте не будем забывать о защищенной части его имени; SSH шифрует весь трафик для предотвращения таких атак, как угон и подслушивание, предлагая различные методы аутентификации и множество вариантов конфигурации.

В этом руководстве для начинающих вы узнаете:  

  • Основная концепция SSH    
  • Настройка SSH-сервера (в системе, к которой вы хотите получить удаленный доступ)    
  • Подключение к удаленному серверу через SSH с клиентской машины (вашего персонального компьютера)

Основы SSH

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

Протокол SSH основан на архитектуре сервер-клиент. «Сервер» позволяет «клиенту» подключаться по каналу связи. Этот канал зашифрован, и обмен регулируется использованием открытых и закрытых ключей SSH.

С сайта https://www.ssh.com/academy/ssh

OpenSSH - один из самых популярных инструментов с открытым исходным кодом, который обеспечивает функциональность SSH в Linux, BSD и Windows.

Для успешной настройки SSH вам необходимо:  

  • Установите компоненты сервера SSH на машине, которая действует как сервер. Это обеспечивается пакетом openssh-server.    
  • Установите клиентский компонент SSH на машину, с которой вы хотите подключиться к удаленному серверу. Это обеспечивается пакетом openssh-client, и с ним предустановлено большинство дистрибутивов Linux и BSD.

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

Как правило, у вас есть выделенная система, работающая в качестве сервера. Например, Raspberry Pi с сервером Ubuntu. Вы включаете SSH на Raspberry Pi, чтобы вы могли контролировать и управлять устройством со своего основного персонального компьютера, используя SSH в терминале.

Обладая этой информацией, давайте посмотрим, как настроить SSH-сервер в Ubuntu.

Настройка SSH-сервера в Ubuntu

Настроить SSH не сложно, для этого нужно всего несколько шагов:

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

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

Шаг 1. Установите необходимые пакеты

Начнем с открытия окна терминала и ввода необходимых команд.

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

sudo apt update && sudo apt upgrade

Пакет, необходимый для запуска SSH-сервера, предоставляется компонентом openssh-server из OpenSSH:

sudo apt install openssh-server

Шаг 2: Проверка статуса сервера

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

service ssh status

Вы также можете использовать команды systemd:

sudo systemctl status ssh

Вы должны увидеть что-то подобное с выделенным словом Active. Нажмите q, чтобы вернуться в командную строку.

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

sudo systemctl enable --now ssh

Шаг 3. Разрешение SSH через брандмауэр

Ubuntu поставляется с утилитой межсетевого экрана под названием UFW (UncomplicatedFirewall), которая представляет собой интерфейс для iptables, который, в свою очередь, управляет сетевыми правилами. Если брандмауэр активен, он может помешать подключению к вашему SSH-серверу.

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

sudo ufw allow ssh

Статус UFW можно проверить, запустив sudo ufw status.

На данном этапе наш SSH-сервер запущен и просто ожидает соединения от клиента.

Подключение к удаленной системе с вашего локального компьютера

В вашей локальной системе Linux уже должен быть установлен клиент SSH. Если нет, вы всегда можете установить его, используя следующую команду в Ubuntu:

sudo apt install openssh-client

Чтобы подключиться к вашей системе Ubuntu, вам необходимо знать IP-адрес компьютера и использовать команду ssh, например:

ssh username@address

Измените username на своего фактического пользователя в системе и address на IP-адрес вашего сервера Ubuntu.

Если вы не знаете IP-адрес своего компьютера, вы можете ввести ip a в терминале сервера и проверить вывод. У вас должно получиться что-то вроде этого:

Использование «ip a» для поиска IP-адреса

Как видно здесь, мой IP-адрес 192.168.2.54. Давайте попробуем подключиться, используя формат имя username@adress.

ssh [email protected]

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

Первое подключение к серверу

Сразу же SSH сообщает вам, что хост был добавлен навсегда, а затем запрашивает пароль, назначенный для имени пользователя. Введите пароль и еще раз нажмите Enter.

Хост добавлен, теперь введите пароль

И вуаля! Вы войдете в свою систему Ubuntu удаленно!

Теперь вы можете работать в терминале удаленной системы в обычном режиме.

Закрытие SSH-соединения

Чтобы закрыть соединение, вам просто нужно ввести exit, и оно сразу же закроет его, не запрашивая подтверждения.

Закрытие соединения

Остановка и отключение SSH в Ubuntu

Если вы хотите остановить службу SSH, вам понадобится эта команда:

sudo systemctl stop ssh

Это остановит службу, пока вы ее не перезапустите или пока система не будет перезагружена. Чтобы перезапустить его, введите:

sudo systemctl start ssh

Теперь, если вы хотите отключить его запуск во время загрузки системы, используйте это:

sudo systemctl disable ssh

Это не остановит работу службы во время текущего сеанса, а только загрузку во время запуска. Если вы хотите, чтобы он снова запускался во время загрузки системы, введите:

sudo systemctl enable ssh

Другие клиенты SSH

Инструмент ssh включен в большинство систем * nix, от Linux до macOS, но это не единственные существующие варианты, вот пара клиентов, которые можно использовать из других операционных систем:

  • PuTTY - это бесплатный SSH-клиент для Windows с открытым исходным кодом. Он полон функций и очень прост в использовании. Если вы подключаетесь к своей машине Ubuntu со станции Windows, PuTTY - отличный вариант.    
  • JuiceSSH - потрясающий инструмент для пользователей Android. Если вы в пути и вам нужен мобильный клиент для подключения к вашей системе Ubuntu, я настоятельно рекомендую попробовать JuiceSSH. Он существует уже почти 10 лет, и его можно использовать бесплатно.    
  • И, наконец, Termius доступен для Linux, Windows, macOS, iOS и Android. У него есть бесплатная версия, а также несколько дополнительных опций. Если у вас много серверов и вы работаете с командами, использующими общие соединения, Termius - хороший вариант для вас.

Заключение

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

Удачной удаленной работы!

Как установить и настроить SSH

В этой статье мы расскажем, как работает SSH-клиент, как его установить, а также как подключиться к Ubuntu и Windows 10 по SSH. Но давайте сначала разберёмся, что такое SSH.

Что такое SSH

SSH (Secure Shell) — сетевой протокол прикладного уровня, который позволяет управлять операционной системой и выполнять функцию туннелирования TCP-соединения. Работа SSH построена на взаимодействии 2-х компонентов: SSH-сервера и SSH-клиента. Подробнее читайте в статье Что такое SSH.

SSH-сервер по умолчанию прослушивает соединения на порту 22, а также требует аутентификации сторон. Есть несколько вариантов проверки соединения:

  • по паролю. Используется чаще всего. При таком типе аутентификации между клиентом и сервером создаётся общий секретный ключ: он шифрует трафик;
  • с помощью ключевой пары. Предварительно генерируется открытый и закрытый ключ. На устройстве, с которого нужно подключиться, хранится закрытый ключ, а на сервере — открытый. При подключении файлы не передаются, система только проверяет, что устройство имеет доступ не только к открытому, но и к закрытому ключу.
  • по IP-адресу. При подключении система идентифицирует устройство по IP-адресу. Такой тип аутентификации небезопасен и используется редко.

OpenSSH (Open Secure Shell) — набор программ, который позволяет шифровать сеансы связи в сети. При таких сеансах используется протокол SSH.

OpenSSH включает в себя компоненты:

  • ssh,
  • scp,
  • sftp,
  • sshd,
  • sftp-server,
  • ssh-keygen,
  • ssh-keysign,
  • ssh-keyscan,
  • ssh-agent,
  • ssh-add.

Этот набор ПО может аутентифицировать пользователей с помощью таких встроенных механизмов как:

  • публичные ключи,
  • клавиатурный ввод: пароли и запрос-ответ,
  • Kerberos/GSS-API.

Установка OpenSSH на Ubuntu 20.04

В качестве примера мы рассмотрим установку Ubuntu 20.04. Настройка SSH Ubuntu Server 18.04 версии проходит аналогично.

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

Для этого:

  1. 1.

    Откройте терминал с помощью комбинации клавиш Ctrl + Alt + T.

  2. 2.

    Обновите репозиторий командой:

    sudo apt update
  3. 3.

    Установите SSH с помощью команды:

    sudo apt-get install ssh
  4. 4.

    Установите OpenSSH:

    sudo apt install openssh-server
  5. 5.

    Добавьте пакет SSH-сервера в автозагрузку:

    sudo systemctl enable sshd
  6. 6.

    Проверьте работу SSH:

    systemctl status sshd

    Если установка прошла корректно, в выводе вы увидите настройки по умолчанию:

    Настройка SSH Linux

Готово, вы установили OpenSSH на Ubuntu.

Настройка OpenSSH на Ubuntu 20.04

По умолчанию SSH-соединение работает по порту 22. Из соображений безопасности порт лучше изменить. Для этого:

  1. 1.

    Запустите терминал с помощью комбинации клавиш Ctrl + Alt + T.

  2. 2.

    Откройте конфигурационный файл в текстовом редакторе:

    sudo nano /etc/ssh/sshd_config
  3. 3.

    В sshd_config замените порт 22 на другое значение в диапазоне от 1 до 65 535. Важно, чтобы выбранный порт не был занят другой службой:

    CentOS 8 настройка SSH

  4. 4.

    Чтобы изменения вступили в силу, перезапустите SSH-сервер:

    systenctl restart sshd

Готово, вы настроили OpenSSH на Ubuntu 20.04. Теперь вы можете внести дополнительные настройки или в Ubuntu разрешить пользователю доступ по SSH.

Установка OpenSSH на Windows 10

  1. 1.

    В меню «Пуск» нажмите Параметры:

  2. 2.

    Перейдите в раздел Приложения:

    Настройка SSH

  3. 3.

    Выберите Приложения и возможности и нажмите Дополнительные компоненты:

  4. 4.

    Проверьте, установлен ли компонент «Клиент OpenSSH». Для этого в поисковой строке наберите «OpenSSH». Если компонент уже установлен, переходите к шагу Настройка SSH на Windows 10.

    Если компонент ещё не установлен, используйте PowerShell.

Что такое PowerShell

PowerShell — это утилита командной строки в ОС Windows. Она выпущена в составе Windows 7, Windows 8, Windows 8.1 и Windows 10 как неотъемлемая часть системы. Управлять ОС через PowerShell можно при помощи командлетов — специальных команд. Командлеты работают аналогично с командами в терминале Linux.

Использование командлетов позволяет:

  • работать с файловой системой и реестром Windows,
  • изменять настройки операционной системы,
  • управлять службами и процессами,
  • устанавливать программы,
  • управлять установленным ПО,
  • встраивать исполняемые компоненты в программы,
  • создавать сценарии, которые помогут автоматизировать администрирование.
  1. 5.

    Перейдите в меню «Пуск». Правой кнопкой мыши кликните на Windows PowerShell и выберите Запуск от имени администратора:

  2. 6.

    Дайте согласие на запуск программы. Для этого нажмите Да:

  3. 7.

    Введите командлет:

    Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

    Вы увидите следующее сообщение:

  4. 8.

    Установите OpenSSH с помощью командлета:

    Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

    После установки вы увидите сообщение. Если для параметра «RestartNeeded» указан статус «True», перезагрузите компьютер.

Готово, вы установили OpenSSH на Windows.

Настройка Open SSH на Windows 10

  1. 1.

    В меню «Пуск» и кликните на Windows PowerShell:

  2. 2.

    Введите командлет:

    В выводе отобразится справочная информация о командлетах:

  3. 3.

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

    ssh username@host

    Где:

    • username — имя пользователя SSH,
    • host — имя удаленного сервера или его IP-адрес.

    Например, так выглядит командлет для подключения к хостингу REG.RU:

    ssh [email protected]

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

Помогла ли вам статья?

Да

раз уже
помогла

Служба

— OpenSSH | Убунту

Введение

OpenSSH — это мощный набор инструментов для удаленного управления и передачи данных между сетевыми компьютерами. Вы также узнаете о некоторых параметрах конфигурации, возможных с серверным приложением OpenSSH, и о том, как изменить их в вашей системе Ubuntu.

OpenSSH — это свободно доступная версия семейства инструментов протокола Secure Shell (SSH) для удаленного управления или передачи файлов между компьютерами. Традиционные инструменты, используемые для выполнения этих функций, такие как telnet или rcp, небезопасны и при использовании передают пароль пользователя в открытом виде. OpenSSH предоставляет демон сервера и клиентские инструменты для обеспечения безопасного, зашифрованного удаленного управления и операций передачи файлов, эффективно заменяя устаревшие инструменты.

Серверный компонент OpenSSH, sshd, постоянно прослушивает клиентские подключения от любых клиентских инструментов. Когда возникает запрос на подключение, sshd устанавливает правильное подключение в зависимости от типа подключения клиентского инструмента. Например, если удаленный компьютер подключается к клиентскому приложению ssh, сервер OpenSSH устанавливает сеанс удаленного управления после аутентификации. Если удаленный пользователь подключается к серверу OpenSSH с помощью scp, демон сервера OpenSSH инициирует безопасное копирование файлов между сервером и клиентом после аутентификации. OpenSSH может использовать множество методов аутентификации, включая простой пароль, открытый ключ и билеты Kerberos.

Установка

Установка клиентских и серверных приложений OpenSSH проста. Чтобы установить клиентские приложения OpenSSH в вашей системе Ubuntu, используйте эту команду в терминале:

 sudo apt установить openssh-клиент 

Чтобы установить серверное приложение OpenSSH и связанные файлы поддержки, используйте эту команду в командной строке терминала:

 sudo apt установить openssh-сервер 

Конфигурация

Вы можете настроить поведение по умолчанию серверного приложения OpenSSH, sshd, отредактировав файл /etc/ssh/sshd_config . Для получения информации о директивах конфигурации, используемых в этом файле, вы можете просмотреть соответствующую страницу руководства с помощью следующей команды, введенной в командной строке терминала:

 человек sshd_config 

В файле конфигурации sshd есть много директив, управляющих такими вещами, как настройки связи и режимы аутентификации. Ниже приведены примеры директив конфигурации, которые можно изменить, отредактировав файл /etc/ssh/sshd_config .

Наконечник

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

Скопируйте файл /etc/ssh/sshd_config и защитите его от записи с помощью следующих команд, выдаваемых в терминале:

 sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original sudo chmod a-w /etc/ssh/sshd_config.original 

Кроме того, поскольку потеря ssh-сервера может означать потерю доступа к серверу, проверьте конфигурацию после ее изменения и перед перезапуском сервера:

 судо sshd -t -f /etc/ssh/sshd_config 

Ниже приведен пример директивы конфигурации, которую вы можете изменить:

  • Чтобы ваш сервер OpenSSH отображал содержимое файла /etc/issue. net в качестве баннера перед входом в систему, просто добавьте или измените эту строку в /etc/ssh/sshd_config файл:

Баннер /etc/issue.net

После внесения изменений в файл /etc/ssh/sshd_config сохраните файл и перезапустите серверное приложение sshd, чтобы изменения вступили в силу, используя следующую команду в командной строке терминала:

 sudo systemctl перезапустить sshd.service 

Предупреждение

Доступно множество других директив конфигурации для sshd, позволяющих изменить поведение серверного приложения в соответствии с вашими потребностями. Однако имейте в виду, что если ваш единственный метод доступа к серверу — ssh, и вы допустили ошибку при настройке sshd через /etc/ssh/sshd_config , вы можете обнаружить, что ваш доступ к серверу заблокирован после его перезапуска. Кроме того, если указана неправильная директива конфигурации, сервер sshd может отказаться запускаться, поэтому будьте особенно осторожны при редактировании этого файла на удаленном сервере.

SSH-ключи

SSH разрешает аутентификацию между двумя хостами без необходимости ввода пароля. Аутентификация по ключу SSH использует закрытый ключ и открытый ключ .

Чтобы сгенерировать ключи, введите в терминале:

 ssh-keygen -t rsa 

Ключи будут сгенерированы с использованием алгоритма RSA . На момент написания этой статьи сгенерированные ключи будут иметь длину 3072 бита. Вы можете изменить количество битов, используя опцию -b . Например, чтобы сгенерировать ключи с 4096 битами, вы можете сделать:

 ssh-keygen -t rsa -b 4096 

Во время процесса вам будет предложено ввести пароль. Просто нажмите Введите , когда будет предложено создать ключ.

По умолчанию 9Открытый ключ 0051 сохраняется в файле ~/.ssh/id_rsa.pub , а ~/.ssh/id_rsa — это закрытый ключ . Теперь скопируйте файл id_rsa.pub на удаленный хост и добавьте его к ~/. ssh/authorized_keys , введя:

 ssh-copy-id имя_пользователя@remotehost 

Наконец, еще раз проверьте права доступа к файлу author_keys , только аутентифицированный пользователь должен иметь права на чтение и запись. Если разрешения неверны, измените их:

 chmod 600 .ssh/authorized_keys 

Теперь вы сможете подключаться к хосту по SSH без запроса пароля.

Импорт ключей с открытых серверов ключей

В наши дни многие пользователи уже зарегистрировали ssh-ключи в таких сервисах, как панель запуска или github. Их можно легко импортировать с помощью:

 ssh-import-id <имя пользователя на удаленной службе> 

Префикс lp: подразумевается и означает выборку с панели запуска, альтернатива gh: вместо этого сделает выборку инструмента из github.

Двухфакторная аутентификация с U2F/FIDO

В OpenSSH 8.2 добавлена ​​поддержка устройств аппаратной аутентификации U2F/FIDO. Эти устройства используются для обеспечения дополнительного уровня безопасности поверх существующей аутентификации на основе ключей, поскольку для завершения аутентификации необходимо наличие аппаратного токена.

Очень прост в использовании и настройке. Единственный дополнительный шаг — создать новую пару ключей, которую можно использовать с аппаратным устройством. Для этого можно использовать два типа ключей: ecdsa-sk и ed25519-sk . У первого более широкая аппаратная поддержка, а второму может потребоваться более новое устройство.

После создания пары ключей ее можно использовать так же, как вы обычно используете любой другой тип ключа в openssh. Единственное требование состоит в том, что для использования закрытого ключа устройство U2F должно присутствовать на хосте.

Например, подключите устройство U2F и сгенерируйте пару ключей для использования с ним:

 $ ssh-keygen -t ecdsa-ск Создание пары открытый/закрытый ключ ecdsa-sk. Возможно, вам придется коснуться вашего аутентификатора, чтобы авторизовать генерацию ключа. <-- сенсорное устройство Введите файл для сохранения ключа (/home/ubuntu/.ssh/id_ecdsa_sk): Введите кодовую фразу (пусто, если нет парольной фразы): Введите тот же пароль еще раз: Ваша идентификация сохранена в /home/ubuntu/.ssh/id_ecdsa_sk Ваш открытый ключ сохранен в /home/ubuntu/.ssh/id_ecdsa_sk.pub. Ключевой отпечаток пальца: SHA256: V9PQ1MqaU8FODXdHqDiH9Mxb8XK3o5aVYDQLVl9IFRo ubuntu@focal 

Теперь просто перенесите публичную часть на сервер по адресу ~/.ssh/authorized_keys и все готово:

 $ ssh -i .ssh/id_ecdsa_sk [email protected] Подтвердите присутствие пользователя для ключа ECDSA-SK SHA256:V9PQ1MqaU8FODXdHqDiH9Mxb8XK3o5aVYDQLVl9IFRo <-- touch device Добро пожаловать в Ubuntu Focal Fossa (GNU/Linux 5.4.0-21-универсальный x86_64) (...) [email protected]:~$ 

Резидентные ключи FIDO2

Закрытые ключи FIDO2 состоят из двух частей: части «дескриптора ключа», хранящейся в файле закрытого ключа на диске, и ключа для каждого устройства, уникального для каждого токена FIDO2, который нельзя экспортировать из аппаратного обеспечения токена. Они объединяются аппаратным обеспечением во время аутентификации для получения реального ключа, который используется для подписи запросов аутентификации.

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

Использование резидентных ключей увеличивает вероятность того, что злоумышленник сможет использовать украденное токен-устройство. По этой причине токены обычно требуют проверки подлинности с помощью PIN-кода, прежде чем разрешить загрузку ключей, и пользователи должны установить PIN-код на своих токенах, прежде чем создавать какие-либо резидентные ключи. Это делается с помощью программного обеспечения для управления аппаратными токенами.

OpenSSH позволяет генерировать резидентные ключи с использованием флага ssh-keygen -O резидентного во время генерации ключа:

 $ ssh-keygen -t ecdsa-sk -O резидентный -O приложение=ssh:mykeyname Создание пары открытый/закрытый ключ ecdsa-sk. Возможно, вам придется коснуться вашего аутентификатора, чтобы авторизовать генерацию ключа. Введите PIN-код для аутентификатора: Введите файл для сохранения ключа (/home/ubuntu/.ssh/id_ecdsa_sk): mytoken Введите кодовую фразу (пусто, если нет парольной фразы): Введите тот же пароль еще раз: Ваша идентификация сохранена в mytoken (...) 

Как обычно, будет создана пара открытого/закрытого ключа, но часть закрытого ключа (дескриптор ключа) можно будет извлечь из маркера позже. Это делается запуском:

 $ ssh-keygen -K Введите PIN-код для аутентификатора: Возможно, вам придется коснуться вашего аутентификатора, чтобы авторизовать загрузку ключа. Введите кодовую фразу (пусто, если нет парольной фразы): Введите тот же пароль еще раз: Ключ ECDSA-SK ssh:mytoken сохранен в id_ecdsa_sk_rk_mytoken 

Будет использоваться часть после ssh: из параметра приложения из предыдущего как часть имен файлов ключей:

 $ l id_ecdsa_sk_rk_mytoken* -rw------- 1 ubuntu ubuntu 598 из 4 18:49 id_ecdsa_sk_rk_mytoken -rw-r--r-- 1 ubuntu ubuntu 228 из 4 18:49 id_ecdsa_sk_rk_mytoken. pub 

Если вы установили парольную фразу при извлечении ключей из аппаратного токена, а затем используете эти ключи, вам будет предложено ввести парольную фразу и PIN-код аппаратного ключа, и вам также придется прикоснуться к токену:

 $ ssh -i ./id_ecdsa_sk_rk_mytoken [email protected] Введите кодовую фразу для ключа './id_ecdsa_sk_rk_mytoken': Подтвердите присутствие пользователя для ключа ECDSA-SK SHA256:t+l26IgTXeURY6e36wtrq7wVYJtDVZrO+iuobs1CvVQ Присутствие пользователя подтверждено (...) 

Также можно загрузить и добавить резидентные ключи непосредственно в ssh-agent, запустив

 $ ssh-добавить -K 

В этом случае файл не записывается, и открытый ключ можно распечатать, запустив ssh-add -L .

ПРИМЕЧАНИЕ
Если вы использовали параметр -O verify-required при создании ключей или если этот параметр установлен на сервере SSH через /etc/ssh/sshd_config 's PubkeyAuthOptions verify-required , тогда использование агента, который в настоящее время находится в Ubuntu 22. 04 LTS, не будет работать.

Двухфакторная аутентификация с TOTP/HOTP

Для лучшей безопасности двухфакторной аутентификации (2FA) мы рекомендуем использовать устройства аппаратной аутентификации, поддерживающие U2F/FIDO. Подробности смотрите в предыдущем разделе. Однако, если это невозможно или нецелесообразно реализовать в вашем случае, двухфакторная аутентификация на основе TOTP/HOTP является улучшением по сравнению с отсутствием двух факторов. Распространены приложения для смартфонов, поддерживающие этот тип 2FA, например Google Authenticator.

Фон

Представленная здесь конфигурация делает аутентификацию с открытым ключом первым фактором, код TOTP/HOTP — вторым фактором и делает аутентификацию по паролю недоступной. Помимо обычных шагов настройки, необходимых для аутентификации с открытым ключом, вся конфигурация и установка выполняются на сервере. Никаких изменений на стороне клиента не требуется; подсказка 2FA появляется вместо подсказки пароля.

Поддерживаются два метода: HOTP и TOTP. Как правило, TOTP предпочтительнее, если устройство 2FA поддерживает его.

HOTP основан на последовательности, предсказуемой только теми, у кого есть секрет. Пользователь должен выполнить действие, чтобы клиент сгенерировал следующий код в последовательности, и этот ответ был отправлен на сервер. Сервер также генерирует следующий код, и если он совпадает с кодом, предоставленным пользователем, то пользователь подтверждает серверу, что он делится секретом. Недостатком этого подхода является то, что если пользователь генерирует код без сопровождения сервера, например, в случае опечатки, то генераторы последовательности могут «рассинхронизироваться». Серверы компенсируют это, допуская пробел в последовательности и считая несколько последующих кодов также действительными; если используется этот механизм, то сервер «пропускает вперед» для синхронизации с резервной копией. Но чтобы оставаться в безопасности, это может зайти только до тех пор, пока сервер не откажет. Когда HOTP выходит из синхронизации таким образом, его необходимо сбросить с помощью какого-либо внештатного метода, такого как аутентификация с использованием второго резервного ключа, чтобы сбросить секрет для первого.

TOTP позволяет избежать этого недостатка HOTP, используя текущую дату и время, не зависящие от часового пояса, для определения соответствующей позиции в последовательности. Однако это приводит к дополнительным требованиям и другому режиму отказа. Оба устройства должны иметь возможность определять время, что нецелесообразно, например, для токена USB 2FA без батареи. И сервер, и клиент должны согласовать правильное время. Если их часы сдвинуты, то они будут расходиться во мнениях относительно своего текущего положения в последовательности. Серверы компенсируют перекос часов, позволяя нескольким кодам с обеих сторон также быть действительными. Но, как и HOTP, они могут зайти так далеко, пока сервер не откажет. Одним из преимуществ TOTP по сравнению с HOTP является то, что исправление этого условия включает обеспечение правильности часов на обоих концах; внеполосная аутентификация для сброса секретов неудачливых пользователей не требуется. Например, при использовании современного приложения для смартфона требование поддерживать правильность часов обычно не является проблемой, поскольку по умолчанию это обычно выполняется автоматически на обоих концах.

Примечание

Не рекомендуется настраивать U2F/FIDO одновременно с TOTP/HOTP. Эта комбинация не тестировалась, и при использовании представленной здесь конфигурации TOTP/HOTP станет обязательным для всех, независимо от того, используют ли они также U2F/FIDO.

Установить программное обеспечение

В командной строке терминала установите модуль google-authenticator PAM:

 sudo подходящее обновление sudo apt установить libpam-google-authenticator 

Примечание

Пакет libpam-google-authenticator находится в компоненте архива юниверса Ubuntu, который получает только максимальную поддержку сообщества.

Настройка пользователей

Поскольку аутентификация с открытым ключом с TOTP/HOTP 2FA будет настроена как обязательная для пользователей, каждый пользователь, желающий продолжить использование ssh, должен сначала настроить аутентификацию с открытым ключом, а затем настроить свои ключи 2FA, запустив инструмент настройки пользователя. Если это не будет сделано в первую очередь, пользователи не смогут сделать это позже через ssh, поскольку в этот момент у них не будет аутентификации с открытым ключом и/или 2FA, настроенной для аутентификации.

Настройка аутентификации пользователей на основе ключей

Чтобы настроить аутентификацию на основе ключей, см. «Ключи SSH» выше. Как только это будет сделано, его можно протестировать независимо от последующей конфигурации 2FA. На этом этапе аутентификация пользователя должна работать только с ключами, требуя ввода парольной фразы закрытого ключа, только если она была настроена. При правильной настройке у пользователя не должен запрашиваться пароль.

Настройка секретов TOTP/HOTP 2FA пользователей

Каждому пользователю необходимо запустить инструмент настройки для настройки двухфакторной аутентификации. Это задаст несколько вопросов, сгенерирует ключ и отобразит QR-код, чтобы пользователь мог импортировать секрет в свое приложение для смартфона, такое как приложение Google Authenticator на Android. Инструмент создает файл ~/.google-authenticator , который содержит общий секрет, аварийные пароли и конфигурацию для каждого пользователя.

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

 Google-аутентификатор 

Следуйте инструкциям, отсканировав QR-код в приложение 2FA, как указано.

Важно предусмотреть возможность потери или повреждения устройства 2FA. Будет ли это заблокировать пользователя из его учетной записи? В целях смягчения последствий каждому пользователю стоит рассмотреть возможность выполнения одного или нескольких из следующих действий:

  • Используйте средство резервного копирования или облачной синхронизации устройства 2FA, если оно имеется.
  • Запишите резервные коды, напечатанные программой установки.
  • Сфотографируйте QR-код.
  • (только TOTP) Сканируйте QR-код на нескольких устройствах 2FA. Это работает только для TOTP, поскольку несколько устройств HOTP 2FA не смогут синхронизироваться.
  • Убедитесь, что у пользователя есть другой путь аутентификации, чтобы при необходимости можно было повторно запустить инструмент настройки.

Конечно, любой из этих шагов по резервному копированию также сводит на нет все преимущества двухфакторной аутентификации, если кто-то еще получит доступ к резервной копии, поэтому шаги, предпринимаемые для защиты любой резервной копии, следует тщательно обдумывать.

Настройка ssh-сервера

После настройки всех пользователей настройте сам sshd, отредактировав /etc/ssh/sshd_config . В зависимости от вашей установки некоторые из этих параметров могут быть уже настроены, но не обязательно со значениями, необходимыми для этой конфигурации. Проверьте и скорректируйте существующие вхождения этих директив конфигурации или добавьте новые при необходимости:

 KbdInteractiveAuthentication да ПарольАутентификация нет Методы аутентификации с открытым ключом, интерактивной клавиатурой 

Примечание

В Ubuntu 20. 04 «Focal Fossa» и более ранних версиях используйте ChallengeResponseAuthentication yes вместо KbdInteractiveAUthentication yes .

Перезапустите службу ssh , чтобы принять изменения конфигурации:

 sudo systemctl попробуйте перезагрузить или перезапустить ssh 

Отредактируйте /etc/pam.d/sshd и замените строку:

 @include общая аутентификация 

с:

 требуется авторизация pam_google_authenticator.so 

Изменения в конфигурации PAM вступают в силу немедленно, и отдельная команда перезагрузки не требуется.

Войти с помощью 2FA

Теперь, когда вы входите в систему с использованием ssh, в дополнение к обычной аутентификации с открытым ключом вам будет предложено ввести код TOTP или HOTP:

 $ ssh jammy.сервер Введите кодовую фразу для ключа id_rsa: ([email protected]) Код подтверждения: Добро пожаловать в Ubuntu Jammy Jellyfish. .. (...) [email protected]:~$ 

Особые случаи

В Ubuntu следующие параметры по умолчанию указаны в /etc/ssh/sshd_config , но если вы их переопределили, обратите внимание, что они необходимы для правильной работы этой конфигурации и должны быть восстановлены следующим образом:

 UsePAM да PubkeyAuthentication да 

Не забудьте запустить sudo systemctl try-reload-or-restart ssh , чтобы любые изменения, внесенные в конфигурацию sshd, вступили в силу.

Ссылки

  • Ubuntu Wiki SSH-страница.

  • Веб-сайт OpenSSH

  • Примечания к выпуску OpenSSH 8.2

  • Расширенная вики-страница OpenSSH

  • Документация Yubikey по использованию OpenSSH FIDO/FIDO2

  • Википедия на TOTP

  • Википедия на HOTP

Полное руководство по настройке SSH в Ubuntu

В наши дни

SSH стал методом по умолчанию для доступа к удаленному серверу Linux.

SSH расшифровывается как Secure Shell и представляет собой мощный, эффективный и популярный сетевой протокол, используемый для удаленного установления связи между двумя компьютерами. И давайте не будем забывать безопасную часть его имени; SSH шифрует весь трафик для предотвращения таких атак, как захват и прослушивание, предлагая различные методы аутентификации и множество параметров конфигурации.

В этом руководстве для начинающих вы узнаете:

  • Основная концепция SSH
  • Настройка SSH-сервера (в системе, к которой вы хотите получить удаленный доступ)
  • Подключение к удаленному серверу по SSH с клиентской машины (вашего персонального компьютера)

Абсолютные основы SSH

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

Протокол SSH основан на архитектуре сервер-клиент. «Сервер» позволяет «клиенту» подключаться по каналу связи. Этот канал зашифрован, и обмен регулируется использованием открытых и закрытых ключей SSH.

Изображение предоставлено: SSH

OpenSSH — один из самых популярных инструментов с открытым исходным кодом, обеспечивающий функциональность SSH в Linux, BSD и Windows.

Для успешной настройки SSH вам необходимо:

  • Наличие компонентов сервера SSH на машине, которая действует как сервер. Это обеспечивается пакетом openssh-server .
  • Наличие клиентского компонента SSH на машине, с которой вы хотите подключиться к удаленному серверу. Это обеспечивается openssh-client , и большинство дистрибутивов Linux и BSD предустановлены с ним.

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

Как правило, у вас есть выделенная система, работающая в качестве сервера. Например, Raspberry Pi с сервером Ubuntu. Вы включаете SSH на Raspberry Pi, чтобы вы могли контролировать и управлять устройством со своего основного персонального компьютера, используя SSH в терминале.

Имея эту информацию, давайте посмотрим, как настроить SSH-сервер в Ubuntu.

Настройка SSH-сервера в Ubuntu

Настройка SSH несложная, для этого нужно выполнить всего несколько шагов.

Предпосылки

  • Пользователь с привилегиями sudo на сервере
  • Интернет-соединение для загрузки необходимых пакетов
  • По крайней мере, еще одна система в вашей сети. Это может быть другой компьютер в вашей локальной сети, удаленный сервер через Интернет или виртуальная машина, размещенная на вашем компьютере.

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

Шаг 1. Установите необходимые пакеты

Начнем с открытия окна терминала для ввода необходимых команд.

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

 обновление sudo apt && обновление sudo apt 

Пакет, необходимый для запуска SSH-сервера, предоставляется компонентом openssh-server из OpenSSH:

 sudo apt установить openssh-сервер 

Шаг 2. Проверка состояния сервера

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

 статус службы ssh 

Вы также можете использовать команды systemd:

 sudo systemctl статус ssh 

Вы должны увидеть что-то вроде этого с выделенным словом Active. Нажмите q , чтобы вернуться в командную строку.

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

 sudo systemctl включить --теперь ssh 

Шаг 3. Разрешение SSH через брандмауэр

Ubuntu поставляется с утилитой брандмауэра под названием UFW (UncomplicatedFirewall), которая представляет собой интерфейс для iptables , который, в свою очередь, управляет сетевыми правилами. Если брандмауэр активен, он может препятствовать подключению к вашему SSH-серверу.

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

 sudo ufw разрешить ssh 

Статус UFW можно проверить, запустив sudo ufw status .

В это время наш SSH-сервер запущен и работает, просто ожидая подключения от клиента.

Подключение к удаленной системе с вашего локального компьютера

В вашей локальной системе Linux уже должен быть установлен SSH-клиент. Если нет, вы всегда можете установить его, используя следующую команду в Ubuntu:

 sudo apt установить openssh-клиент 

Чтобы подключиться к вашей системе Ubuntu, вам нужно знать IP-адрес компьютера и использовать команду ssh , например:

 ssh [электронная почта защищена] 

Измените имя пользователя на вашего фактического пользователя в системе и адрес на IP-адрес вашего компьютера с Ubuntu.

Если вы не знаете IP-адрес вашего компьютера, вы можете ввести ip a в терминале сервера и проверить вывод. У вас должно получиться что-то вроде этого:

Использование «ip a» для поиска IP-адреса

Как видно здесь, мой IP-адрес 192.168.1.111 . Давайте попробуем подключиться, используя формат [email protected] .

 ssh [электронная почта защищена] 

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

Первое подключение к серверу

Немедленно SSH сообщает вам, что хост был добавлен навсегда, а затем запрашивает пароль, назначенный для имени пользователя. Введите пароль и нажмите Введите еще раз.

Хост добавлен, теперь введите пароль

И вуаля! Вы войдете в свою систему Ubuntu удаленно!

Связано!

Теперь вы можете работать в терминале удаленной системы как обычно.

Закрытие соединения SSH

Чтобы закрыть соединение, нужно просто набрать exit и оно сразу закроется, не спрашивая подтверждения.

Закрытие соединения с «выходом»

Остановка и отключение SSH в Ubuntu

Если вы хотите остановить службу SSH, вам понадобится эта команда:

 sudo systemctl остановить SSH 

Это остановит службу до тех пор, пока вы не перезапустите ее или пока система не будет перезагружена. Чтобы перезапустить его, введите:

 sudo systemctl начать SSH 

Теперь, если вы хотите отключить его запуск во время загрузки системы, используйте это:

 sudo systemctl отключить SSH 

Это не остановит работу службы во время текущего сеанса, а только загрузку во время запуска. Если вы хотите, чтобы он снова запускался во время загрузки системы, введите:

 sudo systemctl включить ssh 

Другие клиенты SSH

Инструмент ssh включен в большинство систем *nix, от Linux до macOS, но это не единственные существующие варианты, вот несколько клиентов, которые можно использовать из других операционных систем:

  • PuTTY — это бесплатный SSH-клиент с открытым исходным кодом, очень популярный среди пользователей Windows. Вы также можете установить PuTTY на Ubuntu. Он полон функций и очень прост в использовании. Если вы подключаетесь к своему компьютеру с Ubuntu со станции Windows, PuTTY — отличный вариант.
  • JuiceSSH — замечательный инструмент для пользователей Android. Если вы находитесь в пути и вам нужен мобильный клиент для подключения к вашей системе Ubuntu, я настоятельно рекомендую попробовать JuiceSSH. Он существует уже почти 10 лет, и его можно использовать бесплатно.
  • И, наконец, Termius доступен для Linux, Windows, macOS, iOS и Android. У него есть бесплатная версия, а также несколько премиальных опций. Если у вас много серверов и вы работаете с командами, делящимися соединениями, то Termius — хороший вариант для вас.

Завершение

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


Learn more

Только новые статьи

Введите свой e-mail

Видео-курс

Blender для новичков

Ваше имя:Ваш E-Mail: