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

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

Версия 19:57, 14 октября 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 и обеспечением безопасности вашего сервера!