Установка и настройка SSH сервера: различия между версиями

Материал из ARK-HOSTER.RU | Документация хостинга
Перейти к навигации Перейти к поиску
Новая страница: «= Установка и настройка SSH сервера = == 1. Подготовка системы == * Войдите в систему под учет…»
 
Нет описания правки
 
(не показана 1 промежуточная версия этого же участника)
Строка 11: Строка 11:


1. Обновите список пакетов:
1. Обновите список пакетов:
<code>
<pre>sudo apt update</pre>
sudo apt update
</code>


2. Установите OpenSSH сервер:
2. Установите OpenSSH сервер:
<code>
<pre>sudo apt install openssh-server</pre>
sudo apt install openssh-server
</code>


3. Запустите и включите автозапуск SSH:
3. Запустите и включите автозапуск SSH:
<code>
<pre>sudo systemctl start ssh</pre>
sudo systemctl start ssh
<pre>sudo systemctl enable ssh</pre>
sudo systemctl enable ssh
</code>


=== Для CentOS/RHEL/Fedora ===
=== Для CentOS/RHEL/Fedora ===


1. Установите OpenSSH сервер:
1. Установите OpenSSH сервер:
<code>
<pre>sudo yum install openssh-server</pre>
sudo yum install openssh-server
</code>
# или для новых версий
# или для новых версий
<code>
<pre>sudo dnf install openssh-server</pre>
sudo dnf install openssh-server
</code>


2. Запустите и включите автозапуск:
2. Запустите и включите автозапуск:
<code>
<pre>sudo systemctl start sshd</pre>
sudo systemctl start sshd
<pre>sudo systemctl enable sshd</pre>
sudo systemctl enable sshd
</code>


== 3. Проверка установки ==
== 3. Проверка установки ==


1. Проверьте статус SSH сервера:
1. Проверьте статус SSH сервера:
<code>
<pre>sudo systemctl status ssh</pre>
sudo systemctl status ssh
</code>


2. Проверьте, что SSH слушает на порту 22:
2. Проверьте, что SSH слушает на порту 22:
<code>
<pre>sudo netstat -tlnp | grep :22</pre>
sudo netstat -tlnp | grep :22
</code>


3. Проверьте версию OpenSSH:
3. Проверьте версию OpenSSH:
<code>
<pre>ssh -V</pre>
ssh -V
</code>


== 4. Базовая настройка SSH ==
== 4. Базовая настройка SSH ==
Строка 65: Строка 47:


1. Отредактируйте файл конфигурации SSH:
1. Отредактируйте файл конфигурации SSH:
<code>
<pre>sudo nano /etc/ssh/sshd_config</pre>
sudo nano /etc/ssh/sshd_config
</code>


2. Настройте основные параметры:
2. Настройте основные параметры:
<code>
<pre>Port 22</pre>
# Порт SSH
<pre>Protocol 2</pre>
Port 22
<pre>ListenAddress 0.0.0.0</pre>
 
<pre>PermitRootLogin no</pre>
# Протокол SSH
<pre>PermitEmptyPasswords no</pre>
Protocol 2
<pre>MaxAuthTries 3</pre>
 
<pre>LoginGraceTime 60</pre>
# Адрес для прослушивания
ListenAddress 0.0.0.0
 
# Разрешить root вход
PermitRootLogin no
 
# Разрешить пустые пароли
PermitEmptyPasswords no
 
# Максимальное количество попыток входа
MaxAuthTries 3
 
# Таймаут для аутентификации
LoginGraceTime 60
</code>


=== Настройка безопасности ===
=== Настройка безопасности ===


1. Добавьте дополнительные настройки безопасности:
1. Добавьте дополнительные настройки безопасности:
<code>
<pre>X11Forwarding no</pre>
# Отключить X11 forwarding
<pre>AllowTcpForwarding no</pre>
X11Forwarding no
<pre>AllowUsers username1 username2</pre>
 
<pre>DenyUsers baduser</pre>
# Отключить TCP forwarding
<pre>PubkeyAuthentication yes</pre>
AllowTcpForwarding no
<pre>AuthorizedKeysFile .ssh/authorized_keys</pre>
 
<pre>PasswordAuthentication yes</pre>
# Ограничить пользователей
AllowUsers username1 username2
 
# Запретить определенных пользователей
DenyUsers baduser
 
# Настройки ключей
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
 
# Отключить аутентификацию по паролю (после настройки ключей)
PasswordAuthentication yes
</code>


== 5. Настройка SSH ключей ==
== 5. Настройка SSH ключей ==
Строка 122: Строка 74:


1. Сгенерируйте пару ключей:
1. Сгенерируйте пару ключей:
<code>
<pre>ssh-keygen -t rsa -b 4096 -C "your_email@example.com"</pre>
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
</code>


2. Выберите место сохранения (по умолчанию ~/.ssh/id_rsa)
2. Выберите место сохранения (по умолчанию ~/.ssh/id_rsa)
Строка 132: Строка 82:


1. Скопируйте публичный ключ на сервер:
1. Скопируйте публичный ключ на сервер:
<code>
<pre>ssh-copy-id username@server_ip</pre>
ssh-copy-id username@server_ip
</code>


2. Или вручную:
2. Или вручную:
<code>
<pre>cat ~/.ssh/id_rsa.pub | ssh username@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"</pre>
cat ~/.ssh/id_rsa.pub | ssh username@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
</code>


=== Настройка прав доступа ===
=== Настройка прав доступа ===


1. Установите правильные права на файлы:
1. Установите правильные права на файлы:
<code>
<pre>chmod 700 ~/.ssh</pre>
chmod 700 ~/.ssh
<pre>chmod 600 ~/.ssh/authorized_keys</pre>
chmod 600 ~/.ssh/authorized_keys
<pre>chmod 600 ~/.ssh/id_rsa</pre>
chmod 600 ~/.ssh/id_rsa
<pre>chmod 644 ~/.ssh/id_rsa.pub</pre>
chmod 644 ~/.ssh/id_rsa.pub
</code>


== 6. Дополнительные настройки безопасности ==
== 6. Дополнительные настройки безопасности ==
Строка 156: Строка 100:


1. Измените порт в конфигурации:
1. Измените порт в конфигурации:
<code>
<pre>Port 2222</pre>
Port 2222
</code>


2. Обновите правила файрвола:
2. Обновите правила файрвола:
<code>
<pre>sudo ufw allow 2222/tcp</pre>
sudo ufw allow 2222/tcp
<pre>sudo ufw deny 22/tcp</pre>
sudo ufw deny 22/tcp
</code>


3. Перезапустите SSH:
3. Перезапустите SSH:
<code>
<pre>sudo systemctl restart ssh</pre>
sudo systemctl restart ssh
</code>


=== Настройка двухфакторной аутентификации ===
=== Настройка двухфакторной аутентификации ===


1. Установите Google Authenticator:
1. Установите Google Authenticator:
<code>
<pre>sudo apt install libpam-google-authenticator</pre>
sudo apt install libpam-google-authenticator
</code>


2. Настройте для пользователя:
2. Настройте для пользователя:
<code>
<pre>google-authenticator</pre>
google-authenticator
</code>


3. Добавьте в конфигурацию SSH:
3. Добавьте в конфигурацию SSH:
<code>
<pre>ChallengeResponseAuthentication yes</pre>
# В /etc/ssh/sshd_config
<pre>UsePAM yes</pre>
ChallengeResponseAuthentication yes
UsePAM yes
</code>


4. Настройте PAM:
4. Настройте PAM:
<code>
<pre>sudo nano /etc/pam.d/sshd</pre>
sudo nano /etc/pam.d/sshd
</code>


5. Добавьте строку:
5. Добавьте строку:
<code>
<pre>auth required pam_google_authenticator.so</pre>
auth required pam_google_authenticator.so
</code>


=== Настройка fail2ban для SSH ===
=== Настройка fail2ban для SSH ===


1. Установите fail2ban:
1. Установите fail2ban:
<code>
<pre>sudo apt install fail2ban</pre>
sudo apt install fail2ban
</code>


2. Создайте конфигурацию для SSH:
2. Создайте конфигурацию для SSH:
<code>
<pre>sudo nano /etc/fail2ban/jail.local</pre>
sudo nano /etc/fail2ban/jail.local
</code>


3. Добавьте настройки:
3. Добавьте настройки:
<code>
<pre>[sshd]</pre>
[sshd]
<pre>enabled = true</pre>
enabled = true
<pre>port = ssh</pre>
port = ssh
<pre>logpath = /var/log/auth.log</pre>
logpath = /var/log/auth.log
<pre>maxretry = 3</pre>
maxretry = 3
<pre>bantime = 3600</pre>
bantime = 3600
</code>


4. Запустите fail2ban:
4. Запустите fail2ban:
<code>
<pre>sudo systemctl start fail2ban</pre>
sudo systemctl start fail2ban
<pre>sudo systemctl enable fail2ban</pre>
sudo systemctl enable fail2ban
</code>


== 7. Настройка для конкретных случаев ==
== 7. Настройка для конкретных случаев ==
Строка 233: Строка 152:


1. Разрешите только определенным пользователям:
1. Разрешите только определенным пользователям:
<code>
<pre>AllowUsers webadmin deployer</pre>
AllowUsers webadmin deployer
</code>


2. Настройте ограничения по времени:
2. Настройте ограничения по времени:
<code>
<pre>Match User webadmin</pre>
# В /etc/ssh/sshd_config
<pre>AllowUsers webadmin</pre>
Match User webadmin
<pre>X11Forwarding no</pre>
    AllowUsers webadmin
<pre>AllowTcpForwarding no</pre>
    X11Forwarding no
    AllowTcpForwarding no
</code>


=== Настройка для разработчиков ===
=== Настройка для разработчиков ===


1. Разрешите порт forwarding:
1. Разрешите порт forwarding:
<code>
<pre>AllowTcpForwarding yes</pre>
AllowTcpForwarding yes
<pre>GatewayPorts yes</pre>
GatewayPorts yes
</code>


2. Настройте SSH туннели:
2. Настройте SSH туннели:
<code>
<pre>ssh -L 8080:localhost:80 username@server_ip</pre>
# Создание туннеля
<pre>ssh -R 8080:localhost:80 username@server_ip</pre>
ssh -L 8080:localhost:80 username@server_ip
 
# Обратный туннель
ssh -R 8080:localhost:80 username@server_ip
</code>


=== Настройка для резервного копирования ===
=== Настройка для резервного копирования ===


1. Создайте пользователя для бэкапов:
1. Создайте пользователя для бэкапов:
<code>
<pre>sudo useradd -m -s /bin/bash backupuser</pre>
sudo useradd -m -s /bin/bash backupuser
</code>


2. Настройте ограниченный доступ:
2. Настройте ограниченный доступ:
<code>
<pre>Match User backupuser</pre>
# В /etc/ssh/sshd_config
<pre>AllowUsers backupuser</pre>
Match User backupuser
<pre>ForceCommand /usr/local/bin/backup-script.sh</pre>
    AllowUsers backupuser
<pre>X11Forwarding no</pre>
    ForceCommand /usr/local/bin/backup-script.sh
<pre>AllowTcpForwarding no</pre>
    X11Forwarding no
    AllowTcpForwarding no
</code>


== 8. Мониторинг и логирование ==
== 8. Мониторинг и логирование ==
Строка 285: Строка 187:


1. Включите подробное логирование:
1. Включите подробное логирование:
<code>
<pre>LogLevel VERBOSE</pre>
# В /etc/ssh/sshd_config
<pre>SyslogFacility AUTH</pre>
LogLevel VERBOSE
SyslogFacility AUTH
</code>


2. Настройте ротацию логов:
2. Настройте ротацию логов:
<code>
<pre>sudo nano /etc/logrotate.d/ssh</pre>
sudo nano /etc/logrotate.d/ssh
</code>


3. Добавьте конфигурацию:
3. Добавьте конфигурацию:
<code>
<pre>/var/log/auth.log {</pre>
/var/log/auth.log {
<pre>weekly</pre>
    weekly
<pre>missingok</pre>
    missingok
<pre>rotate 4</pre>
    rotate 4
<pre>compress</pre>
    compress
<pre>delaycompress</pre>
    delaycompress
<pre>notifempty</pre>
    notifempty
<pre>create 640 root adm</pre>
    create 640 root adm
<pre>}</pre>
}
</code>


=== Мониторинг подключений ===
=== Мониторинг подключений ===


1. Просмотрите активные SSH сессии:
1. Просмотрите активные SSH сессии:
<code>
<pre>who</pre>
who
<pre>w</pre>
w
</code>


2. Просмотрите историю входов:
2. Просмотрите историю входов:
<code>
<pre>last</pre>
last
<pre>lastb</pre>
lastb
</code>


3. Просмотрите логи SSH:
3. Просмотрите логи SSH:
<code>
<pre>sudo tail -f /var/log/auth.log | grep sshd</pre>
sudo tail -f /var/log/auth.log | grep sshd
</code>


=== Создание скрипта мониторинга ===
=== Создание скрипта мониторинга ===


1. Создайте скрипт мониторинга:
1. Создайте скрипт мониторинга:
<code>
<pre>sudo nano /usr/local/bin/ssh-monitor.sh</pre>
sudo nano /usr/local/bin/ssh-monitor.sh
</code>


2. Добавьте содержимое:
2. Добавьте содержимое:
<code>
<pre>echo "=== SSH Connections ==="</pre>
#!/bin/bash
<pre>who</pre>
 
<pre>echo "=== Failed Login Attempts ==="</pre>
echo "=== SSH Connections ==="
<pre>sudo grep "Failed password" /var/log/auth.log | tail -10</pre>
who
<pre>echo "=== Recent SSH Logins ==="</pre>
 
<pre>sudo grep "sshd" /var/log/auth.log | tail -10</pre>
echo "=== Failed Login Attempts ==="
sudo grep "Failed password" /var/log/auth.log | tail -10
 
echo "=== Recent SSH Logins ==="
sudo grep "sshd" /var/log/auth.log | tail -10
</code>


3. Сделайте скрипт исполняемым:
3. Сделайте скрипт исполняемым:
<code>
<pre>sudo chmod +x /usr/local/bin/ssh-monitor.sh</pre>
sudo chmod +x /usr/local/bin/ssh-monitor.sh
</code>


== 9. Управление SSH сервером ==
== 9. Управление SSH сервером ==
Строка 359: Строка 238:


* '''Запуск SSH''':
* '''Запуск SSH''':
<code>
<pre>sudo systemctl start ssh</pre>
sudo systemctl start ssh
</code>


* '''Остановка SSH''':
* '''Остановка SSH''':
<code>
<pre>sudo systemctl stop ssh</pre>
sudo systemctl stop ssh
</code>


* '''Перезапуск SSH''':
* '''Перезапуск SSH''':
<code>
<pre>sudo systemctl restart ssh</pre>
sudo systemctl restart ssh
</code>


* '''Перезагрузка конфигурации''':
* '''Перезагрузка конфигурации''':
<code>
<pre>sudo systemctl reload ssh</pre>
sudo systemctl reload ssh
</code>


* '''Проверка статуса''':
* '''Проверка статуса''':
<code>
<pre>sudo systemctl status ssh</pre>
sudo systemctl status ssh
</code>


* '''Проверка конфигурации''':
* '''Проверка конфигурации''':
<code>
<pre>sudo sshd -t</pre>
sudo sshd -t
</code>


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


1. Добавьте пользователя в группу ssh:
1. Добавьте пользователя в группу ssh:
<code>
<pre>sudo usermod -aG ssh username</pre>
sudo usermod -aG ssh username
</code>


2. Заблокируйте пользователя:
2. Заблокируйте пользователя:
<code>
<pre>sudo usermod -L username</pre>
sudo usermod -L username
</code>


3. Разблокируйте пользователя:
3. Разблокируйте пользователя:
<code>
<pre>sudo usermod -U username</pre>
sudo usermod -U username
</code>


== 10. Устранение неполадок ==
== 10. Устранение неполадок ==
Строка 410: Строка 271:


1. '''SSH не запускается''':
1. '''SSH не запускается''':
* Проверьте конфигурацию: <code>sudo sshd -t</code>
* Проверьте конфигурацию: <pre>sudo sshd -t</pre>
* Проверьте логи: <code>sudo journalctl -u ssh</code>
* Проверьте логи: <pre>sudo journalctl -u ssh</pre>


2. '''Не могу подключиться по SSH''':
2. '''Не могу подключиться по SSH''':
* Проверьте статус сервиса: <code>sudo systemctl status ssh</code>
* Проверьте статус сервиса: <pre>sudo systemctl status ssh</pre>
* Проверьте файрвол: <code>sudo ufw status</code>
* Проверьте файрвол: <pre>sudo ufw status</pre>
* Проверьте порт: <code>sudo netstat -tlnp | grep :22</code>
* Проверьте порт: <pre>sudo netstat -tlnp | grep :22</pre>


3. '''Ошибка "Permission denied"''':
3. '''Ошибка "Permission denied"''':
* Проверьте права на ключи: <code>ls -la ~/.ssh/</code>
* Проверьте права на ключи: <pre>ls -la ~/.ssh/</pre>
* Проверьте конфигурацию SSH: <code>sudo nano /etc/ssh/sshd_config</code>
* Проверьте конфигурацию SSH: <pre>sudo nano /etc/ssh/sshd_config</pre>


=== Диагностика подключения ===
=== Диагностика подключения ===


1. Подключитесь с подробным выводом:
1. Подключитесь с подробным выводом:
<code>
<pre>ssh -v username@server_ip</pre>
ssh -v username@server_ip
</code>


2. Проверьте сетевую связность:
2. Проверьте сетевую связность:
<code>
<pre>ping server_ip</pre>
ping server_ip
<pre>telnet server_ip 22</pre>
telnet server_ip 22
</code>


3. Проверьте DNS:
3. Проверьте DNS:
<code>
<pre>nslookup server_ip</pre>
nslookup server_ip
</code>


== 11. Дополнительные настройки ==
== 11. Дополнительные настройки ==
Строка 445: Строка 300:


1. Создайте конфигурацию SSH клиента:
1. Создайте конфигурацию SSH клиента:
<code>
<pre>nano ~/.ssh/config</pre>
nano ~/.ssh/config
</code>


2. Добавьте настройки:
2. Добавьте настройки:
<code>
<pre>Host myserver</pre>
Host myserver
<pre>HostName server_ip</pre>
    HostName server_ip
<pre>Port 22</pre>
    Port 22
<pre>User username</pre>
    User username
<pre>IdentityFile ~/.ssh/id_rsa</pre>
    IdentityFile ~/.ssh/id_rsa
<pre>ServerAliveInterval 60</pre>
    ServerAliveInterval 60
<pre>ServerAliveCountMax 3</pre>
    ServerAliveCountMax 3
</code>


=== Настройка SSH агента ===
=== Настройка SSH агента ===


1. Запустите SSH агент:
1. Запустите SSH агент:
<code>
<pre>eval "$(ssh-agent -s)"</pre>
eval "$(ssh-agent -s)"
</code>


2. Добавьте ключ в агент:
2. Добавьте ключ в агент:
<code>
<pre>ssh-add ~/.ssh/id_rsa</pre>
ssh-add ~/.ssh/id_rsa
</code>


3. Настройте автозапуск агента:
3. Настройте автозапуск агента:
<code>
<pre>echo 'eval "$(ssh-agent -s)"' >> ~/.bashrc</pre>
echo 'eval "$(ssh-agent -s)"' >> ~/.bashrc
<pre>echo 'ssh-add ~/.ssh/id_rsa' >> ~/.bashrc</pre>
echo 'ssh-add ~/.ssh/id_rsa' >> ~/.bashrc
</code>


=== Настройка SSH туннелей ===
=== Настройка SSH туннелей ===


1. Создайте туннель для базы данных:
1. Создайте туннель для базы данных:
<code>
<pre>ssh -L 3306:localhost:3306 username@server_ip</pre>
ssh -L 3306:localhost:3306 username@server_ip
</code>


2. Создайте SOCKS прокси:
2. Создайте SOCKS прокси:
<code>
<pre>ssh -D 8080 username@server_ip</pre>
ssh -D 8080 username@server_ip
</code>


3. Настройте автоматический туннель:
3. Настройте автоматический туннель:
<code>
<pre>Host tunnel</pre>
# В ~/.ssh/config
<pre>HostName server_ip</pre>
Host tunnel
<pre>LocalForward 3306 localhost:3306</pre>
    HostName server_ip
<pre>LocalForward 8080 localhost:80</pre>
    LocalForward 3306 localhost:3306
    LocalForward 8080 localhost:80
</code>


== 12. Безопасность и рекомендации ==
== 12. Безопасность и рекомендации ==
Строка 504: Строка 342:


1. '''Регулярно обновляйте SSH''':
1. '''Регулярно обновляйте SSH''':
<code>
<pre>sudo apt update && sudo apt upgrade openssh-server</pre>
sudo apt update && sudo apt upgrade openssh-server
</code>


2. '''Используйте сильные пароли или ключи'''
2. '''Используйте сильные пароли или ключи'''
Строка 517: Строка 353:


1. Проверьте конфигурацию на уязвимости:
1. Проверьте конфигурацию на уязвимости:
<code>
<pre>sudo ssh-audit server_ip</pre>
sudo ssh-audit server_ip
</code>


2. Проверьте версию OpenSSH:
2. Проверьте версию OpenSSH:
<code>
<pre>ssh -V</pre>
ssh -V
</code>


3. Проверьте поддерживаемые алгоритмы:
3. Проверьте поддерживаемые алгоритмы:
<code>
<pre>ssh -Q cipher</pre>
ssh -Q cipher
<pre>ssh -Q mac</pre>
ssh -Q mac
<pre>ssh -Q kex</pre>
ssh -Q kex
</code>


== Заключение ==
== Заключение ==

Текущая версия от 10:44, 15 октября 2025

Установка и настройка SSH сервера

1. Подготовка системы

  • Войдите в систему под учетной записью с правами root или пользователя с правами sudo.
  • Убедитесь, что у вас есть физический доступ к серверу (на случай блокировки SSH).

2. Установка SSH сервера

Для Ubuntu/Debian

1. Обновите список пакетов:

sudo apt update

2. Установите OpenSSH сервер:

sudo apt install openssh-server

3. Запустите и включите автозапуск SSH:

sudo systemctl start ssh
sudo systemctl enable ssh

Для CentOS/RHEL/Fedora

1. Установите OpenSSH сервер:

sudo yum install openssh-server
  1. или для новых версий
sudo dnf install openssh-server

2. Запустите и включите автозапуск:

sudo systemctl start sshd
sudo systemctl enable sshd

3. Проверка установки

1. Проверьте статус SSH сервера:

sudo systemctl status ssh

2. Проверьте, что SSH слушает на порту 22:

sudo netstat -tlnp | grep :22

3. Проверьте версию OpenSSH:

ssh -V

4. Базовая настройка SSH

Основная конфигурация

1. Отредактируйте файл конфигурации SSH:

sudo nano /etc/ssh/sshd_config

2. Настройте основные параметры:

Port 22
Protocol 2
ListenAddress 0.0.0.0
PermitRootLogin no
PermitEmptyPasswords no
MaxAuthTries 3
LoginGraceTime 60

Настройка безопасности

1. Добавьте дополнительные настройки безопасности:

X11Forwarding no
AllowTcpForwarding no
AllowUsers username1 username2
DenyUsers baduser
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes

5. Настройка SSH ключей

Генерация SSH ключей на клиенте

1. Сгенерируйте пару ключей:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

2. Выберите место сохранения (по умолчанию ~/.ssh/id_rsa) 3. Введите пароль для ключа (рекомендуется)

Копирование ключа на сервер

1. Скопируйте публичный ключ на сервер:

ssh-copy-id username@server_ip

2. Или вручную:

cat ~/.ssh/id_rsa.pub | ssh username@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Настройка прав доступа

1. Установите правильные права на файлы:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub

6. Дополнительные настройки безопасности

Изменение порта SSH

1. Измените порт в конфигурации:

Port 2222

2. Обновите правила файрвола:

sudo ufw allow 2222/tcp
sudo ufw deny 22/tcp

3. Перезапустите SSH:

sudo systemctl restart ssh

Настройка двухфакторной аутентификации

1. Установите Google Authenticator:

sudo apt install libpam-google-authenticator

2. Настройте для пользователя:

google-authenticator

3. Добавьте в конфигурацию SSH:

ChallengeResponseAuthentication yes
UsePAM yes

4. Настройте PAM:

sudo nano /etc/pam.d/sshd

5. Добавьте строку:

auth required pam_google_authenticator.so

Настройка fail2ban для SSH

1. Установите fail2ban:

sudo apt install fail2ban

2. Создайте конфигурацию для SSH:

sudo nano /etc/fail2ban/jail.local

3. Добавьте настройки:

[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600

4. Запустите fail2ban:

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

7. Настройка для конкретных случаев

Настройка для веб-сервера

1. Разрешите только определенным пользователям:

AllowUsers webadmin deployer

2. Настройте ограничения по времени:

Match User webadmin
AllowUsers webadmin
X11Forwarding no
AllowTcpForwarding no

Настройка для разработчиков

1. Разрешите порт forwarding:

AllowTcpForwarding yes
GatewayPorts yes

2. Настройте SSH туннели:

ssh -L 8080:localhost:80 username@server_ip
ssh -R 8080:localhost:80 username@server_ip

Настройка для резервного копирования

1. Создайте пользователя для бэкапов:

sudo useradd -m -s /bin/bash backupuser

2. Настройте ограниченный доступ:

Match User backupuser
AllowUsers backupuser
ForceCommand /usr/local/bin/backup-script.sh
X11Forwarding no
AllowTcpForwarding no

8. Мониторинг и логирование

Настройка логирования

1. Включите подробное логирование:

LogLevel VERBOSE
SyslogFacility AUTH

2. Настройте ротацию логов:

sudo nano /etc/logrotate.d/ssh

3. Добавьте конфигурацию:

/var/log/auth.log {
weekly
missingok
rotate 4
compress
delaycompress
notifempty
create 640 root adm
}

Мониторинг подключений

1. Просмотрите активные SSH сессии:

who
w

2. Просмотрите историю входов:

last
lastb

3. Просмотрите логи SSH:

sudo tail -f /var/log/auth.log | grep sshd

Создание скрипта мониторинга

1. Создайте скрипт мониторинга:

sudo nano /usr/local/bin/ssh-monitor.sh

2. Добавьте содержимое:

echo "=== SSH Connections ==="
who
echo "=== Failed Login Attempts ==="
sudo grep "Failed password" /var/log/auth.log | tail -10
echo "=== Recent SSH Logins ==="
sudo grep "sshd" /var/log/auth.log | tail -10

3. Сделайте скрипт исполняемым:

sudo chmod +x /usr/local/bin/ssh-monitor.sh

9. Управление SSH сервером

Основные команды управления

  • Запуск SSH:
sudo systemctl start ssh
  • Остановка SSH:
sudo systemctl stop ssh
  • Перезапуск SSH:
sudo systemctl restart ssh
  • Перезагрузка конфигурации:
sudo systemctl reload ssh
  • Проверка статуса:
sudo systemctl status ssh
  • Проверка конфигурации:
sudo sshd -t

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

1. Добавьте пользователя в группу ssh:

sudo usermod -aG ssh username

2. Заблокируйте пользователя:

sudo usermod -L username

3. Разблокируйте пользователя:

sudo usermod -U username

10. Устранение неполадок

Частые проблемы

1. SSH не запускается:

  • Проверьте конфигурацию:
    sudo sshd -t
  • Проверьте логи:
    sudo journalctl -u ssh

2. Не могу подключиться по SSH:

  • Проверьте статус сервиса:
    sudo systemctl status ssh
  • Проверьте файрвол:
    sudo ufw status
  • Проверьте порт:
    sudo netstat -tlnp | grep :22

3. Ошибка "Permission denied":

  • Проверьте права на ключи:
    ls -la ~/.ssh/
  • Проверьте конфигурацию SSH:
    sudo nano /etc/ssh/sshd_config

Диагностика подключения

1. Подключитесь с подробным выводом:

ssh -v username@server_ip

2. Проверьте сетевую связность:

ping server_ip
telnet server_ip 22

3. Проверьте DNS:

nslookup server_ip

11. Дополнительные настройки

Настройка SSH клиента

1. Создайте конфигурацию SSH клиента:

nano ~/.ssh/config

2. Добавьте настройки:

Host myserver
HostName server_ip
Port 22
User username
IdentityFile ~/.ssh/id_rsa
ServerAliveInterval 60
ServerAliveCountMax 3

Настройка SSH агента

1. Запустите SSH агент:

eval "$(ssh-agent -s)"

2. Добавьте ключ в агент:

ssh-add ~/.ssh/id_rsa

3. Настройте автозапуск агента:

echo 'eval "$(ssh-agent -s)"' >> ~/.bashrc
echo 'ssh-add ~/.ssh/id_rsa' >> ~/.bashrc

Настройка SSH туннелей

1. Создайте туннель для базы данных:

ssh -L 3306:localhost:3306 username@server_ip

2. Создайте SOCKS прокси:

ssh -D 8080 username@server_ip

3. Настройте автоматический туннель:

Host tunnel
HostName server_ip
LocalForward 3306 localhost:3306
LocalForward 8080 localhost:80

12. Безопасность и рекомендации

Рекомендации по безопасности

1. Регулярно обновляйте SSH:

sudo apt update && sudo apt upgrade openssh-server

2. Используйте сильные пароли или ключи 3. Отключите root вход 4. Измените стандартный порт 5. Настройте fail2ban 6. Используйте двухфакторную аутентификацию

Аудит безопасности

1. Проверьте конфигурацию на уязвимости:

sudo ssh-audit server_ip

2. Проверьте версию OpenSSH:

ssh -V

3. Проверьте поддерживаемые алгоритмы:

ssh -Q cipher
ssh -Q mac
ssh -Q kex

Заключение

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

Для размещения ваших проектов с настроенным SSH на надежном хостинге рекомендуем воспользоваться услугами [ARK-HOSTER.RU](https://ark-hoster.ru):

Наши специалисты помогут с настройкой SSH и обеспечением безопасности вашего сервера!