Установка и настройка SSH сервера: различия между версиями
Admin (обсуждение | вклад) Новая страница: «= Установка и настройка SSH сервера = == 1. Подготовка системы == * Войдите в систему под учет…» |
Admin (обсуждение | вклад) Нет описания правки |
||
| (не показана 1 промежуточная версия этого же участника) | |||
| Строка 11: | Строка 11: | ||
1. Обновите список пакетов: | 1. Обновите список пакетов: | ||
< | <pre>sudo apt update</pre> | ||
sudo apt update | |||
</ | |||
2. Установите OpenSSH сервер: | 2. Установите OpenSSH сервер: | ||
< | <pre>sudo apt install openssh-server</pre> | ||
sudo apt install openssh-server | |||
</ | |||
3. Запустите и включите автозапуск SSH: | 3. Запустите и включите автозапуск SSH: | ||
< | <pre>sudo systemctl start ssh</pre> | ||
sudo systemctl start ssh | <pre>sudo systemctl enable ssh</pre> | ||
sudo systemctl enable ssh | |||
</ | |||
=== Для CentOS/RHEL/Fedora === | === Для CentOS/RHEL/Fedora === | ||
1. Установите OpenSSH сервер: | 1. Установите OpenSSH сервер: | ||
< | <pre>sudo yum install openssh-server</pre> | ||
sudo yum install openssh-server | |||
</ | |||
# или для новых версий | # или для новых версий | ||
< | <pre>sudo dnf install openssh-server</pre> | ||
sudo dnf install openssh-server | |||
</ | |||
2. Запустите и включите автозапуск: | 2. Запустите и включите автозапуск: | ||
< | <pre>sudo systemctl start sshd</pre> | ||
sudo systemctl start sshd | <pre>sudo systemctl enable sshd</pre> | ||
sudo systemctl enable sshd | |||
</ | |||
== 3. Проверка установки == | == 3. Проверка установки == | ||
1. Проверьте статус SSH сервера: | 1. Проверьте статус SSH сервера: | ||
< | <pre>sudo systemctl status ssh</pre> | ||
sudo systemctl status ssh | |||
</ | |||
2. Проверьте, что SSH слушает на порту 22: | 2. Проверьте, что SSH слушает на порту 22: | ||
< | <pre>sudo netstat -tlnp | grep :22</pre> | ||
sudo netstat -tlnp | grep :22 | |||
</ | |||
3. Проверьте версию OpenSSH: | 3. Проверьте версию OpenSSH: | ||
< | <pre>ssh -V</pre> | ||
ssh -V | |||
</ | |||
== 4. Базовая настройка SSH == | == 4. Базовая настройка SSH == | ||
| Строка 65: | Строка 47: | ||
1. Отредактируйте файл конфигурации SSH: | 1. Отредактируйте файл конфигурации SSH: | ||
< | <pre>sudo nano /etc/ssh/sshd_config</pre> | ||
sudo nano /etc/ssh/sshd_config | |||
</ | |||
2. Настройте основные параметры: | 2. Настройте основные параметры: | ||
< | <pre>Port 22</pre> | ||
<pre>Protocol 2</pre> | |||
Port 22 | <pre>ListenAddress 0.0.0.0</pre> | ||
<pre>PermitRootLogin no</pre> | |||
<pre>PermitEmptyPasswords no</pre> | |||
Protocol 2 | <pre>MaxAuthTries 3</pre> | ||
<pre>LoginGraceTime 60</pre> | |||
ListenAddress 0.0.0.0 | |||
PermitRootLogin no | |||
PermitEmptyPasswords no | |||
MaxAuthTries 3 | |||
LoginGraceTime 60 | |||
</ | |||
=== Настройка безопасности === | === Настройка безопасности === | ||
1. Добавьте дополнительные настройки безопасности: | 1. Добавьте дополнительные настройки безопасности: | ||
< | <pre>X11Forwarding no</pre> | ||
<pre>AllowTcpForwarding no</pre> | |||
X11Forwarding no | <pre>AllowUsers username1 username2</pre> | ||
<pre>DenyUsers baduser</pre> | |||
<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 | |||
</ | |||
== 5. Настройка SSH ключей == | == 5. Настройка SSH ключей == | ||
| Строка 122: | Строка 74: | ||
1. Сгенерируйте пару ключей: | 1. Сгенерируйте пару ключей: | ||
< | <pre>ssh-keygen -t rsa -b 4096 -C "your_email@example.com"</pre> | ||
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" | |||
</ | |||
2. Выберите место сохранения (по умолчанию ~/.ssh/id_rsa) | 2. Выберите место сохранения (по умолчанию ~/.ssh/id_rsa) | ||
| Строка 132: | Строка 82: | ||
1. Скопируйте публичный ключ на сервер: | 1. Скопируйте публичный ключ на сервер: | ||
< | <pre>ssh-copy-id username@server_ip</pre> | ||
ssh-copy-id username@server_ip | |||
</ | |||
2. Или вручную: | 2. Или вручную: | ||
< | <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" | |||
</ | |||
=== Настройка прав доступа === | === Настройка прав доступа === | ||
1. Установите правильные права на файлы: | 1. Установите правильные права на файлы: | ||
< | <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 | |||
</ | |||
== 6. Дополнительные настройки безопасности == | == 6. Дополнительные настройки безопасности == | ||
| Строка 156: | Строка 100: | ||
1. Измените порт в конфигурации: | 1. Измените порт в конфигурации: | ||
< | <pre>Port 2222</pre> | ||
Port 2222 | |||
</ | |||
2. Обновите правила файрвола: | 2. Обновите правила файрвола: | ||
< | <pre>sudo ufw allow 2222/tcp</pre> | ||
sudo ufw allow 2222/tcp | <pre>sudo ufw deny 22/tcp</pre> | ||
sudo ufw deny 22/tcp | |||
</ | |||
3. Перезапустите SSH: | 3. Перезапустите SSH: | ||
< | <pre>sudo systemctl restart ssh</pre> | ||
sudo systemctl restart ssh | |||
</ | |||
=== Настройка двухфакторной аутентификации === | === Настройка двухфакторной аутентификации === | ||
1. Установите Google Authenticator: | 1. Установите Google Authenticator: | ||
< | <pre>sudo apt install libpam-google-authenticator</pre> | ||
sudo apt install libpam-google-authenticator | |||
</ | |||
2. Настройте для пользователя: | 2. Настройте для пользователя: | ||
< | <pre>google-authenticator</pre> | ||
google-authenticator | |||
</ | |||
3. Добавьте в конфигурацию SSH: | 3. Добавьте в конфигурацию SSH: | ||
< | <pre>ChallengeResponseAuthentication yes</pre> | ||
<pre>UsePAM yes</pre> | |||
ChallengeResponseAuthentication yes | |||
UsePAM yes | |||
</ | |||
4. Настройте PAM: | 4. Настройте PAM: | ||
< | <pre>sudo nano /etc/pam.d/sshd</pre> | ||
sudo nano /etc/pam.d/sshd | |||
</ | |||
5. Добавьте строку: | 5. Добавьте строку: | ||
< | <pre>auth required pam_google_authenticator.so</pre> | ||
auth required pam_google_authenticator.so | |||
</ | |||
=== Настройка fail2ban для SSH === | === Настройка fail2ban для SSH === | ||
1. Установите fail2ban: | 1. Установите fail2ban: | ||
< | <pre>sudo apt install fail2ban</pre> | ||
sudo apt install fail2ban | |||
</ | |||
2. Создайте конфигурацию для SSH: | 2. Создайте конфигурацию для SSH: | ||
< | <pre>sudo nano /etc/fail2ban/jail.local</pre> | ||
sudo nano /etc/fail2ban/jail.local | |||
</ | |||
3. Добавьте настройки: | 3. Добавьте настройки: | ||
< | <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 | |||
</ | |||
4. Запустите fail2ban: | 4. Запустите fail2ban: | ||
< | <pre>sudo systemctl start fail2ban</pre> | ||
sudo systemctl start fail2ban | <pre>sudo systemctl enable fail2ban</pre> | ||
sudo systemctl enable fail2ban | |||
</ | |||
== 7. Настройка для конкретных случаев == | == 7. Настройка для конкретных случаев == | ||
| Строка 233: | Строка 152: | ||
1. Разрешите только определенным пользователям: | 1. Разрешите только определенным пользователям: | ||
< | <pre>AllowUsers webadmin deployer</pre> | ||
AllowUsers webadmin deployer | |||
</ | |||
2. Настройте ограничения по времени: | 2. Настройте ограничения по времени: | ||
< | <pre>Match User webadmin</pre> | ||
<pre>AllowUsers webadmin</pre> | |||
Match User webadmin | <pre>X11Forwarding no</pre> | ||
<pre>AllowTcpForwarding no</pre> | |||
</ | |||
=== Настройка для разработчиков === | === Настройка для разработчиков === | ||
1. Разрешите порт forwarding: | 1. Разрешите порт forwarding: | ||
< | <pre>AllowTcpForwarding yes</pre> | ||
AllowTcpForwarding yes | <pre>GatewayPorts yes</pre> | ||
GatewayPorts yes | |||
</ | |||
2. Настройте SSH туннели: | 2. Настройте SSH туннели: | ||
< | <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 | |||
</ | |||
=== Настройка для резервного копирования === | === Настройка для резервного копирования === | ||
1. Создайте пользователя для бэкапов: | 1. Создайте пользователя для бэкапов: | ||
< | <pre>sudo useradd -m -s /bin/bash backupuser</pre> | ||
sudo useradd -m -s /bin/bash backupuser | |||
</ | |||
2. Настройте ограниченный доступ: | 2. Настройте ограниченный доступ: | ||
< | <pre>Match User backupuser</pre> | ||
<pre>AllowUsers backupuser</pre> | |||
Match User backupuser | <pre>ForceCommand /usr/local/bin/backup-script.sh</pre> | ||
<pre>X11Forwarding no</pre> | |||
<pre>AllowTcpForwarding no</pre> | |||
</ | |||
== 8. Мониторинг и логирование == | == 8. Мониторинг и логирование == | ||
| Строка 285: | Строка 187: | ||
1. Включите подробное логирование: | 1. Включите подробное логирование: | ||
< | <pre>LogLevel VERBOSE</pre> | ||
<pre>SyslogFacility AUTH</pre> | |||
LogLevel VERBOSE | |||
SyslogFacility AUTH | |||
</ | |||
2. Настройте ротацию логов: | 2. Настройте ротацию логов: | ||
< | <pre>sudo nano /etc/logrotate.d/ssh</pre> | ||
sudo nano /etc/logrotate.d/ssh | |||
</ | |||
3. Добавьте конфигурацию: | 3. Добавьте конфигурацию: | ||
< | <pre>/var/log/auth.log {</pre> | ||
/var/log/auth.log { | <pre>weekly</pre> | ||
<pre>missingok</pre> | |||
<pre>rotate 4</pre> | |||
<pre>compress</pre> | |||
<pre>delaycompress</pre> | |||
<pre>notifempty</pre> | |||
<pre>create 640 root adm</pre> | |||
<pre>}</pre> | |||
} | |||
</ | |||
=== Мониторинг подключений === | === Мониторинг подключений === | ||
1. Просмотрите активные SSH сессии: | 1. Просмотрите активные SSH сессии: | ||
< | <pre>who</pre> | ||
who | <pre>w</pre> | ||
w | |||
</ | |||
2. Просмотрите историю входов: | 2. Просмотрите историю входов: | ||
< | <pre>last</pre> | ||
last | <pre>lastb</pre> | ||
lastb | |||
</ | |||
3. Просмотрите логи SSH: | 3. Просмотрите логи SSH: | ||
< | <pre>sudo tail -f /var/log/auth.log | grep sshd</pre> | ||
sudo tail -f /var/log/auth.log | grep sshd | |||
</ | |||
=== Создание скрипта мониторинга === | === Создание скрипта мониторинга === | ||
1. Создайте скрипт мониторинга: | 1. Создайте скрипт мониторинга: | ||
< | <pre>sudo nano /usr/local/bin/ssh-monitor.sh</pre> | ||
sudo nano /usr/local/bin/ssh-monitor.sh | |||
</ | |||
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
< | <pre>echo "=== SSH Connections ==="</pre> | ||
<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 | |||
</ | |||
3. Сделайте скрипт исполняемым: | 3. Сделайте скрипт исполняемым: | ||
< | <pre>sudo chmod +x /usr/local/bin/ssh-monitor.sh</pre> | ||
sudo chmod +x /usr/local/bin/ssh-monitor.sh | |||
</ | |||
== 9. Управление SSH сервером == | == 9. Управление SSH сервером == | ||
| Строка 359: | Строка 238: | ||
* '''Запуск SSH''': | * '''Запуск SSH''': | ||
< | <pre>sudo systemctl start ssh</pre> | ||
sudo systemctl start ssh | |||
</ | |||
* '''Остановка SSH''': | * '''Остановка SSH''': | ||
< | <pre>sudo systemctl stop ssh</pre> | ||
sudo systemctl stop ssh | |||
</ | |||
* '''Перезапуск SSH''': | * '''Перезапуск SSH''': | ||
< | <pre>sudo systemctl restart ssh</pre> | ||
sudo systemctl restart ssh | |||
</ | |||
* '''Перезагрузка конфигурации''': | * '''Перезагрузка конфигурации''': | ||
< | <pre>sudo systemctl reload ssh</pre> | ||
sudo systemctl reload ssh | |||
</ | |||
* '''Проверка статуса''': | * '''Проверка статуса''': | ||
< | <pre>sudo systemctl status ssh</pre> | ||
sudo systemctl status ssh | |||
</ | |||
* '''Проверка конфигурации''': | * '''Проверка конфигурации''': | ||
< | <pre>sudo sshd -t</pre> | ||
sudo sshd -t | |||
</ | |||
=== Управление пользователями === | === Управление пользователями === | ||
1. Добавьте пользователя в группу ssh: | 1. Добавьте пользователя в группу ssh: | ||
< | <pre>sudo usermod -aG ssh username</pre> | ||
sudo usermod -aG ssh username | |||
</ | |||
2. Заблокируйте пользователя: | 2. Заблокируйте пользователя: | ||
< | <pre>sudo usermod -L username</pre> | ||
sudo usermod -L username | |||
</ | |||
3. Разблокируйте пользователя: | 3. Разблокируйте пользователя: | ||
< | <pre>sudo usermod -U username</pre> | ||
sudo usermod -U username | |||
</ | |||
== 10. Устранение неполадок == | == 10. Устранение неполадок == | ||
| Строка 410: | Строка 271: | ||
1. '''SSH не запускается''': | 1. '''SSH не запускается''': | ||
* Проверьте конфигурацию: < | * Проверьте конфигурацию: <pre>sudo sshd -t</pre> | ||
* Проверьте логи: < | * Проверьте логи: <pre>sudo journalctl -u ssh</pre> | ||
2. '''Не могу подключиться по SSH''': | 2. '''Не могу подключиться по SSH''': | ||
* Проверьте статус сервиса: < | * Проверьте статус сервиса: <pre>sudo systemctl status ssh</pre> | ||
* Проверьте файрвол: < | * Проверьте файрвол: <pre>sudo ufw status</pre> | ||
* Проверьте порт: < | * Проверьте порт: <pre>sudo netstat -tlnp | grep :22</pre> | ||
3. '''Ошибка "Permission denied"''': | 3. '''Ошибка "Permission denied"''': | ||
* Проверьте права на ключи: < | * Проверьте права на ключи: <pre>ls -la ~/.ssh/</pre> | ||
* Проверьте конфигурацию SSH: < | * Проверьте конфигурацию SSH: <pre>sudo nano /etc/ssh/sshd_config</pre> | ||
=== Диагностика подключения === | === Диагностика подключения === | ||
1. Подключитесь с подробным выводом: | 1. Подключитесь с подробным выводом: | ||
< | <pre>ssh -v username@server_ip</pre> | ||
ssh -v username@server_ip | |||
</ | |||
2. Проверьте сетевую связность: | 2. Проверьте сетевую связность: | ||
< | <pre>ping server_ip</pre> | ||
ping server_ip | <pre>telnet server_ip 22</pre> | ||
telnet server_ip 22 | |||
</ | |||
3. Проверьте DNS: | 3. Проверьте DNS: | ||
< | <pre>nslookup server_ip</pre> | ||
nslookup server_ip | |||
</ | |||
== 11. Дополнительные настройки == | == 11. Дополнительные настройки == | ||
| Строка 445: | Строка 300: | ||
1. Создайте конфигурацию SSH клиента: | 1. Создайте конфигурацию SSH клиента: | ||
< | <pre>nano ~/.ssh/config</pre> | ||
nano ~/.ssh/config | |||
</ | |||
2. Добавьте настройки: | 2. Добавьте настройки: | ||
< | <pre>Host myserver</pre> | ||
Host myserver | <pre>HostName server_ip</pre> | ||
<pre>Port 22</pre> | |||
<pre>User username</pre> | |||
<pre>IdentityFile ~/.ssh/id_rsa</pre> | |||
<pre>ServerAliveInterval 60</pre> | |||
<pre>ServerAliveCountMax 3</pre> | |||
</ | |||
=== Настройка SSH агента === | === Настройка SSH агента === | ||
1. Запустите SSH агент: | 1. Запустите SSH агент: | ||
< | <pre>eval "$(ssh-agent -s)"</pre> | ||
eval "$(ssh-agent -s)" | |||
</ | |||
2. Добавьте ключ в агент: | 2. Добавьте ключ в агент: | ||
< | <pre>ssh-add ~/.ssh/id_rsa</pre> | ||
ssh-add ~/.ssh/id_rsa | |||
</ | |||
3. Настройте автозапуск агента: | 3. Настройте автозапуск агента: | ||
< | <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 | |||
</ | |||
=== Настройка SSH туннелей === | === Настройка SSH туннелей === | ||
1. Создайте туннель для базы данных: | 1. Создайте туннель для базы данных: | ||
< | <pre>ssh -L 3306:localhost:3306 username@server_ip</pre> | ||
ssh -L 3306:localhost:3306 username@server_ip | |||
</ | |||
2. Создайте SOCKS прокси: | 2. Создайте SOCKS прокси: | ||
< | <pre>ssh -D 8080 username@server_ip</pre> | ||
ssh -D 8080 username@server_ip | |||
</ | |||
3. Настройте автоматический туннель: | 3. Настройте автоматический туннель: | ||
< | <pre>Host tunnel</pre> | ||
<pre>HostName server_ip</pre> | |||
Host tunnel | <pre>LocalForward 3306 localhost:3306</pre> | ||
<pre>LocalForward 8080 localhost:80</pre> | |||
</ | |||
== 12. Безопасность и рекомендации == | == 12. Безопасность и рекомендации == | ||
| Строка 504: | Строка 342: | ||
1. '''Регулярно обновляйте SSH''': | 1. '''Регулярно обновляйте SSH''': | ||
< | <pre>sudo apt update && sudo apt upgrade openssh-server</pre> | ||
sudo apt update && sudo apt upgrade openssh-server | |||
</ | |||
2. '''Используйте сильные пароли или ключи''' | 2. '''Используйте сильные пароли или ключи''' | ||
| Строка 517: | Строка 353: | ||
1. Проверьте конфигурацию на уязвимости: | 1. Проверьте конфигурацию на уязвимости: | ||
< | <pre>sudo ssh-audit server_ip</pre> | ||
sudo ssh-audit server_ip | |||
</ | |||
2. Проверьте версию OpenSSH: | 2. Проверьте версию OpenSSH: | ||
< | <pre>ssh -V</pre> | ||
ssh -V | |||
</ | |||
3. Проверьте поддерживаемые алгоритмы: | 3. Проверьте поддерживаемые алгоритмы: | ||
< | <pre>ssh -Q cipher</pre> | ||
ssh -Q cipher | <pre>ssh -Q mac</pre> | ||
ssh -Q mac | <pre>ssh -Q kex</pre> | ||
ssh -Q kex | |||
</ | |||
== Заключение == | == Заключение == | ||
Текущая версия от 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
- или для новых версий
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):
- [Выделенные серверы](https://ark-hoster.ru/dedicated/) - для корпоративных проектов с продвинутой безопасностью
- [VPS/VDS серверы](https://ark-hoster.ru/vpsgame/) - для небольших и средних проектов
Наши специалисты помогут с настройкой SSH и обеспечением безопасности вашего сервера!