Как пользоваться протоколом SSH в Ubuntu: установка и настройка

Содержание

Установка ssh Ubuntu 16.04

Как пользоваться протоколом SSH в Ubuntu: установка и настройка

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

Служба ssh позволяет получить доступ к терминалу удаленного компьютера и выполнить там все необходимые вам команды. При своей простоте она достаточно безопасна, чтобы использоваться для решения серьезных коммерческих задач, так и задач обычных пользователей. В этой статье мы рассмотрим как выполняется установка ssh Ubuntu 16.04, а также поговорим о начальной настройке 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 16.04 выполните:

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_config.factory-defaults

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

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 16.04 полностью завершена.

Выводы

Как пользоваться протоколом SSH в Ubuntu: установка и настройка

Как пользоваться протоколом SSH в Ubuntu: установка и настройка

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

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

Мы уже писали о нескольких способах, в частности, о программе TeamViewer и протоколе VNC.

Нюансы работы с протоколом SSH в Ubuntu.

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

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

Всё, что от вас будет требоваться — наличие компьютера с установленной операционной системой Ubuntu и интернет-подключение.

Что представляет собой протокол SSH

Протокол Secure Shell, известный также как SSH — специальный протокол для безопасного удалённого доступа к компьютеру через сетевое подключение.

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

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

Это полностью свободный продукт с открытой лицензией и полным набором самых необходимых функций.

Клиент для управления SSH-подключением уже включён в дистрибутив Ubuntu, вам нужно будет лишь установить и настроить серверные компоненты. Управление осуществляется через команды в терминале.

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

Поскольку протокол SSH клиент для его управления является общепринятым стандартом, установить его можно при помощи короткой команды в терминале Ubuntu. для этого запустите сам терминал, нажав комбинацию кнопок на клавиатуре Ctrl + Alt + T, после чего примените команду sudo apt-get install ssh. После подготовки к скачиванию утилита запросит, хотите ли вы продолжить.

переключите клавиатуру на русский язык и нажмите Д. На вашем компьютере с Ubuntu установка ssh будет завершена уже через пару секунд. Если вы желаете активировать автоматический запуск при включении системы, используйте для этого команду sudo systemctl enable sshd.

соответственно, если потом вы пожелаете убрать службу из автоматического запуска, вам понадобится команда sudo systemctl disable sshd.

Теперь можно проверить, как всё работает. Этого достаточно попробовать подключиться к локальному SSH server: ssh localhost. Утилита обязательно запросит пароль суперпользователя, а также предложит добавить введённый адрес в список разрешённых. Если у вас всё работает, как положено, вы увидите небольшое сообщение, заканчивающиеся уведомление о дате последнего подключения к адресу.

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

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

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

ssh vasya_pupkin@132.14.25.10

Что можно поменять в настройках SSH

  • Порт. По умолчанию утилита использует порт 22. Если его не изменить на другой, злоумышленник очень легко сможет получить доступ к вашей системе. Чтобы поменять номер порта, найдите строчку Port 22, и замените 22 на любой другой номер.
  • Протокол. Утилита SSH поддерживает два протокола для лучшей совместимости. Тем не менее, протокол 1 уже считается устаревшим и небезопасным, поэтому лучше всего пользоваться протоколом 2. Чтобы активировать его, найдите строчку #Protocol 2, удалите знак # в начале строки. В некоторых случаях может встречаться запись типа Protocol 1, 2. В таком случае вам нужно оставить только последнее значение.
  • Автоматический вход суперпользователя. Непонятно зачем, но по умолчанию эта функция активирована. Если её не отключить, то это может серьёзно повредить вашей безопасности. Найдите в конфигурационном файле строку PermitRootLogin и замените значение prohibit-password на no.
  • Авторизация по ключу. Подключение по ключу является наиболее надёжным, так как его практически невозможно взломать. Вам нужно найти строку PubkeyAuthentication и проверить, не отличается ли значение этого параметра от необходимого yes. Как создавать сам ключ, мы расскажем в следующем пункте. 
  • Доступ определённой группы пользователей. Если вы хотите, чтобы доступ к удалённому компьютеру могла получить определённая группа пользователей, а не кто попало, в конце добавьте несколько строк типа: AllowUsers User1, User2, User3 либо AllowGroups Group1, Group2, Group3, если дело касается групп. Вместо User и Group пропишите конкретные названия.
  • Разрешение запуска графического интерфейса приложений. Чтобы в дальнейшем запускать приложения с графическим интерфейсом на удалённом компьютере, вместо того чтобы довольствоваться командной строкой, в конфигурационном файле добавьте строчку, прописав X11Forwarding yes.

Минимально необходимые команды

  • Разрешение использования порта в брандмауэре. Если вы пользуетесь на своём компьютере с операционной системой Ubuntu брандмауэром для контроля соединений, примените команду, разрешающую использование интернет-подключения утилитой SSH: sudo ufw allow 2222. Вместо 2222 пропишите номер порта, который использовали лично вы.
  • Подключение к серверу. Немного выше мы уже писали, как можно подключаться к удалённому компьютеру, но не помешает напомнить. Введите команду вида ssh имя_пользователя@ip_адрес, где в первом параметре напишите логин для подсоединения к компьютеру, а во втором — его адрес в сети.
  • Выполнение удалённых команд. Допустим, вам нужно удалённо выполнить какую-либо команду на компьютере, к которому вы подключаетесь. Для этого к команде для подключения к компьютеру, указанной в предыдущем пункте, добавьте команда, которую нужно исполнить. например, вернёмся, к примеру, с Васей Пупкиным: ssh vasya_pupkin@132.14.25.10 ls. На удалённом компьютере будет выполнена команда ls.
  • Аутентификация на сервере с применением ключа. Поскольку пароль очень легко подобрать, наиболее надёжным и безопасным способом подключения к удалённому компьютеру через сеть будет с использованием специального ключа. Чтобы создать его, воспользуйтесь командой ssh-keygen -t rsa. Ответьте на все вопросы, которые у вас спросит утилита настройки. Затем отправьте созданный ключ на удалённый сервер: ssh-copy-id -i ~/.ssh/id_rsa.pub имя_пользователя@адрес_компьютера. Теперь, когда вы будете подключаться к этой удалённой машине, пароль запрашивается не будет, а будет использоваться персональный ключ. 
  • Передача файлов. Иногда необходимо передать какие-то файлы или документы на удалённый компьютер. Для этого вам понадобится следующая команда: scp /расположение/файла имя_пользователя@адрес_компьютера: расположение/папки. Вот конкретный образец на основе примера с Васей Пупкиным): scp /home/text.pdf vasya_pupkin@132.14.25.10:home/documents. Чтобы использовать сжатие файлов и пересылать целые папки, поможет команда tar czf — /home/user/file | ssh имя_пользователя@адрес_компьютера tar -xvzf -C /home/папка_пользователя/.
  • Запуск графического интерфейса программ на удалённом компьютере. К примеру, вы работаете из дому, но необходимое программное обеспечение установлено на вашем рабочем компьютере. Его можно запустить удалённо, а на вашем домашнем ПК будет отображаться лишь интерфейс программы, тогда как все вычисления и обработка данных будет происходить на рабочей машине. Если вы уже ранее активировали возможность запуска графического интерфейса программ, воспользуйтесь вот такой командой: ssh -XC имя_пользователя@адрес_компьютера «название_программы».

Заключение

Как пользоваться SSH? А также установка и настройка (Linux, Windows, macOS, Android, iOS)

Как пользоваться протоколом SSH в Ubuntu: установка и настройка

В этой статье расскажем вам как установить SSH в Linux, Windows и Mac, как настроить и как пользоваться! Все до мелочей! Будет интересно!

SSH — это популярный протокол для удаленного управления (администрирования) операционных систем на ядре Linux, Unix. Для новичков Linux не совсем понятно установка данного протокола, настройка и использование, чтобы это исправить было решено написать данную статью!

Одной из самых популярных операционных систем работающих на ядре Linux является Ubuntu, поэтому объяснять о ssh будем именно на ней.

Сначала все действия мы объясним на примере с Linux, а после и в Mac и Windows!

Установка SSH в ОС Linux

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

Сделать это очень просто, все необходимое уже есть в репозиториях (а-ля магазин программ), откройте терминал и введите команду:

sudo apt install openssh-server

То есть, необходима серверная часть, которая делает компьютер доступным в сети по протоколу ssh. Есть клиентская часть, которая уже установлена на ваш компьютер, и с помощью ее, вы подключаетесь к удаленному компьютеру.

Подключение по SSH (с паролем)

Откройте терминал и введите команду для подключения к удаленной машине:

ssh ИмяПользователя@IPадрес

Вначале пишем ssh, потом имя пользователя который есть на удаленной машине, далее знак @ (собачка) и IP адрес. Вот например:

ssh sasha@100.08.30.48

Как правило, ssh подключение происходит к порту 22, если вы его принудительно изменили, то нужно его указать. Для этого в конце пишем -p номер. Вот пример:

ssh sasha@100.08.30.48 -p 3040

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

Далее необходимо написать пароль пользователя. Его необходимо будет указывать каждый раз!

Создание SSH-ключа и подключение без пароля!

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

Как создать ключ SSH?

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

Создаем ключ за текущим компьютером:

ssh-keygen -t rsa

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

Далее вам предложат создать кодовое слово, также жмем Enter, чтобы пропустить!

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

Как добавить SSH-ключ на сервер?

Для этого вводим команду:

ssh-copy-id ИмяПользователя@IPадрес

Пишем команду ssh-copy-id, далее имя пользователя, который существует на удаленной машине, символ @ (собачка) и IP адрес. Вот например:

ssh-copy-id sasha@100.08.30.48

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

Теперь у вас есть возможность подключаться к серверу или другой машине без использования ключа, просто введя имя пользователя и пароль!

Клиент SSH Windows

Одной из самых популярных программ для работы c Linux серверами по SSH в Windows является программа Putty. Скачать данный SSH клиент Windows можно по данному адресу — putty.org.

Подключение по SSH по паролю в Windows

Подключение в Putty по SSH очень простое! Вводим IP адрес, если меняли порт, то указываем другой порт и нажимаем Open:и после подключения логин и пароль!

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

Создаем ключ

  1. Скачайте еще одну программу PuttyGen и запустите ее
  2. Нажмите кнопку «Generate» и вводите мышку по сторонам, для того чтобы создался ключ
  3. После создания ключа нажимаем «Save Privat Key» и указываем место сохранения, сохраняем с расширением .ppk
  4. Копируем весь ключ в буфер обмена с самой первой строки ssh-rsa:

Программу пока не закрываем и запускаем Putty для подключения

Перенос ключа

  1. Сохраняем наш Linux сервер в сессиях следующим образом:
    • Указываем ИмяПользователя@IPадрес
    • чуть ниже название подключения
  2. Подключаемся к серверу
  3. Переходим в директорию ./ssh: cd ~/.ssh/
  4. Далее с помощью редактора nano откройте документ authorized_keys для редактирования   nano authorized_keys

    и добавьте ранее сгенерированный ключ в данный файл и сохраните данные

  5. Закройте Putty SSH
  6. Откройте Putty, нажмите кнопку «Load»
  7. Далее в настройках SSH -> Auth укажите путь до файла ключа.ppk
  8. Нажмите Open, после чего запустится сеанс на сервере без использования ключа!

Mac SSH Client

Так как macOS основана на UNIX системе, то подключатся по ssh можно прямо из терминала!

Если есть желание не использовать пароль, то необходимо вначале установить Homebrew:

/usr/bin/ruby -e «$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)»

и далее все как в Linux.

Есть также удобный mac ssh client — Termius.

SSH клиент android и iOS

Наиболее удобным клиентом SSH для iOS и Android является приложение Termius!

Для Android: 

Для iOS: 

Передача и скачивание файлов по SSH (SCP)

Для того чтобы закачать файл с локальной машины на сервер по ssh в Linux и macOS:

scp file1.tar root@ip_adress:/home/dir

Копирование файла с сервера на локальный компьютер Linux или macOS:

scp userName@ip_adress:/home/file1.tar /var/www/

C сервера, на сервер:

scp user@server_ip1:/home/file.txt user@server_ip2:/home/

Для Windows

Для перемещения файлов по SSH в Windows используется pscp.

pscp.exe file.zip root@ip_server:/var/www/

Настройка SSH

Если необходимо добавить вход в SSH сразу по root:

  • Как настроить вход по Root в SSH 

Смена порта SSH

Так как по умолчанию работа ssh настроена на порту 22, то пользоваться сервером становится не безопасно. Поэтому стоит сменить порт!

С помощью nano отредактируйте документ sshd_config, введите команду:

sudo nano /etc/ssh/sshd_config

и поменяйте значения Port на необходимые:

# What ports, IPs and protocols we listen for Port 22

Вход только по ключу SSH:

С помощью nano отредактируйте документ sshd_config, введите команду:

sudo nano /etc/ssh/sshd_config

Поменяйте значения PasswordAuthentication с yes на no:

Ubuntu SSH — установка и настройка

Как пользоваться протоколом SSH в Ubuntu: установка и настройка

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

Как установить server в Ubuntu

Дело в том, что по умолчанию в операционной системе Ubuntu клиент уже установлен. Потому главное — это установка программы server OpenSSH на компьютере и ее последующая настройка. Для того, чтобы установить сервер, откройте терминал и введите строку: sudo apt-get install openssh-server.

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

Эта программа находится в дистрибутивах Ubuntu по умолчанию, потому server OpenSSH пользуется большой популярностью среди юзеров данной ОС.

Настройка 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 окончательно пропадет.

Следующий важный шаг — это активация усиленной аутентификации пользователей. Авторизация путем ввода пароля — это уже устарелый и неэффективный способ защиты аккаунтов.

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

То есть вам лучше использовать Public Key Authentication и поставить yes возле этого пункта в файле config.

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

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

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

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

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

Аутентификация будет проходить в автоматическом, фоновом режиме, что весьма удобно и при этом безопасно.

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

Как настроить ключи SSH в Ubuntu 18.04 | DigitalOcean

Как пользоваться протоколом SSH в Ubuntu: установка и настройка

SSH (secure shell, безопасная оболочка) представляет собой шифрованный протокол для администрирования и взаимодействия между серверами. Во время работы с сервером Ubuntu вы, скорее всего, будете проводить большую часть времени в вашем терминале, подключенном через SSH к вашему серверу.

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

Шаг 1 — Создание пары ключей RSA

Сперва создадим пару ключей на клиентской машине (обычно, это ваш компьютер):

По умолчанию ssh-keygen создаёт 2048-битную пару ключей RSA, которая достаточно безопасна для большинства сценариев использования (вы можете также добавить к этой команде флаг -b 4096 для получения 4096-битный ключей).

После ввода этой команды вы должны увидеть следующий вывод:

Вывод
Generating public/private rsa key pair.Enter file in which to save the key (/your_home/.ssh/id_rsa):

Нажмите Enter для сохранения пары ключей в директорию .ssh/ внутри вашей домашней директории или задайте другую директорию.

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

Вывод
/home/your_home/.ssh/id_rsa already exists.Overwrite (y/n)?

Если вы выберете перезаписать ключи на диск, вы не сможете использовать старые ключи для аутентификации. Будьте очень осторожны при выборе yes, это решение нельзя будет отменить.

Вы должны увидеть следующий вывод:

Вывод
Enter passphrase (empty for no passphrase):

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

Вы должны увидеть следующий вывод:

Вывод
OutputYour identification has been saved in /your_home/.ssh/id_rsa.Your public key has been saved in /your_home/.ssh/id_rsa.pub.The key fingerprint is:a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_hostThe key's randomart image is:+—[ RSA 2048]—-+| ..o || E o= . || o. o || .. || ..S || o o. || =o.+. ||. =++.. ||o=++. |+——————+

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

Шаг 2 — Копирование публичного ключа на сервер Ubuntu

Самым быстрым способом скопировать ваш публичный ключ на машину с Ubuntu — использовать утилиту ssh-copy-id. Поскольку этот метод невероятно прост, он рекомендуется для использования в первую очередь.

Если по какой либо причине использование ssh-copy-id невозможно, вы можете использовать один из двух альтернативных методов, описанных далее (копирование в входом по SSH с использованием пароля и ручное копирование ключа).

Копирование ключа с использованием ssh-copy-id

Утилита ssh-copy-id доступна по умолчанию во многих операционных системах, поэтому, скорее всего, она доступна и на вашей локальной машине. Для использования этого метода копирования ключа вам необходимо иметь доступ к своему серверу по SSH с использованием пароля.

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

Синтаксис команды выглядит следующим образом:

  • ssh-copy-id username@remote_host

Вы можете увидеть вывод следующего вида:

Вывод
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.Are you sure you want to continue connecting (yes/no)? yes

Это означает, что ваш локальный компьютер не узнал удалённый хост. Это случается, когда вы пытаетесь подключиться к новому хосту в первый раз. Напечатайте «yes» и нажмите ENTER для продолжения.

Далее утилита будет искать в директории вашего локального пользователя файл ключа id_rsa.pub, созданный нами ранее. Если файл ключа будет успешно обнаружен, утилита запросит пароль для входа на удалённый хост:

Вывод
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed — if you are prompted now it is to install the new keysusername@203.0.113.1's password:

Введите пароль (при вводе он не будет отображаться из соображений безопасности) и нажмите ENTER. Утилита зайдёт на удалённый хост, используя данные аккаунта, пароль для которого вы ввели. Далее утилита скопирует содержимое файла публичного ключа из ~/.ssh/id_rsa.pub в файл authorized_keys в поддиректории ~/.ssh домашней директории вашего пользователя на удалённом хосте.

Вы должны увидеть следующий вывод:

Вывод
Number of key(s) added: 1 Now try logging into the machine, with: «ssh 'username@203.0.113.1'»and check to make sure that only the key(s) you wanted were added.

Теперь ваш публичный ключ id_rsa.pub загружен на удалённый хост. Вы можете перейти к Шагу 3.

Копирование публичного ключа через SSH

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

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

Кроме этого, нам потребуется убедиться, что директория ~/.ssh существует, а также имеет корректные права доступа для используемого нами аккаунта пользователя.

Далее мы сможем отправить содержимое файла ключа в файл authorized_keys внутри этой директории. Мы будем использовать синтаксис >> для добавление данных в конец файла вместо перезаписи содержимого файла. Это позволит нам добавить ключ без удаления ранее добавленных ключей.

Команда выглядит следующим образом:

  • cat ~/.ssh/id_rsa.pub | ssh username@remote_host «mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys»

Вы можете увидеть вывод следующего вида:

Вывод
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.Are you sure you want to continue connecting (yes/no)? yes

Это означает, что ваш локальный компьютер не узнал удалённый хост. Это случается, когда вы пытаетесь подключиться к новому хосту в первый раз. Напечатайте «yes» и нажмите ENTER для продолжения.

Далее вам будет предложено ввести пароль аккаунта пользователя на удалённом хосте:

Вывод
username@203.0.113.1's password:

После ввода пароля содержимое вашего файла публичного ключа id_rsa.pub будет скопировано в конец файла authorized_keys на удалённом хосте. Если всё прошло успешно, вы можете перейти к Шагу 3.

Копирование публичного ключа вручную

Если у вас нет доступа к вашей удалённой машине по SSH с использованием пароля, вам придётся проделать описанный выше процесс вручную.

Мы вручную добавим содержимое вашего файла id_rsa.pub в конец файла ~/.ssh/authorized_keys на удалённой машине.

Для отображения содержимого файла id_rsa.pub введите следующую команду на вашей локальной машине:

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

Вывод
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+z5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test

Зайдите на вашу удалённую машину любым доступным для вас способом.

Далее нам необходимо убедиться, что директория ~/.ssh существует. Следующая команда создаст директорию, если её не существует или не сделает ничего, если директория была создана ранее:

Теперь вы можете создать или отредактировать файл authorized_keys внутри этой директории. Вы можете добавить содержимое файла id_rsa.pub в конец файла authorized_keys, при необходимости создав его, следующей командой:

  • echo строка_публичного_ключа >> ~/.ssh/authorized_keys

В команде выше замените строка_публичного_ключа на вывод команды cat ~/.ssh/id_rsa.pub, которую вы выполнили на своей локальной машине. Строка должна начинаться с ssh-rsa AAAA….

Далее убедимся, что директория ~/.ssh и файл authorized_keys имеют подходящие права доступа:

Эта команда удаляет права доступа для «group» и «other» для директории ~/.ssh/.

Если вы используете аккаунт root для настройки ключей для аккаунта пользователя, важно, чтобы директория ~/.ssh принадлежала этому самому пользователю, а не пользователю root:

  • chown -R sammy:sammy ~/.ssh

В нашем руководстве мы используем пользователя с именем sammy, вам же следует использовать имя своего пользователя в команде выше.

Теперь мы можем попробовать аутентифицироваться на нашем Ubuntu сервере без пароля.

Шаг 3 — Аутентификация на сервере Ubuntu с использованием ключей SSH

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

Процесс входа выглядит так же:

Если вы заходите на удалённый хост по SSH в первый раз, вы можете увидеть вывод следующего вида:

Вывод
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.Are you sure you want to continue connecting (yes/no)? yes

Это означает, что ваш локальный компьютер не узнал удалённый хост. Напечатайте «yes» и нажмите ENTER для продолжения.

Если при создании пары ключей вы не задали ключевую фразу (passphrase), вы будете залогинены автоматически.

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

После аутентификации откроется новая сессия оболочки (shell session) на удалённом хосте от имени используемого вами удалённого аккаунта пользователя.

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

Шаг 4 — Отключение аутентификации по паролю на вашем сервере

Если вам удалось войти в ваш удалённый аккаунт на удалённом хосте по SSH без ввода пароля, вы успешно настроили аутентификацию по ключу SSH для вашего аккаунта. Однако возможность входить на сервер с использованием пароля всё есть активна, что означает, что ваш сервер уязвим для атак с перебором пароля (brute-force attacks).

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

Как только вы убедитесь, что аккаунт вашего удалённого пользователя имеет привилегии администратора, войдите на сервер с использованием аутентификации по ключу SSH, используя либо аккаунт root, либо аккаунт пользователя с привилегиями sudo. Далее откройте конфигурационный файл демона SSH:

  • sudo nano /etc/ssh/sshd_config

Внутри файла найдите директиву PasswordAuthentication. Она может быть закомментирована. Раскомментируйте её при необходимости и установите её значение в «no». Это отключит возможность входа на сервер по паролю.

/etc/ssh/sshd_config

…PasswordAuthentication no…

Сохраните и закройте файл нажав CTRL + X, затем Y для подтверждения сохранения файла, а далее ENTER для выхода из текстового редактора nano. Для применения внесённых изменений нам необходимо перезапустить сервис sshd:

  • sudo systemctl restart ssh

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

После проверки работоспособности SSH соединения, вы можете закрыть все открытые сессии с сервером.

Теперь демон SSH на вашем сервере с Ubuntu работает только с ключами SSH. Аутентификация по паролю полностью отключена.

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

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.