Как настроить аутентификацию по ключу SSH в Linux

Порой появляется потребность зайти с одного ПК на другой, при этом чтобы можно было не только просматривать данные, но и совершать какие-то действия. Для таких задач идеально подходит протокол SSH, особенно в Ubuntu. Он позволяет безопасно объединить сервер и клиент и при этом установка и настройка не займет у вас много времени, если действовать по инструкции.

Добавление ключа.

Для успешного подключения к серверу следует прописать полученный открытый ключ в файл authorized_keys расположенном на сервере по пути:

/home/<имя_пользователя>/.ssh

В данном случае, имя пользователя administrator.

В *nix-подобный операционных системах экспорт открытого ключа на сервер выполняется командой:

cat ~/.ssh/id_ | ssh -l remonet_user_name «cat >> .ssh/authorized_keys»

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

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

Добавление ключа.

Поделиться Оценить

Средняя оценка: 4.9 Оценили: 2220140 Минск ул. Домбровская, д. 9 +375 (173) 88-72-49

  • 700 300 ООО «ИТГЛОБАЛКОМ БЕЛ»220140 Минск ул. Домбровская, д. 9 +375 (173) 88-72-49
  • 700 300 ООО «ИТГЛОБАЛКОМ БЕЛ»
  • 700 300
  • Как сделать ваши соединения Secure Shell еще более безопасными

    Secure Shell является наиболее широко используемым средством входа на удаленный сервер Linux (или компьютер). Используя этот инструмент, вы получаете доступ к командной строке на удаленном компьютере через безопасный туннель. Из коробки вам будет предложено ввести пароль удаленного пользователя. Хотя это все еще более безопасно, чем использование более старых методов (таких как telnet), его можно сделать еще более безопасным с помощью SSH Key Authentication.

    Что такое аутентификация по ключу?

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

    Как сделать ваши соединения Secure Shell еще более безопасными

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

    Давайте заставим это работать.

    Генерация пары ключей SSH

    Первое, что нужно сделать, это создать пару ключей SSH. Для этого выполните следующие действия:

    1. Откройте окно терминала на рабочем столе.

      Выполните команду:

      SSH-кейген

      Присвойте ключу имя и местоположение (используйте настройки по умолчанию, используя Enter/Return на клавиатуре).

    2. Введите и подтвердите ключевую фразу для ключа (убедитесь, что она является надежной и уникальной)

    Теперь у вас есть пара ключей SSH. Эти два файла будут найдены в ~/.ssh и будут называться:

    Как сделать ваши соединения Secure Shell еще более безопасными
    • id_rsa – закрытый ключ
    • id_ – открытый ключ.

    Скопируйте ваш открытый ключ на удаленный компьютер

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

    ssh-copy-id USER @ REMOTE_IP

    Где USER – это имя пользователя на удаленном компьютере, а REMOTE_IP – это IP-адрес удаленного компьютера.

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

    Как сделать ваши соединения Secure Shell еще более безопасными

    Тестирование соединения

    Проверьте соединение, введя команду:

    ssh USER @ REMOTE_IP

    Где USER – это имя пользователя на удаленном компьютере, а REMOTE_IP – это IP-адрес удаленного компьютера. Вместо запроса пароля пользователя вам будет предложено ввести ключевую фразу пары ключей SSH. После того, как вы ввели правильную ключевую фразу, вам будет разрешен доступ к удаленному компьютеру. Поздравляем, SSH Key Authentication запущена и работает.

    Читайте также:  Как изменить язык в Гугл Хром в Windows или на Android

    Отключение аутентификации по паролю

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

    Как сделать ваши соединения Secure Shell еще более безопасными

    Чтобы отключить аутентификацию по паролю, войдите на удаленный компьютер и введите команду:

    sudo nano/etc/ssh/sshd_config

    В этом файле найдите строку:

    #PasswordAuthentication yes

    Измените эту строку на:

    PasswordAuthentication no

    Как сделать ваши соединения Secure Shell еще более безопасными

    Сохраните и закройте файл. Перезапустите SSH с помощью команды:

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

    Теперь, если вы попытаетесь войти на эту удаленную машину с любого рабочего стола (или сервера), который не содержит закрытый ключ, доступ будет запрещен.

    Поздравляем, вы успешно сделали вход в удаленную систему Linux более безопасным с помощью SSH.

    Установка ssh Ubuntu

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

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

    Что такое SSH?

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

    За поддержку протокола SSH в Linux отвечает набор программного обеспечения OpenSSH. Это открытая реализация этого протокола, которая предоставляет все необходимые возможности. В состав пакета OpenSSH входят утилиты для установки соединения, передачи файлов, а также сам ssh сервер.

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

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

    Поэтому для установки откройте терминал с помощью сочетания клавиш Ctrl+Alt+T и выполните команду:

    sudo apt install openssh-server

    Будет загружено несколько пакетов, а когда установка ssh сервера Ubuntu завершится, программа будет готова к работе. Если вы хотите чтобы служба запускалась автоматически нужно добавить его в автозагрузку. Поэтому чтобы включить ssh Ubuntu выполните:

    sudo systemctl enable sshd

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

    sudo systemctl disable sshd

    Что касается клиента ssh, то он уже установлен в системе по умолчанию. Сейчас вы можете попробовать подключиться к локальному ssh серверу просто набрав:

    ssh localhost

    В одной из предыдущих статей мы рассматривали что означает адрес 0.0.0.0, сейчас вы можете убедиться что в пределах этой машины он значит локальный адрес:

    ssh 0.0.0.0

    Точно таким способом вы можете получить ssh доступ ubuntu к любому другому компьютеру из сети. Для этого достаточно указать вместо localhost его ip адрес и имя пользователя в таком формате:

    $ ssh имя_пользователя@ip_адрес

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

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

    Перед тем как вносить изменения в этот конфигурационный файл рекомендуется сделать его резервную копию, для этого можете использовать такую команду:

    sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_

    Дальше вы можете перейти к настройке конфигурационного файла:

    sudo vi /etc/ssh/sshd_config

    Первым делом желательно сменить порт, на котором работает ssh, возможный злоумышленник не знал включен ли у вас этот сервис. Найдите в конфигурационном файле строчку Port и замените ее значение на любое число, например, Port 2222:

    По умолчанию вход от имени суперпользователя включен, рекомендуется отключить такую возможность. Для этого найдите строчку PermitRootLogin и замените ее значение на no:

    Чтобы разрешить аутентификацию по ключу, а не по паролю найдите строку PubkeyAuthentication и убедитесь, что ее значение yes.

    После того как все настройки будут завершены, сохраните изменения нажав :w и перезапустите службу ssd:

    sudo systemctl restart ssh

    Более подробно про настройку и использование различных тонкостей ssh рассказано в статье как использовать ssh.

    Читайте также:  Лучшие программы для удаленного доступа к компьютеру

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

    ssh -p 2222 localhost 

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

    sudo ufw allow 2222

    Даже если служба ssh находится на порту по умолчанию, его тоже нужно открыть в брандмауэре если вы собираетесь подключаться к компьютеру через интернет:

    sudo ufw allow 22

    Настройка ssh Ubuntu полностью завершена.

    Настройка server SSH в Ubuntu

    Теперь самое главное – вам нужно правильно настроить server OpenSSH перед тем, как включить его и пускать клиент по защищенному протоколу на хост. Неправильная настройка может привести к понижению уровня безопасности и ваш сервер могут взломать.

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

    То, как будет работать сервер, прописано в файле конфигураций config. В частности, в нем прописаны требования, каким должен соответствовать клиент для прохода через защиту SSH. Для начала стоит определиться с пользователем, через которого вы будете управлять системой. По умолчанию установлен пользователь root. Но оставлять эту настройку таковой небезопасно – у root пользователя слишком много прав и вы случайно можете навредить системе, потому лучше запретить его подключение к серверу.

    Вам нужно переустановить на сервер другой аккаунт пользователя, чтобы вы могли безопасно пользоваться другим компьютером через SSH. Для этого вам нужно будет вместо root добавить другого юзера при помощи командной строки: adduser имя_пользователя. Но и этого недостаточно – все-таки иногда вам нужен будет пользователь root. Тогда сделайте добавленного юзера наполовину суперадминистратором, чтобы он мог временно получать root права. Для этого зайдите в root и пропишите следующую строку: gpasswd -a имя_пользователя sudo. Таким образом вы добавите нового юзера в группу пользователей sudo, у которых наибольший уровень доступа.

    Если вы планируете при помощи SSH создать публичный сервер и на компьютер будет заходить ни один клиент, тогда лучше вообще убрать root пользователя. Если же вы уверены в своих способностях и не планируете публиковать хост, тогда можете сделать клиент суперадминистратором и защитить его паролем. Но иногда после этого появляется сообщение об ошибке: access denied. Надпись access denied после попытки зайти в аккаунт суперпользователя при помощи ввода пароля может означать какое-то противоречие в файле конфигураций config.

    Чтобы устранить access denied, вам стоит хорошенько просмотреть все ли в порядке в настройках. Самая частая причина, почему появляется access denied – это активация опции авторизации по паролю и для обычных пользователей, и для root. Чтобы убрать access denied, поменяйте PermitRootLogin вместо yes на without-password. А затем пропишите PermitRootLogin yes. Далее перезапустите сервер (service ssh restart) и сообщение access denied окончательно пропадет.

    Чтобы войти на сервер путем подтверждения публичного ключа, вам нужно его сначала сгенерировать. В Ubuntu очень удобно генерировать ключи, так как для этого не нужно скачивать какие-то дополнительные программы – достаточно забить в терминале ssh-keygen. После этого появится сообщение с информацией о расположении созданного ключа. Он будет находится в папке .ssh. После этого система запросит у вас пароль, но настоятельно рекомендуется оставить его пустым – иначе потом будете вводить его каждый раз при осуществлении какой-либо операции.

    Следующим шагом вам нужно добавить сгенерированный публичный ключ в список доверенных на сервере. Для начала вам нужно будет скопировать публичный ключ. Он находится в файле формата .pub в папке .ssh. Скопируйте его и зайдите на сервер. На сервере так же должна быть папка .ssh. Если ее нет, то придется создать самостоятельно. А после этого, используя стандартный текстовый редактор, создайте файл authorized_keys. Именно в него вам нужно будет поместить публичный ключ. После этого вы сможете заходить на сервер без какого-либо подтверждения. Аутентификация будет проходить в автоматическом, фоновом режиме, что весьма удобно и при этом безопасно.

    В целом, на этом настройка протокола SSH заканчивается! Разве что еще можете изменить порт 22 на другой.

    Настройка OpenSSH в Windows для авторизации по ключам

    Теперь открытый ключ, который вы сгенерировали на клиенте, нужно скопировать на ваш SSH сервер (в этом примере это удаленный компьютер с Windows 10 1903 и настроенной службой OpenSSH).

    Мы уже подробно рассматривали настройку OpenSSH сервера в Windows.

    Скопируйте файл id_ в каталог .ssh профиля пользователя, под которым вы будете подключаться к SSH серверу. Например, у меня в Windows 10 создан пользователь admin, значит я должен скопировать ключ в файл C:\Users\admin\.ssh\authorized_keys.

    Читайте также:  11 лучших дистрибутивов Linux для программиста

    Можно скопировать ключ на SSH сервер с клиента с помощью SCP:

    scp C:\Users\youruser\.ssh\id_ [email protected]:c:\users\admin\.ssh\authorized_keys

    Теперь вы можете подключиться к SSH серверу без ввода пароля пользователя. А если вы не задали пароль (passphrase) для закрытого ключа, вы сразу автоматически подключитесь к вашему удаленному серверу Windows.

    Для подключения через SSH к удаленному хосту используется следующая команда:

    ssh (username)@(имя или IP адрес SSH сервера)

    Например,

    ssh [email protected]

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

    Если вы не хотите использовать ssh-agent для управления ключами, вы можете указать путь к закрытому ключу, который нужно использовать для SSH аутентификации:

    ssh [email protected] -i «C:\Users\youruser\.ssh\id_rsa»

    Если вы не смогли подключиться к вашему SSH серверу по RSA ключу, и у вас все равно запрашивается пароль, скорее всего пользователь, под которым вы подключаетесь, входит в группу локальных администраторов сервера (SID группы S-1-5-32-544). Об этом далее.

    Как установить и настроить сервер OpenSSH на Ubuntu

    В этой статье мы покажем вам, как установить, настроить и использовать OpenSSH на Ubuntu

    SSH (Secure Shell) является протоколом, который позволяет получить надежный доступ к удаленной машине в то время как OpenSSH представляет собой набор инструментов на основе протокола SSH.

    Сегодня мы покажем вам, как установить и настроить OpenSSH на Linux VPS с помощью Ubuntu в качестве операционной системы.

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

    Во-первых, давайте установим OpenSSH. Обновите индексы пакетов с помощью следующей команды:

    sudo apt-get update

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

    sudo apt-get install openssh-server

    Обратите внимание, что пакет сервера OpenSSH может быть уже установлен в вашей системе, как часть процесса первоначальной установки сервера. Кроме того, вы можете установить клиентское приложение OpenSSH с помощью следующей команды:

    sudo apt-get install openssh-client

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

    Перед внесением каких – либо изменений в конфигурации OpenSSH, хорошо знать, как управлять услугой OpenSSH на вашем Ubuntu VPS. Для запуска службы вы можете использовать следующую команду:

    sudo systemctl start

    Чтобы остановить службу, вы можете использовать:

    sudo systemctl stop

    Чтобы перезапустить службу, вы можете использовать:

    sudo systemctl restart

    Чтобы проверить состояние службы вы можете использовать:

    sudo systemctl status

    Чтобы включить службу на время загрузки системы вы можете использовать:

    sudo systemctl enable

    Чтобы отключить службу на время загрузки системы вы можете использовать:

    sudo systemctl disable

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

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

    sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_

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

    Port 22

    Измените ее на что-то другое. Например 2022

    Port 2022

    Сохраните файл и закройте его. Затем перезапустите службу, чтобы изменения вступили в силу.

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

    Безопасный OpenSSH на Ubuntu

    Одним из рекомендуемых способов защиты сервера при использовании OpenSSH, это отключить логин Root . Во- первых, создайте нового пользователя SUDO на сервере Ubuntu, а затем отредактируйте конфигурационный файл сервера OpenSSH. Найдите следующую строку:

    #PermitRootLogin yes

    и измените его на:

    PermitRootLogin no

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

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

    Дополнительные опции конфигурации вы можете проверить с помощью страницы man:

    man sshd_config

    или вы можете посетить страницы вручную OpenSSH на