Установите SSH на Ubuntu, чтобы обеспечить безопасный доступ к вашему серверу. Начните с обновления списка пакетов, выполнив команду sudo apt update. Это гарантирует, что вы получите последнюю версию программного обеспечения.
Затем установите OpenSSH Server с помощью команды sudo apt install openssh-server. Этот пакет включает в себя все необходимые компоненты для работы SSH. После завершения установки проверьте статус службы SSH, выполнив sudo systemctl status ssh. Убедитесь, что служба запущена и работает без ошибок.
Настройте параметры SSH, отредактировав файл конфигурации /etc/ssh/sshd_config. Здесь вы можете изменить порт, отключить вход по паролю или настроить аутентификацию по ключам. После внесения изменений перезапустите службу с помощью sudo systemctl restart ssh, чтобы они вступили в силу.
Теперь вы готовы подключаться к вашему серверу по SSH. Используйте команду ssh username@your_server_ip, заменив username на ваше имя пользователя и your_server_ip на IP-адрес вашего сервера. Если вы настроили аутентификацию по ключам, убедитесь, что ваш публичный ключ добавлен в файл ~/.ssh/authorized_keys на сервере.
Установка и базовая настройка SSH-сервера на Ubuntu
Начинайте с установки пакета OpenSSH Server, выполнив команду: sudo apt install openssh-server. Это обеспечит запуск SSH-сервера и его автоматическую загрузку при старте системы.
Проверьте статус службы командой: sudo systemctl status ssh. Если служба запущена и активно работает, вы увидите сообщение ‘active (running)’. В противном случае запустите её командой: sudo systemctl start ssh.
Для повышения безопасности рекомендуется ограничить доступ к SSH, изменив настройки в файле /etc/ssh/sshd_config. Откройте его командой sudo nano /etc/ssh/sshd_config. Основные параметры, на которые стоит обратить внимание:
- Запретить вход как root, установив строку:
PermitRootLogin no - Разрешить подключение только через ключи, отключив пароль:
PasswordAuthentication no - Настроить порт для подключения, если хотите скрыть стандартный порт 22:
Port 2222
После внесения изменений сохраните файл и перезапустите SSH-сервис командой: sudo systemctl restart ssh.
Создайте пару SSH-ключей на клиенте командой: ssh-keygen -t rsa -b 4096. Ключи сохраняйте в стандартных папках или по своему усмотрению.
Добавьте публичный ключ на сервер в файл ~/.ssh/authorized_keys для конкретного пользователя. Проверьте, что права на папку .ssh и файл authorized_keys ограничены и составляют 700 и 600 соответственно:
chmod 700 ~/.ssh и
chmod 600 ~/.ssh/authorized_keys.
Теперь подключение к серверу осуществляется командой ssh -p 2222 username@hostname, где 2222 – выбранный вами порт.
Обновление системы перед установкой SSH

Перед установкой SSH обновите систему, чтобы обеспечить совместимость и безопасность. Откройте терминал и выполните команду:
sudo apt update
Эта команда обновит список доступных пакетов и их версий. После этого выполните:
sudo apt upgrade
Эта команда установит последние версии всех установленных пакетов. Если появится запрос на подтверждение, введите Y и нажмите Enter.
После завершения обновления перезагрузите систему, чтобы изменения вступили в силу. Используйте команду:
sudo reboot
Теперь ваша система готова к установке SSH. Убедитесь, что все пакеты актуальны, чтобы избежать возможных проблем в будущем.
Установка OpenSSH-server: команды и параметры
Для начала установите пакет OpenSSH-сервера с помощью команды:
sudo apt update sudo apt install openssh-server
Команда `apt update` обновит список доступных пакетов, а `apt install` установит сам OpenSSH-сервер.
Чтобы проверить статус службы SSH после установки, выполните:
sudo systemctl status ssh
Если сервис не запущен, запустите его командой:
sudo systemctl start ssh
Для автоматического запуска SSH при загрузке используйте:
sudo systemctl enable ssh
Настройки конфигурации расположены в файле `/etc/ssh/sshd_config`. Перед его редактированием сделайте копию на случай ошибки:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
Для изменения настроек откройте файл любимым редактором, например:
sudo nano /etc/ssh/sshd_config
При необходимости измените параметры, такие как порт (по умолчанию 22), разрешение входа по паролю или ключам. После внесения изменений перезапустите службу:
sudo systemctl restart ssh
Если требуется установить дополнительные параметры запуска, используйте опции командной строки при запуске SSH-сервера. Например:
sudo sshd -D -p 2222
Эта команда запустит SSH-деймон в фоновом режиме (`-D`) на порту 2222. Для постоянных изменений используйте параметры в `sshd_config`. Учитывайте, что некоторые параметры требуют перезапуска сервиса, а другие можно менять динамически. Следите за логами для диагностики:
sudo journalctl -u ssh
Проверка статуса службы SSH и её запуск

Для проверки статуса службы SSH выполните команду:
sudo systemctl status ssh
Эта команда покажет, запущена ли служба, а также её текущий статус. Если служба активна, вы увидите сообщение ‘active (running)’.
Если служба не запущена, активируйте её с помощью следующей команды:
sudo systemctl start ssh
После этого снова проверьте статус, чтобы убедиться, что служба работает. Если вы хотите, чтобы служба автоматически запускалась при загрузке системы, выполните:
sudo systemctl enable ssh
Теперь служба SSH будет запускаться автоматически при каждом старте системы. Это обеспечит доступ к вашему серверу без необходимости вручную запускать службу каждый раз.
Настройка файла sshd_config для базовой безопасности
Отключите вход по паролю, установив параметр PasswordAuthentication no. Это минимизирует риск атаки за счет использования ключей SSH.
Запретите вход под учетной записью root, добавив параметр PermitRootLogin no. Это защитит систему от атак, направленных на наиболее привилегированную учетную запись.
Настройте порт прослушивания на другой, не типичный, например, 2222, изменив параметр Port 22. Это снизит вероятность автоматических сканирований по стандартному порту.
Активируйте аутентификацию с помощью ключей, оставив только PubkeyAuthentication yes и отключив AuthenticationMethods password. Это обеспечит более надежный контроль доступа.
Включите журналирование событий аутентификации, проверяя параметры LogLevel INFO или VERBOSE. Это поможет отслеживать попытки доступа и выявлять подозрительную активность.
Ограничьте IP-адреса, с которых разрешен вход, если есть необходимость, через директиву AllowUsers или AllowGroups, указав конкретные пользователей или группы.
Обеспечьте автоматическую блокировку при множественных неудачных попытках входа, активируя параметры MaxAuthTries и MaxSessions, чтобы снизить риск перебора паролей или вредоносных скриптов.
Каждое изменение в файле sshd_config требует перезапуска службы SSH с помощью команды systemctl restart sshd, чтобы новые настройки вступили в силу. Перед этим проверьте конфигурацию командой sshd -t, чтобы избежать ошибок и предотвращения возможного отключения от сервера.
Разрешение входа по паролю или ключу: что выбрать?

Используйте аутентификацию по ключу, если хотите увеличить безопасность и автоматизировать вход без пароля. Генерация SSH-ключа и добавление открытой части на сервер обеспечивает более надежный режим доступа, предотвращая перебор паролей.
Вариант с паролем удобен для временных или менее критичных систем, но он подвержен атакам методом перебора. Если требуется высокая степень защиты, настройка ключевой аутентификации – лучший выбор.
Для повышения удобства можно комбинировать оба метода: разрешать вход по ключу и оставлять возможность входа по паролю в случае необходимости. Так обеспечивается баланс между безопасностью и универсальностью.
Используйте сильные ключи с длиной не менее 2048 бит и избегайте простых паролей. Регулярная смена ключей и ограничение доступа по IP помогают дополнительно усилить безопасность.
Дополнительная настройка SSH для повышения безопасности и удобства использования

Отключите вход по паролю, чтобы предотвратить несанкционированный доступ. Для этого отредактируйте файл конфигурации SSH:
sudo nano /etc/ssh/sshd_config
Найдите строку PasswordAuthentication и измените её на:
PasswordAuthentication no
Сохраните изменения и перезапустите SSH-сервис:
sudo systemctl restart ssh
Используйте ключи SSH для аутентификации. Сгенерируйте пару ключей на клиенте:
ssh-keygen -t rsa -b 4096
Скопируйте публичный ключ на сервер:
ssh-copy-id user@server_ip
Настройте файл конфигурации SSH для удобства. Создайте или отредактируйте файл ~/.ssh/config:
Host myserver HostName server_ip User user IdentityFile ~/.ssh/id_rsa
Это позволит вам подключаться к серверу с помощью команды ssh myserver.
Ограничьте доступ к SSH с определённых IP-адресов. Добавьте следующие строки в файл конфигурации:
AllowUsers user@your_ip
Настройте брандмауэр для разрешения доступа только к порту SSH (обычно 22). Используйте ufw:
sudo ufw allow from your_ip to any port 22
Включите брандмауэр:
sudo ufw enable
Регулярно обновляйте систему и пакеты, чтобы защититься от уязвимостей:
sudo apt update && sudo apt upgrade
Рассмотрите возможность изменения порта SSH для уменьшения вероятности атак. В файле /etc/ssh/sshd_config измените строку:
Port 22
На желаемый номер порта, например, 2222. Не забудьте обновить правила брандмауэра.
Используйте инструменты мониторинга, такие как fail2ban, для защиты от брутфорс-атак. Установите его:
sudo apt install fail2ban
Настройте fail2ban для защиты SSH, отредактировав файл /etc/fail2ban/jail.local и добавив:
[sshd] enabled = true port = 22 filter = sshd logpath = /var/log/auth.log maxretry = 5 bantime = 600
Перезапустите fail2ban:
sudo systemctl restart fail2ban
Следуя этим рекомендациям, вы значительно повысите безопасность и удобство использования SSH на вашем сервере.
Генерация SSH-ключей на клиентской машине
Откройте терминал на вашей клиентской машине. Введите команду для генерации SSH-ключей:
ssh-keygen -t rsa -b 4096 -C 'ваш_email@example.com'
Эта команда создаст пару ключей RSA с длиной 4096 бит. Укажите свой адрес электронной почты для идентификации ключа.
После ввода команды вас попросят указать путь для сохранения ключа. Нажмите Enter, чтобы использовать путь по умолчанию (~/.ssh/id_rsa).
Затем система предложит ввести пароль для дополнительной защиты ключа. Рекомендуется использовать пароль, но можно оставить поле пустым для отсутствия пароля.
После завершения процесса вы увидите сообщение о создании ключей и их расположении. Пара ключей состоит из приватного (id_rsa) и публичного (id_rsa.pub) ключей.
Для проверки наличия ключей выполните команду:
ls ~/.ssh
Если вы видите файлы id_rsa и id_rsa.pub, значит, ключи успешно созданы.
Теперь вы можете использовать публичный ключ для настройки доступа к удалённым серверам, добавив его в файл ~/.ssh/authorized_keys на сервере.
Настройка авторизации по ключам и отключение входа по паролю

Сгенерируйте пару ключей на локальной машине с помощью команды:
ssh-keygen -t rsa -b 4096
При запросе укажите путь для сохранения ключа или нажмите Enter для использования значения по умолчанию. Установите пароль для дополнительной безопасности.
Скопируйте публичный ключ на сервер с помощью команды:
ssh-copy-id username@server_ip
Замените username на ваше имя пользователя, а server_ip на IP-адрес вашего сервера. После этого введите пароль для доступа к серверу.
Теперь настройте SSH для отключения входа по паролю. Откройте файл конфигурации SSH:
sudo nano /etc/ssh/sshd_config
Найдите строку PermitRootLogin и измените её на:
PermitRootLogin no
Затем найдите строку PasswordAuthentication и измените её на:
PasswordAuthentication no
Сохраните изменения и закройте редактор.
Перезапустите SSH-сервис для применения изменений:
sudo systemctl restart ssh
Теперь вход по паролю отключен, и доступ возможен только с использованием ключей. Проверьте подключение к серверу, используя:
ssh username@server_ip
Убедитесь, что всё работает корректно. Если возникнут проблемы, проверьте настройки и наличие ключей на сервере.
Настройка брандмауэра для ограничения доступа SSH

Начните с проверки текущих правил UFW, выполнив команду sudo ufw status verbose. Это покажет основные настройки и текущие разрешения. Если UFW еще не активирован, включите его командой sudo ufw enable.
Затем запретите весь входящий трафик, кроме SSH, с помощью команд:
sudo ufw default deny incoming |
sudo ufw default allow outgoing |
Позже разрешите только SSH-трафик с определенного IP-адреса или диапазона IP-адресов, например, чтобы разрешить доступ с IP 192.168.1.100, используйте команду:
sudo ufw allow from 192.168.1.100 to any port 22 |
Если хотите ограничить доступ по диапазону IP, например, с 192.168.1.0/24, используйте:
sudo ufw allow from 192.168.1.0/24 to any port 22 |
Проверьте новые правила с помощью sudo ufw status. Убедитесь, что разрешены только те IP-адреса, на которые вы рассчитываете.
Для исключения возможности подключения по другим портам, с помощью правила блокировки можно закрыть все ненужные порты командой sudo ufw deny или явно запретить входящие соединения:
sudo ufw deny 0.0.0.0/0 |
Помните, что при внесении изменений, связанных с доступом к SSH, стоит всегда сохранять конфигурацию и иметь резервные варианты подключения, чтобы не оказаться запертым вне сервера. После настройки не забудьте перезагрузить брандмауэр командой sudo ufw reload.
Изменение порта SSH и защита от автоматических брутфорсов
Измените порт SSH с 22 на другой, например, 2222. Это снизит вероятность автоматических атак. Для этого откройте файл конфигурации SSH:
sudo nano /etc/ssh/sshd_config
Найдите строку Port 22 и замените её на Port 2222. Сохраните изменения и закройте редактор.
Перезапустите SSH для применения изменений:
sudo systemctl restart ssh
Теперь настройте брандмауэр для разрешения нового порта. Используйте команду:
sudo ufw allow 2222/tcp
Для повышения безопасности установите Fail2Ban. Этот инструмент блокирует IP-адреса, которые пытаются выполнить брутфорс:
sudo apt install fail2ban
После установки настройте Fail2Ban, отредактировав файл конфигурации:
sudo nano /etc/fail2ban/jail.local
Добавьте следующие строки для защиты SSH:
[sshd] enabled = true port = 2222 filter = sshd logpath = /var/log/auth.log maxretry = 5 bantime = 600
Сохраните изменения и перезапустите Fail2Ban:
sudo systemctl restart fail2ban
Теперь ваш SSH-сервер защищен от автоматических брутфорсов, а изменение порта добавляет дополнительный уровень безопасности.
Использование агента SSH для управления ключами
Запустите агент SSH командой eval '$(ssh-agent -s)'. Это инициирует процесс, который хранит ваши ключи в памяти для автоматической аутентификации без постоянного ввода пароля.
Добавьте приватные ключи с помощью команды ssh-add. Например, выполните ssh-add ~/.ssh/id_rsa, чтобы зарегистрировать ваш локальный ключ. После этого агент сможет автоматически использовать его при подключениях.
Чтобы проверить, какие ключи доступны в агенте, выполните ssh-add -l. Он покажет список зарегистрированных ключей и их идентификаторы.
Используйте сценарий автоматической загрузки агента и добавления ключей при входе в систему, чтобы не запускать эти команды вручную каждый раз. Для этого добавьте строки в файл ~/.bashrc или ~/.bash_profile:
eval '$(ssh-agent -s)' ssh-add ~/.ssh/id_rsa
При этом агент запустится автоматически, и ключи будут добавлены при каждом новом сеансе.
Для повышения безопасности можно настроить защиту ключей с помощью паролей. В случае необходимости, добавление ключа с паролем потребует лишь его ввода при первом добавлении, после чего агент запомнит его для текущей сессии.
Не забудьте поддерживать ваши ключи в актуальном состоянии и регулярно очищать неиспользуемые. Для удаления ключей из агента используйте команду ssh-add -d или полностью остановите агент командой ssh-agent -k.
Настройка дополнительных параметров безопасности (например, отключение root-сессий)
Чтобы повысить безопасность сервера, отключите возможность входа через root по SSH. Для этого откройте конфигурационный файл SSH: /etc/ssh/sshd_config и найдите строку #PermitRootLogin yes. Разкомментируйте её и замените на PermitRootLogin no. Это предотвратит попытки входа с правами root, снижая риск несанкционированного доступа.
Затем отключите возможность входа по паролю для всех пользователей, кроме администратора, использующего ключи. В файле sshd_config найдите строку PasswordAuthentication no. Если она закомментирована, раскомментируйте и убедитесь, что значение установлено в no. Это заставит всех пользователей входить только с помощью открытых ключей, уменьшая вероятность взлома через подбор паролей.
Для дополнительной защиты, отключите вход по SSH для неиспользуемых групп или пользователей, добавив параметры AllowUsers или AllowGroups с перечнем разрешённых аккаунтов. Например:
AllowUsers admin user1 user2
Это ограничит подключение только выбранными аккаунтами.
После внесения изменений перезапустите демон SSH: sudo systemctl restart sshd. Проверьте статус сервиса и убедитесь, что он активен и работает без ошибок.
Проверьте настройки с помощью нового соединения в другом терминале или с другого устройства. Пользователи, не указанные в AllowUsers, не смогут подключиться, что повышает уровень защиты системы.