Введение
Один из основных инструментов, которым должен владеть системный администратор, это SSH.
SSH, или Secure Shell, это протокол, используемый для безопасного входа на удаленные системы. Это самый распространенный способ доступа к удаленным серверам Linux.
В этом руководстве мы обсудим, как использовать SSH для подключения к удаленной системе.
Развертывайте ваши фронтенд-приложения с помощью GitHub с использованием DigitalOcean App Platform. Позвольте DigitalOcean масштабировать ваше приложение.
Основные синтаксис
Для подключения к удаленной системе с помощью SSH мы будем использовать команду ssh
.
Если вы используете Windows, вам потребуется установить версию OpenSSH, чтобы иметь возможность использовать ssh
из терминала. Если вы предпочитаете работать в PowerShell, вы можете следовать документации Microsoft, чтобы добавить OpenSSH в PowerShell. Если вы предпочитаете иметь полную среду Linux, вы можете настроить WSL, подсистему Windows для Linux, которая будет включать ssh
по умолчанию. Наконец, как легкий третий вариант, вы можете установить Git для Windows, который предоставляет среду для терминала bash для Windows с поддержкой ssh
. Каждый из этих вариантов хорошо поддерживается, и какой из них использовать, зависит от ваших предпочтений.
Если вы используете Mac или Linux, у вас уже есть команда ssh
доступна в вашем терминале.
Самая простая форма команды:
remote_host
в этом примере – это IP-адрес или доменное имя, к которому вы пытаетесь подключиться.
Эта команда предполагает, что ваше имя пользователя на удаленной системе совпадает с вашим именем пользователя на локальной системе.
Если ваше имя пользователя отличается на удаленной системе, вы можете указать его, используя этот синтаксис:
После подключения к серверу вам может быть предложено подтвердить вашу личность, предоставив пароль. Позже мы рассмотрим, как создать ключи для использования вместо паролей.
Чтобы выйти из сеанса SSH и вернуться обратно в локальную оболочку, наберите:
Как работает SSH?
SSH работает путем подключения клиентской программы к серверу SSH, называемому sshd
.
В предыдущем разделе ssh
была клиентской программой. Сервер SSH уже работал на указанном нами remote_host
.
Почти на всех средах Linux сервер sshd
должен автоматически запускаться. Если он по какой-либо причине не запущен, вам может потребоваться временно получить доступ к серверу через веб-консоль или локальную последовательную консоль.
Процесс запуска ssh-сервера зависит от дистрибутива Linux, который вы используете.
В Ubuntu вы можете запустить ssh-сервер, набрав:
Это должно запустить сервер sshd, и вы сможете удаленно войти в систему.
Как настроить SSH
Изменяя конфигурацию SSH, вы изменяете настройки сервера sshd.
В Ubuntu основной конфигурационный файл sshd расположен в /etc/ssh/sshd_config
.
Сделайте резервную копию текущей версии этого файла перед редактированием:
Откройте его с помощью nano
или вашего любимого текстового редактора:
Вам захочется оставить большую часть параметров в этом файле без изменений. Однако есть несколько, на которые стоит обратить внимание:
Port 22
Объявление порта указывает, на каком порту сервер sshd будет слушать соединения. По умолчанию это 22
. Вероятно, вам следует оставить этот параметр без изменений, если у вас нет конкретных причин сделать иначе. Если вы измените порт, мы покажем вам, как подключиться к новому порту позже.
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
Объявления ключей хоста указывают, где искать глобальные ключи хоста. Мы обсудим, что такое ключ хоста позже.
SyslogFacility AUTH
LogLevel INFO
Эти два элемента указывают уровень ведения журнала, который должен происходить.
Если у вас возникают сложности с SSH, увеличение объема журналирования может быть хорошим способом выяснить, в чем проблема.
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
Эти параметры указывают некоторую информацию для входа.
LoginGraceTime
указывает, сколько секунд сохранять соединение активным без успешного входа в систему.
Возможно, будет разумно установить это время чуть выше, чем время, необходимое вам для обычного входа в систему.
PermitRootLogin
выбирает, разрешено ли пользователю root входить в систему.
В большинстве случаев это должно быть изменено на no
, когда вы создали учетную запись пользователя, которая имеет доступ к повышенным привилегиям (через su
или sudo
) и может входить в систему через SSH, чтобы минимизировать риск получения кем-либо прав доступа root к вашему серверу.
strictModes
– это защита, которая отклонит попытку входа, если файлы аутентификации доступны для чтения всем.
Это предотвращает попытки входа, когда конфигурационные файлы не защищены.
X11Forwarding yes
X11DisplayOffset 10
Эти параметры настраивают возможность, называемую X11 Forwarding. Это позволяет просматривать графический интерфейс удаленной системы на локальной системе.
Эта опция должна быть включена на сервере и указана в SSH-клиенте во время подключения с помощью опции -X
.
После внесения изменений сохраните и закройте файл. Если вы используете nano
, нажмите Ctrl+X
, затем, когда будет предложено, нажмите Y
, а затем Enter.
Если вы изменили какие-либо параметры в файле /etc/ssh/sshd_config
, убедитесь, что перезагрузили ваш сервер sshd, чтобы применить изменения:
Вы должны тщательно протестировать ваши изменения, чтобы убедиться, что они работают так, как вы ожидаете.
Будет хорошей идеей иметь несколько терминальных сессий открытыми во время внесения изменений. Это позволит вам откатить конфигурацию при необходимости, не заблокировав себя.
Как войти в SSH с помощью ключей
Хотя удобно входить на удаленную систему, используя пароли, быстрее и безопаснее настроить аутентификацию на основе ключей.
Как работает аутентификация на основе ключей?
Аутентификация на основе ключей работает путем создания пары ключей: закрытого ключа и открытого ключа.
Закрытый ключ находится на клиентском компьютере и является защищенным и хранится в секрете.
Открытый ключ может быть передан кому угодно или помещен на любой сервер, к которому вы хотите получить доступ.
Когда вы пытаетесь подключиться, используя пару ключей, сервер использует открытый ключ для создания сообщения для компьютера клиента, которое может быть прочитано только с помощью закрытого ключа.
Клиентский компьютер затем отправляет соответствующий ответ на сервер, и сервер узнает, что клиент является подлинным.
Этот процесс выполняется автоматически после настройки ваших ключей.
Как создать SSH-ключи
SSH-ключи следует создавать на компьютере, с которого вы планируете войти в систему. Обычно это ваш локальный компьютер.
Введите следующее в командной строке:
Возможно, вам будет предложено установить пароль на сами ключевые файлы, но это довольно редкая практика, и вам следует нажать Enter во время запросов, чтобы принять значения по умолчанию. Ваши ключи будут созданы в ~/.ssh/id_rsa.pub и ~/.ssh/id_rsa.
Перейдите в каталог .ssh
, набрав:
Посмотрите на разрешения файлов:
Output-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 вы можете использовать несколько необязательных флагов.
Некоторые из них могут быть необходимы для сопоставления параметров в конфигурации sshd
удаленного хоста.
Например, если вы изменили номер порта в своей конфигурации sshd
, вам нужно будет сопоставить этот порт с клиентской стороны, набрав:
Примечание: Изменение порта SSH – разумный способ обеспечения безопасности через неявность. Если вы разрешаете подключения SSH к широко известному серверу на порту 22 как обычно и включили аутентификацию по паролю, вас, вероятно, будут атаковать множественные попытки входа в систему. Использование только аутентификации на основе ключей и запуск SSH на нестандартном порту не является самым сложным методом обеспечения безопасности, который вы можете использовать, но должно свести их к минимуму.
Если вы хотите выполнить только одну команду на удаленной системе, вы можете указать ее после имени хоста следующим образом:
Вы подключитесь к удаленной машине, произведете аутентификацию, и команда будет выполнена.
Как мы уже говорили ранее, если пересылка X11 включена на обоих компьютерах, вы можете получить доступ к этой функциональности, набрав:
При наличии необходимых инструментов на вашем компьютере, GUI-программы, которые вы используете на удаленной системе, теперь будут открывать свое окно на вашей локальной системе.
Отключение аутентификации по паролю
Если вы создали SSH-ключи, вы можете улучшить безопасность вашего сервера, отключив аутентификацию только по паролю. Помимо консоли, единственным способом войти на ваш сервер будет через закрытый ключ, который соответствует открытому ключу, установленному на сервере.
Предупреждение: Прежде чем перейти к этому шагу, убедитесь, что вы установили открытый ключ на свой сервер. В противном случае вы рискуете остаться заблокированным!
Как root или пользователь с правами sudo, откройте файл конфигурации sshd
:
Найдите строку, содержащую Password Authentication
, и раскомментируйте её, удалив начальный #
. Затем измените её значение на no
:
PasswordAuthentication no
Ещё два параметра, которые обычно не требуют изменений (предполагается, что вы ранее не изменяли этот файл), — это PubkeyAuthentication
и ChallengeResponseAuthentication
. Они установлены по умолчанию и должны выглядеть следующим образом:
PubkeyAuthentication yes
ChallengeResponseAuthentication no
После внесения изменений сохраните и закройте файл.
Теперь вы можете перезагрузить демон SSH:
Аутентификация по паролю теперь должна быть отключена, и доступ к вашему серверу должен быть доступен только через аутентификацию по SSH-ключам.
Заключение
Изучение работы с SSH значительно облегчит ваши будущие облачные вычисления. Используя различные параметры, вы обнаружите более продвинутые функции, которые могут упростить вашу жизнь. SSH остается популярным из-за своей безопасности, легкости и полезности в различных ситуациях.
Затем вы можете захотеть изучить работу с SFTP, чтобы выполнять передачу файлов через командную строку.
Source:
https://www.digitalocean.com/community/tutorials/how-to-use-ssh-to-connect-to-a-remote-server