SSH Server
SSH (Secure Shell) - криптографический сетевой протокол для безопасного удаленного управления системой VyOS.
Обзор
SSH предоставляет:
- Защищенное удаленное подключение к CLI
- Шифрование всего трафика
- Аутентификацию по паролю или ключам
- Замену небезопасным протоколам (Telnet, rlogin)
По умолчанию SSH работает на порту 22/TCP.
Базовая конфигурация
Включение SSH
Минимальная конфигурация:
set service ssh
commitSSH будет слушать на всех интерфейсах на порту 22.
Указание порта
Изменение порта по умолчанию:
set service ssh port 2222
commitПривязка к адресу
Ограничение на конкретный IP-адрес:
set service ssh listen-address 192.168.1.1
commitМножественные адреса:
set service ssh listen-address 192.168.1.1
set service ssh listen-address 10.0.0.1
set service ssh listen-address 2001:db8::1
commitАутентификация
Парольная аутентификация
По умолчанию включена. Пользователи могут входить используя пароли.
Отключение парольной аутентификации:
set service ssh disable-password-authentication
commitВажно: Перед отключением убедитесь, что настроена аутентификация по ключам!
Аутентификация по SSH-ключам
Добавление публичного ключа для пользователя
set system login user admin authentication public-keys user@host key 'AAAAB3NzaC1yc2EAAAADAQABAAABAQC...'
set system login user admin authentication public-keys user@host type 'ssh-rsa'
commitТипы ключей:
ssh-rsa- RSA ключssh-dss- DSA ключ (устарел, не рекомендуется)ecdsa-sha2-nistp256- ECDSA 256-битecdsa-sha2-nistp384- ECDSA 384-битecdsa-sha2-nistp521- ECDSA 521-битssh-ed25519- Ed25519 (рекомендуется)
Генерация ключей на клиенте
На Linux/macOS:
ssh-keygen -t ed25519 -C "user@vyos"На Windows (PowerShell):
ssh-keygen -t ed25519 -C "user@vyos"Публичный ключ будет в файле ~/.ssh/id_ed25519.pub.
Копирование ключа на VyOS
С клиента Linux/macOS:
ssh-copy-id -i ~/.ssh/id_ed25519.pub vyos@192.168.1.1Или вручную скопируйте содержимое id_ed25519.pub и добавьте через CLI.
Отключение root login
Root login отключен по умолчанию начиная с VyOS 1.2+.
Проверка:
show service sshКонтроль доступа
По пользователям
Разрешение только конкретным пользователям:
set service ssh access-control allow user admin
set service ssh access-control allow user operator
commitЗапрет конкретным пользователям:
set service ssh access-control deny user guest
commitПо группам
Разрешение по группам:
set service ssh access-control allow group operators
commitЗапрет по группам:
set service ssh access-control deny group guests
commitНастройки безопасности
Алгоритмы шифрования (Ciphers)
Указание разрешенных алгоритмов шифрования:
set service ssh ciphers 'chacha20-poly1305@openssh.com'
set service ssh ciphers 'aes256-gcm@openssh.com'
set service ssh ciphers 'aes128-gcm@openssh.com'
set service ssh ciphers 'aes256-ctr'
set service ssh ciphers 'aes192-ctr'
set service ssh ciphers 'aes128-ctr'
commitРекомендуемые современные алгоритмы:
chacha20-poly1305@openssh.com- ChaCha20-Poly1305aes256-gcm@openssh.com- AES256-GCMaes128-gcm@openssh.com- AES128-GCM
Не рекомендуются (устаревшие):
3des-cbc- Triple DESaes128-cbc,aes192-cbc,aes256-cbc- CBC режимarcfour,arcfour128,arcfour256- RC4
MAC алгоритмы
Message Authentication Code алгоритмы:
set service ssh mac 'hmac-sha2-512-etm@openssh.com'
set service ssh mac 'hmac-sha2-256-etm@openssh.com'
set service ssh mac 'hmac-sha2-512'
set service ssh mac 'hmac-sha2-256'
commitРекомендуемые:
hmac-sha2-512-etm@openssh.comhmac-sha2-256-etm@openssh.comhmac-sha2-512hmac-sha2-256
Не рекомендуются:
hmac-md5- устарелhmac-sha1- считается слабым
Key Exchange алгоритмы
Алгоритмы обмена ключами:
set service ssh key-exchange 'curve25519-sha256@libssh.org'
set service ssh key-exchange 'diffie-hellman-group-exchange-sha256'
set service ssh key-exchange 'ecdh-sha2-nistp521'
set service ssh key-exchange 'ecdh-sha2-nistp384'
set service ssh key-exchange 'ecdh-sha2-nistp256'
commitРекомендуемые:
curve25519-sha256@libssh.orgcurve25519-sha256diffie-hellman-group-exchange-sha256ecdh-sha2-nistp521
Не рекомендуются:
diffie-hellman-group1-sha1- устарелdiffie-hellman-group14-sha1- устарел
Host Key Validation
Отключение проверки host key (не рекомендуется для продакшена):
set service ssh disable-host-validation
commitЗащита от brute-force атак
Dynamic Protection
Автоматическая блокировка при превышении лимита неудачных попыток:
set service ssh dynamic-protection
commitНастройка параметров защиты
Количество попыток до блокировки:
set service ssh dynamic-protection threshold 3
commitВремя блокировки (секунды):
set service ssh dynamic-protection block-time 600
commitWhitelist адресов
Исключение доверенных адресов из защиты:
set service ssh dynamic-protection allow-from 192.168.1.0/24
set service ssh dynamic-protection allow-from 10.0.0.100
commitПримеры конфигурации
Базовая безопасная конфигурация
# Основные настройки
set service ssh port 22
set service ssh listen-address 192.168.1.1
# Только ключевая аутентификация
set service ssh disable-password-authentication
# Контроль доступа
set service ssh access-control allow user admin
set service ssh access-control allow user operator
# Защита от brute-force
set service ssh dynamic-protection
set service ssh dynamic-protection threshold 3
set service ssh dynamic-protection block-time 600
commitУсиленная безопасность
# Нестандартный порт
set service ssh port 2222
set service ssh listen-address 192.168.1.1
# Только ключевая аутентификация
set service ssh disable-password-authentication
# Современные алгоритмы шифрования
set service ssh ciphers 'chacha20-poly1305@openssh.com'
set service ssh ciphers 'aes256-gcm@openssh.com'
set service ssh ciphers 'aes128-gcm@openssh.com'
# Современные MAC
set service ssh mac 'hmac-sha2-512-etm@openssh.com'
set service ssh mac 'hmac-sha2-256-etm@openssh.com'
# Современный key exchange
set service ssh key-exchange 'curve25519-sha256@libssh.org'
set service ssh key-exchange 'diffie-hellman-group-exchange-sha256'
# Контроль доступа
set service ssh access-control allow user admin
# Защита от атак
set service ssh dynamic-protection
set service ssh dynamic-protection threshold 2
set service ssh dynamic-protection block-time 1800
set service ssh dynamic-protection allow-from 192.168.1.0/24
commitМножественные порты и адреса
# Слушать на нескольких адресах
set service ssh port 22
set service ssh listen-address 192.168.1.1
set service ssh listen-address 10.0.0.1
set service ssh listen-address 2001:db8::1
# Контроль доступа
set service ssh access-control allow group operators
# Базовая защита
set service ssh dynamic-protection
commitОперационные команды
Просмотр конфигурации
show service sshПросмотр SSH fingerprints
show ssh server-fingerprintsПерезапуск SSH
restart sshГенерация серверных ключей
generate ssh server-keyПросмотр активных сессий
show usersЛоги SSH
show log ssh
monitor log | grep sshdПодключение к VyOS
С Linux/macOS
Стандартное подключение:
ssh vyos@192.168.1.1С указанием порта:
ssh -p 2222 vyos@192.168.1.1С указанием ключа:
ssh -i ~/.ssh/id_ed25519 vyos@192.168.1.1С Windows
PowerShell (Windows 10/11):
ssh vyos@192.168.1.1PuTTY:
- Запустите PuTTY
- Введите адрес:
192.168.1.1 - Порт:
22(или ваш) - Connection type: SSH
- Click “Open”
Устранение неполадок
Не могу подключиться
Проверьте статус SSH:
show service sshПроверьте firewall:
show firewallУбедитесь что порт открыт:
show firewall ipv4 input filterПроверьте, слушает ли SSH:
netstat -tlnp | grep sshdОтключил пароли и потерял доступ
Если есть консольный доступ:
configure
delete service ssh disable-password-authentication
commitЕсли нет консольного доступа - потребуется физический доступ к устройству или восстановление из резервной копии.
Проблемы с ключами
Проверьте формат ключа:
show system login user admin authentication public-keysПроверьте логи:
show log sshУбедитесь что ключ правильного типа (RSA, Ed25519 и т.д.).
Брандмауэр блокирует
Разрешите SSH в firewall:
set firewall ipv4 input filter rule 10 action accept
set firewall ipv4 input filter rule 10 destination port 22
set firewall ipv4 input filter rule 10 protocol tcp
set firewall ipv4 input filter rule 10 source address 192.168.1.0/24
commitБезопасность и лучшие практики
1. Используйте ключевую аутентификацию
Отключите пароли:
set service ssh disable-password-authentication2. Измените порт по умолчанию
set service ssh port 2222Это уменьшит количество автоматических атак.
3. Ограничьте доступ
По пользователям:
set service ssh access-control allow user adminПо адресам (через firewall):
set firewall ipv4 input filter rule 10 action accept
set firewall ipv4 input filter rule 10 destination port 22
set firewall ipv4 input filter rule 10 protocol tcp
set firewall ipv4 input filter rule 10 source address 192.168.1.0/244. Включите защиту от brute-force
set service ssh dynamic-protection
set service ssh dynamic-protection threshold 3
set service ssh dynamic-protection block-time 6005. Используйте современные алгоритмы
Отключите устаревшие ciphers и MAC алгоритмы.
6. Мониторьте логи
Регулярно проверяйте SSH логи:
show log ssh7. Используйте jump host
Для критичных систем используйте bastion host (jump server) вместо прямого доступа.
8. Регулярно обновляйте ключи
Пересоздавайте SSH ключи периодически (раз в 1-2 года).
9. Используйте сильные ключи
Ed25519 или RSA 4096-бит:
ssh-keygen -t ed25519
# или
ssh-keygen -t rsa -b 409610. Резервное копирование
Всегда сохраняйте резервную копию конфигурации:
saveИнтеграция с другими системами
Jump Host / Bastion
Использование VyOS как jump host:
- Разрешите port forwarding в sshd
- Подключайтесь через ProxyJump:
ssh -J vyos@jumphost.example.com user@internal-serverSSH Agent Forwarding
На клиенте добавьте в ~/.ssh/config:
Host vyos-router
HostName 192.168.1.1
User vyos
ForwardAgent yesSSH Certificates (CA)
Для больших инфраструктур используйте SSH Certificate Authority вместо индивидуальных ключей.
Следующие шаги
- HTTPS/API - веб-интерфейс и REST API
- Firewall - настройка доступа к SSH
- System Login - управление пользователями