Как изменить порт SSH в Windows: Полное руководство
Узнайте, как изменить порт SSH в Windows PowerShell и устранить проблему подключения к старому порту 22. Пошаговая инструкция по настройке и устранению неполадок.
Как изменить порт SSH в Windows PowerShell и устранить проблему подключения к старому порту 22?
Я изменила порт в файле sshd_config, перезагружала/включала-выключала сервис, установила новое правило для порта в брандмауэре. Однако при попытке подключения к удаленному серверу через мой компьютер на Windows по-прежнему используется порт 22 вместо нового порта. Какие дополнительные шаги необходимо предпринять для решения этой проблемы?
Если вы изменили порт в файле sshd_config, перезагрузили сервис и добавили правило в брандмауэр, но клиент всё ещё использует порт 22, вероятно, проблема связана с кэшированием конфигурации или настройками клиента. Вам нужно перезапустить службу OpenSSH, проверить, что она действительно слушает новый порт, и обновить конфигурацию клиента. Также убедитесь, что в системе нет других сервисов, использующих порт 22.
Содержание
- Основные причины проблемы
- Пошаговая инструкция по изменению порта SSH
- Проверка работы нового порта
- Проблемы с клиентом SSH
- Дополнительные методы устранения неполадок
- Важные замечания по безопасности
Основные причины проблемы
Несмотря на то, что вы выполнили основные шаги по изменению порта SSH, могут существовать дополнительные причины, почему система продолжает использовать порт 22:
- Кэширование конфигурации сервиса - служба OpenSSH может кэшировать старые настройки после изменения конфигурационного файла
- Отсутствие перезапуска службы - простое сохранение файла sshd_config не всегда достаточно для применения изменений
- Настройки клиента - ваш SSH-клиент может быть жестко запрограммирован на использование порта 22
- Конфликтующие сервисы - другой сервис на вашем компьютере может занимать порт 22
- Правила брандмауэра - старые правила брандмауэра могут все ещё разрешать подключения к порту 22
Важно: В системе Windows OpenSSH существует несколько мест, где может храниться информация о порте, и не все они обновляются автоматически при изменении sshd_config.
Пошаговая инструкция по изменению порта SSH
1. Проверка и редактирование sshd_config
Откройте файл конфигурации OpenSSH сервера:
# Откройте файл sshd_config в блокноте с правами администратора
notepad C:\ProgramData\ssh\sshd_config
Убедитесь, что строка Port установлена на нужное значение (например, 2222):
# Комментируйте или удаляйте строку с портом 22
#Port 22
# Устанавливайте новый порт
Port 2222
Примечание: Убедитесь, что в файле нет дублирующихся директив
Port.
2. Перезапуск службы OpenSSH
Используйте PowerShell для полного перезапуска службы:
# Остановка службы
Stop-Service sshd
# Запуск службы
Start-Service sshd
Или выполните полный перезапуск:
Restart-Service sshd
3. Обновление правил брандмауэра
Создайте новое правило брандмауэра для нового порта:
New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP-2222' -DisplayName 'OpenSSH Server (sshd) - Port 2222' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 2222
Удалите старое правило для порта 22:
Remove-NetFirewallRule -Name 'OpenSSH-Server-In-TCP'
4. Проверка прослушиваемых портов
Используйте PowerShell для проверки, на каких портах работает служба:
# Проверка прослушиваемых портов
Get-NetTCPConnection -State Listen | Where-Object {$_.LocalPort -eq 2222}
# Или проверка процесса sshd
Get-Process sshd | Select-Object Id, ProcessName, @{Name='Ports';Expression={(Get-NetTCPConnection -OwningProcess $_.Id).LocalPort}}
Проверка работы нового порта
1. Проверка с помощью Telnet
Проверьте, что служба действительно слушает новый порт:
# Проверка локально
Test-NetConnection -ComputerName localhost -Port 2222
# Проверка с другого компьютера
Test-NetConnection -ComputerName ваш_IP -Port 2222
2. Проверка с помощью PowerShell
Используйте встроенный модуль SSH для тестирования:
# Подключение к новому порту
ssh -p 2222 пользователь@localhost
3. Проверка с помощью netstat
Используйте классическую утилиту для проверки:
netstat -ano | findstr :2222
Проблемы с клиентом SSH
1. Конфигурация клиента SSH
Ваш SSH-клиент может использовать порт 22 по умолчанию. Чтобы указать другой порт, используйте:
# Явное указание порта
ssh -p 2222 пользователь@хост
# Или настройте файл конфигурации SSH клиента (~/.ssh/config)
Host ваш_хост
HostName хост
User пользователь
Port 2222
2. Проверка кэша SSH клиента
Иногда SSH-клиент кэширует информацию о хостах. Очистите кэш:
# Удаление известных хостов
Remove-Item $env:USERPROFILE\.ssh\known_hosts
3. Использование Putty или других клиентов
Если вы используете PuTTY, убедитесь, что в настройках подключения указан правильный порт.
Дополнительные методы устранения неполадок
1. Проверка служб Windows
Убедитесь, что служба OpenSSH работает автоматически:
Get-Service sshd | Format-List Name, Status, StartType
Если служба не запускается автоматически, установите:
Set-Service sshd -StartType Automatic
2. Проверка прав доступа
Убедитесь, что у пользователя есть права на доступ к SSH:
# Проверка прав пользователя на SSH
Get-LocalUser | Where-Object {$_.Name -eq 'ваш_пользователь'}
3. Проверка журналов событий
Проверьте системные журналы на наличие ошибок SSH:
# Просмотр журналов SSH
Get-WinEvent -LogName 'OpenSSH SSH Server' | Format-List TimeCreated, Message
# Или просмотр через Event Viewer
eventvwr.msc
4. Проверка конфигурации SELinux (если применимо)
Если у вас включен SELinux, проверьте его настройки:
# Проверка статуса SELinux
Get-Command sestatus -ErrorAction SilentlyContinue
if ($?) {
sestatus
}
5. Проверка занятости портов
Убедитесь, что новый порт не используется другими сервисами:
# Проверка всех прослушиваемых портов
Get-NetTCPConnection -State Listen | Select-Object LocalAddress, LocalPort, State
Важные замечания по безопасности
- Выбор порта - Выбирайте порт выше 1024 (привилегированные порты требуют прав администратора)
- Брандмауэр - Всегда проверяйте, что брандмауэр разрешает подключения к новому порту
- Логирование - Включите подробное логирование для отладки соединений
- Резервное копирование - Сохраняйте резервные копии конфигурационных файлов перед изменениями
- Тестирование - Тестируйте изменения сначала в тестовой среде
Заключение
Если вы выполнили все основные шаги, но проблема сохраняется, попробуйте следующие дополнительные меры:
- Полная переустановка OpenSSH - Иногда помогает полная переустановка компонента
- Проверка антивируса - Некоторые антивирусы могут блокировать подключения к нестандартным портам
- Проверка прокси-серверов - Если вы используете прокси, убедитесь, что он не перенаправляет подключения к порту 22
- Проверка сетевого оборудования - Маршрутизаторы и файрволы могут блокировать нестандартные порты
Помните, что при изменении порта SSH необходимо обновлять все клиентские конфигурации и скрипты, которые используют подключение к вашему серверу.
Источники
- GitHub: Change of Port 22 to another port does not work
- Microsoft Q&A: How to fix a ssh port 22 connection problem in windows 11
- Experts Exchange: Problems with OpenSSH on Windows - Cannot change Port number from 22 to 443
- Microsoft Q&A: OpenSSH on Windows does not work
- Super User: How to change ssh port on windows 10
- Server Fault: Can’t establish connection by port 22 on Windows Server 2012 R2
- GitHub: default port unable to change