Ssh linux что это такое и как это работает?

Ssh linux что это такое и как это работает? Хостинг
Содержание
  1. Disabling Password Authentication
  2. Отключение аутентификации с помощью пароля на сервере
  3. Системные компоненты и данные
  4. How Does SSH Work?
  5. Прочее
  6. Опции для клиентской стороны
  7. Как установить OpenSSH
  8. Алиасы
  9. Полезные алиасы
  10. Создание ключей SSH
  11. Client-Side Options
  12. Использование ключа
  13. Генерирование ключа и подключение на Windows
  14. Генерирование ключа и подключение на Linux и macOS
  15. Отключение запроса пароля
  16. Навигация и управление файловой системой
  17. How To Configure SSH
  18. Управление пользователями
  19. Аутентификация на сервере с использованием ключей SSH
  20. Редактирование прав
  21. Проверка службы SSH на сервере
  22. Core Syntax
  23. Связанные статьи
  24. Как встроить открытый ключ при создании сервера
  25. Работа с текстом
  26. Как просмотреть журнал подключений пользователей SSH
  27. Управление службой OpenSSH
  28. Выполнение входа через SSH с использованием ключей
  29. Как работает аутентификация с помощью ключей?
  30. Как передать ваш публичный ключ на сервер
  31. Использование пароля
  32. Настройка SSH
  33. Как работает SSH?

Disabling Password Authentication

If you have created SSH keys, you can enhance your server’s security by disabling password-only authentication. Apart from the console, the only way to log into your server will be through the private key that pairs with the public key you have installed on the server.

Warning: Before you proceed with this step, be sure you have installed a public key to your server. Otherwise, you will be locked out!

Locate the line that reads Password Authentication, and uncomment it by removing the leading #. You can then change its value to no:

PubkeyAuthentication yes
ChallengeResponseAuthentication no

After making your changes, save and close the file.

You can now reload the SSH daemon:

Password authentication should now be disabled, and your server should be accessible only through SSH key authentication.

Отключение аутентификации с помощью пароля на сервере

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

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

sudo nano /etc/ssh/sshd_config

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

На компьютерах под управлением Ubuntu или Debian можно использовать следующую команду:

sudo service ssh restart

На компьютерах под управлением CentOS/Fedora этот демон носит имя sshd:

sudo service sshd restart

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

Системные компоненты и данные

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

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

Ssh linux что это такое и как это работает?

du — показывает, сколько весит конкретный элемент файловой системы. Чтобы узнать, сколько места занимает timeweb.html на моем рабочем столе, введу в терминал следующее: du ~/Desktop/timeweb.html. По пути столкнусь с той же проблемой, что сталкивался при работе с df. Опять эти блоки. Меняем на мегабайты с помощью ключа -h. Получится du -h ~/Desktop/timeweb.html

free — это df для оперативной памяти. Показывает, сколько свободно и сколько используется.

uname — рассказывает подробности о системе. Обычно используется с аргументом -a, чтобы вывести сразу все данные, включая время и разрядность установленной операционной системы. А вообще можно по отдельности доставать что-то конкретное – имя ядра через опцию -s, имя ноды через опцию -n, тип процессора через опцию -p.

Ssh linux что это такое и как это работает?

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

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

How Does SSH Work?

SSH works by connecting a client program to an ssh server, called sshd.

In the previous section, ssh was the client program. The ssh server was already running on the remote_host that we specified.

On nearly all Linux environments, the sshd server should start automatically. If it is not running for any reason, you may need to temporarily access your server through a web-based console, or local serial console.

The process needed to start an ssh server depends on the distribution of Linux that you are using.

On Ubuntu, you can start the ssh server by typing:

That should start the sshd server and you can then log in remotely.

Прочее

Это бонус для развлечения. Шутка от разработчиков Linux, не несущая пользы.

Ssh linux что это такое и как это работает?

cowsay -l — демонстрирует всех животных, которые могут с вами пообщаться в том случае, если вам почему-то не приглянулась корова.

sudo название менеджера пакетов install fortunes fortune-mod fortunes-min fortunes-ru — учит животных говорить на русском.

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

Опции для клиентской стороны

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

Некоторые из них могут быть необходимы при наличии определенных настроек конфигурации sshd на удаленном хосте.

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

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

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

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

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

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

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

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

В Debain и производных (Kali Linux, Linux Mint, Ubuntu), программы OpenSSH можно установить по отдельности, например, имеются пакеты для клиента и для сервера openssh-client и openssh-server. Либо можно установить метапакет ssh, который содержит и клиентскую, и серверную часть.

sudo apt install ssh

В Arch Linux клиент и сервер OpenSSH собраны в один пакет. Для установки OpenSSH в Arch Linux выполните:

sudo pacman -S openssh

В других дистрибутивах Linux поищите пакет openssh или ssh.

Алиасы

Алиасы — сокращенные формы команд. Заметно экономят время и улучшают восприятие. Особенно когда в алиасах прячутся громоздкие скрипты. backupmsql выглядит проще и легче запоминается, чем mysqldump -u имя учетной записи -p пароль от учетной записи -D название базы данных < путь до базы данных.

Процедура создания алиаса сводится к следующему синтаксису: alias сокращение=‘команда, которую надо сократить’

Например: alias supd=‘sudo apt-get update’. Теперь обновлять информацию о пакетах можно сокращенной версией команды.

Полезные алиасы

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

alias h=‘history’ — для вызова истории вводом одной буквы. Алиас можно немного усложнить, добавив какое-либо числовое значение. Допустим, сделать alias h25=‘history 25’, чтобы вывести в консоль сразу 25 предыдущих команд.

alias diff=‘colordiff’ — добавляет цвет, чтобы элементы сравнения легче было распознавать.

alias edit=’sudo nano’ — упрощает доступ к редактированию текста от имени администратора.

alias ping=‘ping -c 5’ — уменьшает количество пакетов, передаваемых через Ping, до 5 штук.

alias update=’sudo apt-get update && sudo apt-get upgrade’ — сокращение, помогающее сначала обновить информацию о пакетах, а потом установить свежие версии с помощью одной короткой команды вместо двух больших. Только в случае с другими дистрибутивами надо скорректировать обе, заменив наименования пакетных менеджеров. Для Fedora это будет dnf, к примеру.

Создание ключей SSH

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

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

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

Утилита предложит вам выбрать место размещения генерируемых ключей. По умолчанию ключи хранятся в каталоге ~/.ssh внутри домашнего каталога вашего пользователя. Закрытый ключ будет иметь имя id_rsa, а соответствующий открытый ключ будет иметь имя id_rsa.pub.

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

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

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

Читайте также:  5 Free Websites To Create Free MySQL Database Online

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

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

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

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

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

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

Client-Side Options

There are a number of optional flags that you can provide when connecting through SSH.

Some of these may be necessary to match the settings in the remote host’s sshd configuration.

For instance, if you changed the port number in your sshd configuration, you will need to match that port on the client-side by typing:

Note: Changing your ssh port is a reasonable way of providing security through obscurity. If you are allowing ssh connections to a widely known server deployment on port 22 as normal, and you have password authentication enabled, you will likely be attacked by many automated login attempts. Exclusively using key-based authentication and running ssh on a nonstandard port is not the most complex security solution you can employ, but should reduce these to a minimum.

If you only want to execute a single command on a remote system, you can specify it after the host like so:

You will connect to the remote machine, authenticate, and the command will be executed.

As we said before, if X11 forwarding is enabled on both computers, you can access that functionality by typing:

Providing you have the appropriate tools on your computer, GUI programs that you use on the remote system will now open their window on your local system.

Использование ключа

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

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

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

Для удобства используем программу PuTTy. Вместе с ней устанавливается утилита PuTTYgen — в ней можно сгенерировать публичный и приватный ключи.

  • Запустите программу PuTTYgen.
  • Нажмите на кнопку Gengerate.
  • Водите курсором мышки по рабочему столу, чтобы сгенерировать случайные значения ключей.
  • Нажмите на кнопку Save private key, чтобы сохранить на жестком диске приватный ключ. Место хранения может быть любым — его нужно указать в параметрах PuTTY. Сделаем это позже.
  • Скопируйте публичный ключ в буфер обмена (Ctrl + C) и закройте генератор ключей.

Ssh linux что это такое и как это работает?

Теперь нужно перенести публичный ключ на сервер. Запустите программу PuTTY и подключитесь к серверу с помощью пароля. Затем последовательно введите следующие команды:

chmod 0700 ~/.ssh

chmod 0644 ~/.ssh/authorized_keys

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

Вернитесь в настройки PuTTY. Перейдите в раздел Connection — SSH — Auth. Нажмите на кнопку Browse и укажите путь к приватному ключу, который вы ранее сохранили на жестком диске.

Ssh linux что это такое и как это работает?

Генерирование ключа и подключение на Linux и macOS

Теперь посмотрим, как подключиться через SSH ключи на Linux и macOS.

  • Запустите терминал на локальном компьютере.
  • Выполните команду ssh-keygen, чтобы сгенерировать ключи.
  • Нажмите на Enter, чтобы сохранить ключи.

Генератор предложит также задать кодовую фразу для ключа. Это дополнительная мера безопасности: если кто-то получит доступ к вашей локальной машине, то все равно не сможет подключиться к серверу через SSH. Минус один — вам тоже придется постоянно вводить ключевую фразу. Можно отказаться от этой меры защиты, просто нажав на клавишу Enter.

На этом процедура создания ключей завершена. Файлы d_rsa (приватный ключ) и id_rsa.pub (публичный ключ) хранятся в папке ~/.ssh/.  Осталось скопировать открытую часть ключа на сервер.

Отключение запроса пароля

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

  • Подключитесь к удаленному серверу.
  • Выполните команду sudo nano /etc/ssh/sshd_config. Файл sshd_config откроется во встроенном текстовом редакторе.
  • Найдите строку PasswordAuthentication yes и измените ее на PasswordAuthentication no.
  • Сохраните изменения и перезапустите службу SSH командой sudo service ssh restart.

Авторизация по паролю отключена. Теперь подключиться к серверу можно только с помощью пары ключей.

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

cd — отправляет вас в любую папку на выбор. Синтаксис: cd путь до нужной директории. Если хочется на рабочий стол, то пишем: cd ~/Desktop. Вернуться в предыдущую папку? cd-. Перепрыгнуть в home? Просто вводим: cd без аргументов.

ls — отображает директории и файлы вокруг вас. То есть в той папке, где вы находитесь на текущий момент. Но чтобы ею пользоваться, необязательно переходить в конкретную директорию. Ее можно указать заранее. Вот так:

pwd — укажет путь до папки тем, кто заблудился. Если вы находитесь в папке Документы, то вывод pwd будет выглядеть вот так /home/имя пользователя/Documents. И так для любого каталога, в котором вы окажетесь.

Ssh linux что это такое и как это работает?

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

mv — изначально использовалась для того, чтобы перемещать файлы из одного места в другое. mv ~/Desktop/timeweb.html ~/Documents переносит HTML-документ Timeweb с рабочего стола в документы. Но пользователи приноровились использовать mv для смены имени файлов. mv ~/Desktop/timeweb.html timeweb-2.html оставляет документ на месте, но меняет его название.

cp — создает копию выбранного файла в другом каталоге. cp ~/Documents/timeweb-file.txt /home/Webmaster/Desktop копирует документ с названием timeweb-file.txt на рабочий стол того же пользователя.

dd — управляет разделами. С ее помощью можно делать копии разделов: dd if=/dev/sda of=/dev/sdb. Можно перемещать разделы. Удалять их без возможности восстановления: dd if=/dev/zero of=/dev/sdX (в качестве раздела для «уничтожения» тут указана флешка). Копирование разделов подразумевает их запись на сторонние носители. Например, запись iso-образов на внешние накопители: dd if=~/Desktop/fedora-14.6.iso of=/dev/sdX bs=4M. if здесь — это путь к образу, а of — путь к смонтированному разделу (флешке).

rm — удаляет папки и все, что сможет в них найти. «Уничтожает» все субдиректории, документы, картинки, медиа. Вообще все, без возможности восстановления. Синтаксис:

rm путь до каталога, который надо вычистить вместе со всеми «внутренностями»

mkdir — создает новую папку. Синтаксис: mkdir путь_до каталога,_где_нужно_создать_новую_директорию название_для_этой директории. Если надо сделать на рабочем столе папку Timeweb, то пишем:

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

zip — архивирует один или несколько файлов один файл в формате .zip. Синтаксис: zip название архива.zip путь до файла, который надо упаковать. К примеру:

zip noviy-archive.zip /home/me/soderzhimoe-archiva.txt

unzip — вытаскивает содержимое архива наружу. Работает по тому же принципу: сначала команда, потом путь до архива, который надо распаковать. Еще можно добавить опцию -d, чтобы удалить файлы из архива по завершении распаковки.

find — ищет файлы и папки по всей файловой системе. Умеет находить их по названию и по типу, но это зависит от выставленных опций. find -type d -name Timeweb будет искать только директории с именем Timeweb.

Читайте также:  Пошаговое руководство: Winbox — просто для начинающих

mount — монтирует образ или раздел диска. Синтаксис:

mount путь до раздела, что нужно смонтировать

unmount — «демонтирует» образ или указанный раздел. Синтаксис:

unmount путь до раздела, что нужно отмонтировать

How To Configure SSH

When you change the configuration of SSH, you are changing the settings of the sshd server.

In Ubuntu, the main sshd configuration file is located at /etc/ssh/sshd_config.

Back up the current version of this file before editing:

Open it using nano or your favourite text editor:

You will want to leave most of the options in this file alone. However, there are a few you may want to take a look at:

The port declaration specifies which port the sshd server will listen on for connections. By default, this is 22. You should probably leave this setting alone, unless you have specific reasons to do otherwise. If you do change your port, we will show you how to connect to the new port later on.

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key

The host keys declarations specify where to look for global host keys. We will discuss what a host key is later.

SyslogFacility AUTH
LogLevel INFO

These two items indicate the level of logging that should occur.

If you are having difficulties with SSH, increasing the amount of logging may be a good way to discover what the issue is.

LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

These parameters specify some of the login information.

LoginGraceTime specifies how many seconds to keep the connection alive without successfully logging in.

It may be a good idea to set this time just a little bit higher than the amount of time it takes you to log in normally.

strictModes is a safety guard that will refuse a login attempt if the authentication files are readable by everyone.

This prevents login attempts when the configuration files are not secure.

X11Forwarding yes
X11DisplayOffset 10

This option must be enabled on the server and given with the SSH client during connection with the -X option.

After making your changes, save and close the file. If you are using nano, press Ctrl+X, then when prompted, Y and then Enter.

If you changed any settings in /etc/ssh/sshd_config, make sure you reload your sshd server to implement your modifications:

You should thoroughly test your changes to ensure that they operate in the way you expect.

It may be a good idea to have a few terminal sessions open while you are making changes. This will allow you to revert the configuration if necessary without locking yourself out.

Управление пользователями

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

passwd — задает пароль для учетной записи. Работает вкупе с предыдущей командой. То есть сразу после создания аккаунта, пишем: passwd имя новой учетной записи. После этого система попросит придумать и указать пароль для новой учетной записи.

Система безопасности в Linux не показывает во время ввода пароля даже звездочки, но это не значит, что он не вводится. Продолжайте набирать вслепую, а как закончите, нажмите Enter, и все сработает. И не бойтесь запутаться, вас попросят повторить придуманный пароль.

  • -d — меняет расположение домашней директории выбранной учетной записи.
  • -g — меняет группу, к которой принадлежит аккаунт.
  • -G — привязывает аккаунт к выбранной группе.
  • -L — блокирует пользователя.
  • -m — перемещает контент из домашней папки пользователя в другую папку.
  • -p — устанавливает незашифрованный пароль (лучше так не делать).
  • -s — задает конкретную оболочку для нового аккаунта на усмотрение администратора компьютера.
  • -U — снимает блокировку с выбранной учетной записи.

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

Базовый процесс выглядит аналогично:

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

The authenticity of host ‘111.111.11.111 (111.111.11.111)’ 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, чтобы продолжить.

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

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

Редактирование прав

К серверным утилитам OpenSSH относятся:

  • sshd (OpenSSH Daemon) — программа демон для ssh. sshd ожидает подключений от клиентов.
  • sftp-server (серверная подсистема SFTP) — это программа, которая участвует в передачи файлов по протоколу SFTP. sftp-server не предназначен для прямого вызова, обычно она задействуется автоматически демоном sshd.

Итак, на сервере основного внимания требует sshd, а программа sftp-server будет запущена автоматически по мере необходимости.

К клиентским утилитам OpenSSH относятся:

  • ssh (клиентская программа SSH) — это программа для выполнения входа на удалённую машину и выполнения команд на этой удалённой машине.
  • scp — программа для копирования файлов на удалённую машину с локальной, или в обратном направлении — с локальной на удалённую. При передаче данных используется зашифрованный канал.
  • sftp — это тоже программа для передачи файлов по безопасному каналу. Эта программа похожа на ftp.
  • ssh-keygen — утилита для создания ключей аутентификации и управления ими. Также она может использоваться для отзыва ключей.

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

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

  • ssh-add — добавляет приватный ключ к агенту аутентификации.
  • ssh-agent — это программа для хранения закрытых ключей, используемая для аутентификации с открытым ключом (RSA, DSA, ECDSA, Ed25519). ssh-agent обычно запускается в начале сеанса X или сеанса входа в систему, а все другие окна или программы запускаются как клиенты для программы ssh-agent. Благодаря использованию переменных среды агент может быть найден и автоматически использован для аутентификации при входе на другие машины с использованием ssh.
  • ssh-keyscan — это утилита для сбора открытых ключей хоста SSH с нескольких хостов. Она была разработана для помощи в создании и проверке файлов ssh_known_hosts. ssh-keyscan предоставляет минимальный интерфейс, подходящий для использования скриптами оболочки и perl.
  • ssh-keysign — используется ssh для доступа к ключам локального хоста и генерирования цифровой подписи, необходимой во время аутентификации на основе хоста. ssh-keysign отключена по умолчанию и может быть включена только в глобальном файле конфигурации клиента /etc/ssh/ssh_config, если для EnableSSHKeysign установлено значение «yes». ssh-keysign предназначена не для вызова пользователем, а из ssh.
  • ssh-copy-id — использует локально доступные ключи для авторизации на удаленном компьютере.

Проверка службы SSH на сервере

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

Ssh linux что это такое и как это работает?

Важно: в целях безопасности при вводе пароля на экране не отображаются никакие символы, даже привычные звездочки.

После авторизации в консоли можно проверить, запущена ли служба SSH на сервере.

  • Выполните команду systemctl status sshd.
  • Обратите внимание на строчку Active. В ней должна быть выделенная зеленым запись active (running). Это состояние говорит о том, что служба запущена.

Ssh linux что это такое и как это работает?

Если служба не активна, добавьте ее самостоятельно. Выполните команду sudo apt install openssh-server и подтвердите установку пакетов.

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

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Core Syntax

To connect to a remote system using SSH, we’ll use the ssh command.

If you are using a Mac or Linux, you will already have the ssh command available in your terminal.

The most straightforward form of the command is:

The remote_host in this example is the IP address or domain name that you are trying to connect to.

Once you have connected to the server, you may be asked to verify your identity by providing a password. Later, we will cover how to generate keys to use instead of passwords.

To exit the ssh session and return back into your local shell session, type:

Связанные статьи

Содержание «Полное руководство по SSH в Linux и Windows»

1. Что такое SSH. Утилиты SSH

1.1 Что такое и для чего нужен SSH

1.2 Утилиты SSH

1.3 Как установить OpenSSH

1.4 Управление службой OpenSSH

1.5 Как проверить журнал событий SSH службы

1.6 Как увидеть неудачные попытки входа SSH

1.7 Как просмотреть журнал подключений пользователей SSH

2. Настройка сервера OpenSSH

3. Как подключиться к SSH. Настройка клиента OpenSSH

4. Создание и настройка ключей OpenSSH

5. Копирование файлов с помощью scp и sftp

6. Подсказки и сложные случаи использования OpenSSH

Как встроить открытый ключ при создании сервера

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

Внизу страницы создания дроплета есть опция для добавления ключей SSH на ваш сервер:

Ssh linux что это такое и как это работает?

Если вы уже добавили файл открытого ключа в учетную запись DigitalOcean, вы сможете выбрать данную опцию (в примере выше указаны два существующих ключа: “Work key” и “Home key”). Чтобы встроить существующий ключ, нажмите на него, чтобы его выделить. Вы можете встроить несколько ключей на один сервер:

Читайте также:  Обработка видео зависает? Дайте ему еще один шанс

Ssh linux что это такое и как это работает?

Если в вашу учетную запись еще не выгружен открытый ключ SSH, или если вы хотите добавить новый ключ, нажмите кнопку “+ Add SSH Key”. При этом будет открыто диалоговое окно:

Ssh linux что это такое и как это работает?

Вставьте содержимое открытого ключа SSH в поле “SSH Key content”. Если вы сгенерировали ключи, используя указанный выше метод, вы можете получить содержимое открытого ключа на локальном компьютере, введя следующую команду:

Вставьте это значение в более крупное поле целиком. В поле “Comment (optional)” вы можете выбрать ярлык для данного ключа. Этот ярлык будет отображаться как имя ключа в интерфейсе DigitalOcean:

Ssh linux что это такое и как это работает?

При создании дроплета выбранные вами открытые ключи SSH будут помещены в файл ~/.ssh/authorized_keys в учетной записи пользователя root. Это позволит вам входить на сервер с компьютера, используя ваш закрытый ключ.

Работа с текстом

Парочка полезных команд для взаимодействия с любыми видами текстов на сервере через SSH.

cat — показывает текст из выбранного файла. В качестве аргумента передаем этой утилите текстовый документ, и cat выведет в консоль его содержимое. Синтаксис:

cat путь до файла, содержимое которого надо осмотреть

Чтобы взглянуть на содержимое файла timeweb.txt, который лежит на рабочем столе, напишем в терминал:

head — это «голова». Она работает по схожему с cat принципу. Отображает текст из файлов, где он имеется. Разница заключается в количестве отображаемого контента. Пользователь сам выбирает, сколько строчек текста вывести на экран, поставив аргумент -n. Команда head -n 4 ~/Documents/timeweb.txt покажет только первые четыре строки документа timeweb.txt из папки Documents.

Ssh linux что это такое и как это работает?

tail — это «хвост». Работает, как head, но с противоположной стороны. Команда tail -n 8 ~/Documents/timeweb.txt покажет только первые восемь строк документа timeweb.txt из папки Documents.

touch — одна из множества команд для SSH, которую используют не по назначению. У нее весьма специфичная задача по изменению времени последнего открытия отдельных элементов файловой системы. Но ее быстро перепрофилировали чуть ли не в стандартный метод создания файлов. touch ~/Desktop/timeweb.html создаст HTML-документ с именем Timeweb на рабочем столе.

vi — используя с дополнительными аргументами, можно создавать новые текстовые файлы. Например vi /путь до директории, где нужно создать новый текстовый файл/. Или же редактировать уже существующие. Чтобы изменить содержимое какого-нибудь файла в домашней папке, надо ввести: vi /home/имя учетной записи/kakoy-to-tekstoviy-file.txt. Альтернативой vi может служить nano. Более современный и лояльный к новичкам редактор. К сожалению, может отсутствовать в системе по умолчанию и требовать установки.

wc путь до файла — показывает количество символов, количество строк и слов в выбранном текстовом документе.

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

diff timeweb-1.html timeweb-2.html

Как просмотреть журнал подключений пользователей SSH

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

Чтобы показать подключения аутентификации по публичному ключу:

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

Ssh linux что это такое и как это работает?

Подробности смотрите в статье «Как проверить историю IP адресов для SSH сессий».

Управление службой OpenSSH

Клиент ssh запускается самим пользователем по мере необходимости.

Запуск службы OpenSSH требуется только на сервере.

Таким образом, если вы хотите воспользоваться первой моделью (демон SSH всегда активен), то для запуска службы и добавления её в автозагрузку наберите следующие команды:

sudo systemctl start sshd.service
sudo systemctl enable sshd.service

Они добавят демона SSH в автозагрузку и запустят его прямо сейчас.

Для второй модели (запуск SSH только по требованию), сделайте так:

sudo systemctl start sshd.socket

sudo systemctl enable sshd.socket

Для проверки статуса службы:

systemctl status sshd.service

Либо если вы используете сокет:

systemctl status sshd.socket

Ssh linux что это такое и как это работает?

Обратите внимание, что в разных дистрибутивах служба может называться ssh или sshd, следовательно, в приведённых выше и далее командах, используйте имена:

  • sshd.socket
  • sshd.service
  • ssh.socket
  • ssh.service

Выполнение входа через SSH с использованием ключей

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

Как работает аутентификация с помощью ключей?

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

Приватный ключ располагается на клиентском компьютере, этот ключ защищен и хранится в секрете.

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

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

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

Весь этот процесс выполняется в автоматическом режиме после того, как вы настроите ключи.

Введите следующую команду в командной строке:

ssh-keygen rsa

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

Перейдите в каталог .ssh с помощью следующей команды:

Просмотрите данные о разрешениях для файлов:

-rw-r—r— 1 demo demo 807 Sep 9 22:15 authorized_keys
-rw——- 1 demo demo 1679 Sep 9 23:13 id_rsa
-rw-r—r— 1 demo demo 396 Sep 9 23:13 id_rsa.pub

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

В то же время файл id_rsa.pub может использоваться совместно и имеет соответствующие разрешения для данной деятельности.

Как передать ваш публичный ключ на сервер

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

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

Использование пароля

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

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

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

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

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

Настройка SSH

При изменении конфигурации SSH вы меняете настройки сервера sshd.

В Ubuntu основной файл конфигурации sshd находится в каталоге /etc/ssh/sshd_config.

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

Откройте файл в текстовом редакторе:

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

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

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

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

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

Эти параметры определяют некоторые данные для входа в систему.

Опция LoginGraceTime определяет количество секунд, в течение которых следует сохранять подключение при отсутствии успешных попыток входа в систему.

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

PermitRootLogin определяет, разрешен ли вход с помощью пользователя с правами root.

В большинстве случаев необходимо изменить значение на no, если вы создали учетную запись пользователя, которая имеет доступ к высокому уровню привилегий (через su или sudo) и может использоваться для входа в систему через ssh.

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

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

Эти параметры используются для настройки такой возможности, как X11 Forwarding. X11 Forwarding позволяет просматривать графический пользовательский интерфейс (GUI) удаленной системы на локальной системе.

Эта функция должна быть активирована на сервере и передана клиенту SSH во время подключения с помощью опции -X.

После внесения изменений сохраните и закройте файл, введя CTRL+X, Y, а затем нажмите ENTER.

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

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

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

Как работает SSH?

SSH выполняет подключение клиентской программы к серверу ssh с именем sshd.

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

На вашем сервере должен быть запущен сервер sshd. Если это не так, вам может потребоваться подключение к серверу через веб-консоль или локальную последовательную консоль.

Процесс запуска сервера ssh зависит от дистрибутива Linux, который вы используете.

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

Эта команда должна запускать сервер sshd, после чего вы сможете выполнять удаленный вход.

Оцените статью
Хостинги