SSH (Secure Shell) — это протокол безопасной удаленной работы с компьютером по сети. Он обеспечивает зашифрованную передачу данных и аутентификацию пользователей. Настройка SSH на Linux сервере является важной задачей для обеспечения безопасности и удобства удаленного доступа.
Для начала необходимо установить программное обеспечение OpenSSH, которое является реализацией протокола SSH для Linux. Для установки в Ubuntu и его производных можно воспользоваться командой:
sudo apt install openssh-server
После успешной установки необходимо настроить конфигурационный файл SSH. Он расположен по адресу /etc/ssh/sshd_config. В этом файле можно задать различные параметры, такие как порт, на котором будет слушать SSH, разрешенные методы аутентификации, настройки шифрования и другие. По умолчанию большинство параметров имеют безопасные значения, но некоторые могут потребовать изменений в зависимости от требований вашей сети.
После внесения необходимых изменений следует перезапустить службу SSH для применения новых настроек. Для этого выполните команду:
sudo service ssh restart
Теперь у вас должна быть настроена SSH на Linux сервере. Вы можете подключаться к вашему серверу с помощью любого SSH-клиента, указав IP-адрес сервера и порт SSH. По умолчанию SSH слушает порт 22, но вы можете изменить его на более безопасный порт.
- Шаг 1: Установка SSH на Linux сервер
- Шаг 2: Генерация SSH-ключа на Linux сервере
- Шаг 3: Настройка аутентификации по ключу в SSH
- Шаг 4: Запрет доступа по паролю в SSH
- Шаг 5: Настройка SSH-файрволла на Linux сервере
- Шаг 6: Установка и настройка fail2ban для защиты SSH
- Шаг 7: Настройка SSH-сервера для доступа через прокси
- Шаг 8: Проверка работоспособности настроенного SSH
Шаг 1: Установка SSH на Linux сервер
Шаг 1: Обновите список пакетов:
sudo apt update
Шаг 2: Установите пакет OpenSSH:
sudo apt install openssh-server
Шаг 3: Запустите службу SSH:
sudo service ssh start
После выполнения этих шагов, SSH успешно установлен и запущен на вашем Linux сервере.
Шаг 2: Генерация SSH-ключа на Linux сервере
Для настройки SSH-соединения на Linux сервере необходимо сгенерировать SSH-ключ. SSH-ключ представляет собой пару файлов: приватный ключ и публичный ключ. Приватный ключ должен быть хранен в надежном месте и никому не передаваться, в то время как публичный ключ используется для аутентификации.
Для генерации ключа на Linux сервере выполните следующие шаги:
- Откройте терминал и выполните команду
ssh-keygen
. - В появившемся запросе нажмите Enter для создания ключа в стандартном формате (RSA).
- Введите имя файла, в котором будет сохранен ключ. По умолчанию это
id_rsa
. - Введите пароль для защиты приватного ключа. Можно оставить поле пустым, если не требуется парольная защита.
- Сгенерируется пара ключей: приватный ключ (
id_rsa
) и публичный ключ (id_rsa.pub
).
После генерации ключей, публичный ключ необходимо разместить на сервере, к которому вы хотите получить доступ по SSH. Для этого скопируйте содержимое файла id_rsa.pub
и добавьте его в файл ~/.ssh/authorized_keys
на сервере.
Сгенерированный приватный ключ (id_rsa
) следует хранить в безопасном месте и не передавать никому, так как это даёт полный доступ к серверу.
Шаг 3: Настройка аутентификации по ключу в SSH
Аутентификация по ключу в SSH позволяет обеспечить более безопасный способ доступа к серверу, не требующий передачи пароля. Вместо этого используются пары ключей: публичный и приватный.
Для настройки аутентификации по ключу вам понадобится:
- Подготовить пару ключей на клиентском компьютере.
- Скопировать публичный ключ на сервер.
- Настроить сервер для аутентификации по ключу.
- Проверить доступ по ключу.
Начнем с создания пары ключей на клиентском компьютере.
1. Откройте терминал на вашем компьютере и выполните команду:
ssh-keygen -t rsa
2. Вас попросят указать место сохранения ключей и пароль (если нужно). По умолчанию ключи сохраняются в директорию ~/.ssh/
. Нажмите Enter, чтобы принять значения по умолчанию.
3. После создания пары ключей вы увидите информацию о пути к приватному и публичному ключам. Приватный ключ имеет имя id_rsa
, а публичный — id_rsa.pub
. Эти файлы будут храниться в директории ~/.ssh/
.
Теперь необходимо скопировать публичный ключ на сервер.
1. Введите команду:
ssh-copy-id username@server_ip_address
Замените username
на имя вашего пользователя на сервере и server_ip_address
на IP-адрес вашего сервера.
2. Вам будет предложено ввести пароль пользователя на сервере. Введите его и нажмите Enter.
3. Публичный ключ будет скопирован на сервер и добавлен в файл ~/.ssh/authorized_keys
в домашней директории пользователя.
Теперь необходимо настроить сервер для аутентификации по ключу.
1. Откройте терминал на сервере.
2. Откройте файл конфигурации SSH командой:
sudo nano /etc/ssh/sshd_config
3. Найдите и измените следующие строки, установив значения:
PubkeyAuthentication yes
PasswordAuthentication no
4. Сохраните изменения и закройте файл.
Теперь можно проверить доступ по ключу.
Вернитесь на клиентский компьютер и выполните команду:
ssh username@server_ip_address
Замените username
на имя вашего пользователя на сервере и server_ip_address
на IP-адрес вашего сервера.
Если все настройки выполнены правильно, вы должны получить доступ к серверу без запроса пароля.
Шаг 4: Запрет доступа по паролю в SSH
Доступ по паролю в SSH можно запретить для увеличения безопасности вашего сервера. Вместо этого рекомендуется использовать ключи SSH.
Чтобы запретить доступ по паролю, следуйте этим шагам:
- Откройте файл настроек SSH:
- Найдите строку «PasswordAuthentication» и измените ее значение на «no».
- Сохраните изменения и закройте файл.
- Перезапустите SSH-сервер, чтобы изменения вступили в силу:
sudo nano /etc/ssh/sshd_config
PasswordAuthentication no
sudo systemctl restart sshd
Теперь доступ по паролю в SSH будет запрещен, и вам потребуется ключ SSH для подключения к серверу.
Запрет доступа по паролю является рекомендуемой практикой для обеспечения безопасности сервера. Ключи SSH обеспечивают более высокий уровень безопасности и защиты от атак перебором паролей.
Шаг 5: Настройка SSH-файрволла на Linux сервере
Настройка SSH-файрволла на Linux сервере позволяет управлять доступом к серверу по протоколу SSH. Для этого необходимо настроить правила фильтрации пакетов и открыть порт для SSH соединений.
В Linux существует несколько утилит для настройки файрволла, таких как iptables, ufw и firewalld. В данной инструкции будет использована утилита iptables, так как она самая распространенная и часто используется в большинстве дистрибутивов.
- Войдите на сервер под учетной записью root.
- Откройте файл с правилами фильтрации пакетов с помощью команды:
sudo nano /etc/sysconfig/iptables
- Найдите строку, содержащую правило для порта SSH (обычно порт 22) и убедитесь, что оно разрешено. Если строка отсутствует или закомментирована, добавьте следующее правило:
-A INPUT -p tcp --dport 22 -j ACCEPT
- Сохраните изменения и закройте файл (нажмите Ctrl + X, затем Y, затем Enter).
- Перезапустите службу iptables для применения изменений:
sudo service iptables restart
Теперь SSH-файрволл настроен на Linux сервере. Вы можете проверить доступность порта SSH с помощью любого клиента SSH.
Шаг 6: Установка и настройка fail2ban для защиты SSH
- Установите fail2ban, выполнив следующую команду:
- После установки, отредактируйте конфигурационный файл fail2ban, используя текстовый редактор:
- Добавьте следующий содержимое в файл:
- Сохраните изменения и закройте файл.
- Перезапустите службу fail2ban, чтобы применить новую конфигурацию:
sudo apt-get install fail2ban
sudo nano /etc/fail2ban/jail.local
[ssh]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
В этом примере мы настраиваем fail2ban для защиты SSH, указывая основные параметры.
sudo service fail2ban restart
После выполнения этих шагов fail2ban будет активирован для защиты вашего SSH-сервера от атак. Он будет автоматически блокировать IP-адреса, с которых происходят неудачные попытки входа, на указанный период времени.
Шаг 7: Настройка SSH-сервера для доступа через прокси
В случае, если вы хотите настроить доступ к SSH-серверу через прокси-сервер, вам потребуется внести некоторые изменения в конфигурационный файл SSH.
1. Откройте файл /etc/ssh/sshd_config с помощью любого текстового редактора.
2. Добавьте следующие строки в конец файла:
ProxyCommand ssh -q -W %h:%p user@proxy_server_address
где user — имя пользователя на прокси-сервере, а proxy_server_address — IP-адрес или доменное имя прокси-сервера.
3. Сохраните изменения в файле и закройте его.
4. Перезапустите SSH-сервер, чтобы применить внесенные изменения:
sudo systemctl restart sshd
Теперь вы можете подключаться к SSH-серверу через прокси-сервер с помощью команды:
ssh user@server_address
где user — имя пользователя на SSH-сервере, а server_address — IP-адрес или доменное имя SSH-сервера.
Шаг 8: Проверка работоспособности настроенного SSH
После завершения настройки SSH на Linux сервере необходимо проверить его работоспособность. Для этого можно использовать клиент SSH, например, PuTTY в Windows или OpenSSH в Linux.
Чтобы проверить работу SSH, выполните следующие действия:
- Откройте клиент SSH на вашем компьютере.
- Введите IP-адрес сервера, к которому вы хотите подключиться.
- Укажите порт, если необходимо. По умолчанию используется порт 22.
- Выберите метод аутентификации (например, пароль или ключевой файл).
- Введите учетные данные для входа на сервер (логин и пароль или путь к ключевому файлу).
- Нажмите кнопку «Connect» или «Подключиться».
- Если все настройки SSH верны, вы должны успешно подключиться к серверу.
Если вы успешно подключились к серверу, значит настройка SSH прошла успешно, и вы можете использовать его для удаленного доступа к серверу и передачи файлов.
Если подключение не удалось, убедитесь, что вы правильно настроили SSH на вашем сервере. Проверьте правильность IP-адреса, порта и данных для аутентификации. Также необходимо убедиться, что SSH-сервер работает и слушает указанный порт.