Другое

Как изменить порт SSH в Windows: Полное руководство

Узнайте, как изменить порт SSH в Windows PowerShell и устранить проблему подключения к старому порту 22. Пошаговая инструкция по настройке и устранению неполадок.

Как изменить порт SSH в Windows PowerShell и устранить проблему подключения к старому порту 22?

Я изменила порт в файле sshd_config, перезагружала/включала-выключала сервис, установила новое правило для порта в брандмауэре. Однако при попытке подключения к удаленному серверу через мой компьютер на Windows по-прежнему используется порт 22 вместо нового порта. Какие дополнительные шаги необходимо предпринять для решения этой проблемы?

Если вы изменили порт в файле sshd_config, перезагрузили сервис и добавили правило в брандмауэр, но клиент всё ещё использует порт 22, вероятно, проблема связана с кэшированием конфигурации или настройками клиента. Вам нужно перезапустить службу OpenSSH, проверить, что она действительно слушает новый порт, и обновить конфигурацию клиента. Также убедитесь, что в системе нет других сервисов, использующих порт 22.

Содержание

Основные причины проблемы

Несмотря на то, что вы выполнили основные шаги по изменению порта SSH, могут существовать дополнительные причины, почему система продолжает использовать порт 22:

  1. Кэширование конфигурации сервиса - служба OpenSSH может кэшировать старые настройки после изменения конфигурационного файла
  2. Отсутствие перезапуска службы - простое сохранение файла sshd_config не всегда достаточно для применения изменений
  3. Настройки клиента - ваш SSH-клиент может быть жестко запрограммирован на использование порта 22
  4. Конфликтующие сервисы - другой сервис на вашем компьютере может занимать порт 22
  5. Правила брандмауэра - старые правила брандмауэра могут все ещё разрешать подключения к порту 22

Важно: В системе Windows OpenSSH существует несколько мест, где может храниться информация о порте, и не все они обновляются автоматически при изменении sshd_config.

Пошаговая инструкция по изменению порта SSH

1. Проверка и редактирование sshd_config

Откройте файл конфигурации OpenSSH сервера:

powershell
# Откройте файл sshd_config в блокноте с правами администратора
notepad C:\ProgramData\ssh\sshd_config

Убедитесь, что строка Port установлена на нужное значение (например, 2222):

ini
# Комментируйте или удаляйте строку с портом 22
#Port 22

# Устанавливайте новый порт
Port 2222

Примечание: Убедитесь, что в файле нет дублирующихся директив Port.

2. Перезапуск службы OpenSSH

Используйте PowerShell для полного перезапуска службы:

powershell
# Остановка службы
Stop-Service sshd

# Запуск службы
Start-Service sshd

Или выполните полный перезапуск:

powershell
Restart-Service sshd

3. Обновление правил брандмауэра

Создайте новое правило брандмауэра для нового порта:

powershell
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:

powershell
Remove-NetFirewallRule -Name 'OpenSSH-Server-In-TCP'

4. Проверка прослушиваемых портов

Используйте PowerShell для проверки, на каких портах работает служба:

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

Проверьте, что служба действительно слушает новый порт:

powershell
# Проверка локально
Test-NetConnection -ComputerName localhost -Port 2222

# Проверка с другого компьютера
Test-NetConnection -ComputerName ваш_IP -Port 2222

2. Проверка с помощью PowerShell

Используйте встроенный модуль SSH для тестирования:

powershell
# Подключение к новому порту
ssh -p 2222 пользователь@localhost

3. Проверка с помощью netstat

Используйте классическую утилиту для проверки:

powershell
netstat -ano | findstr :2222

Проблемы с клиентом SSH

1. Конфигурация клиента SSH

Ваш SSH-клиент может использовать порт 22 по умолчанию. Чтобы указать другой порт, используйте:

powershell
# Явное указание порта
ssh -p 2222 пользователь@хост

# Или настройте файл конфигурации SSH клиента (~/.ssh/config)
Host ваш_хост
    HostName хост
    User пользователь
    Port 2222

2. Проверка кэша SSH клиента

Иногда SSH-клиент кэширует информацию о хостах. Очистите кэш:

powershell
# Удаление известных хостов
Remove-Item $env:USERPROFILE\.ssh\known_hosts

3. Использование Putty или других клиентов

Если вы используете PuTTY, убедитесь, что в настройках подключения указан правильный порт.

Дополнительные методы устранения неполадок

1. Проверка служб Windows

Убедитесь, что служба OpenSSH работает автоматически:

powershell
Get-Service sshd | Format-List Name, Status, StartType

Если служба не запускается автоматически, установите:

powershell
Set-Service sshd -StartType Automatic

2. Проверка прав доступа

Убедитесь, что у пользователя есть права на доступ к SSH:

powershell
# Проверка прав пользователя на SSH
Get-LocalUser | Where-Object {$_.Name -eq 'ваш_пользователь'}

3. Проверка журналов событий

Проверьте системные журналы на наличие ошибок SSH:

powershell
# Просмотр журналов SSH
Get-WinEvent -LogName 'OpenSSH SSH Server' | Format-List TimeCreated, Message

# Или просмотр через Event Viewer
eventvwr.msc

4. Проверка конфигурации SELinux (если применимо)

Если у вас включен SELinux, проверьте его настройки:

powershell
# Проверка статуса SELinux
Get-Command sestatus -ErrorAction SilentlyContinue
if ($?) {
    sestatus
}

5. Проверка занятости портов

Убедитесь, что новый порт не используется другими сервисами:

powershell
# Проверка всех прослушиваемых портов
Get-NetTCPConnection -State Listen | Select-Object LocalAddress, LocalPort, State

Важные замечания по безопасности

  1. Выбор порта - Выбирайте порт выше 1024 (привилегированные порты требуют прав администратора)
  2. Брандмауэр - Всегда проверяйте, что брандмауэр разрешает подключения к новому порту
  3. Логирование - Включите подробное логирование для отладки соединений
  4. Резервное копирование - Сохраняйте резервные копии конфигурационных файлов перед изменениями
  5. Тестирование - Тестируйте изменения сначала в тестовой среде

Заключение

Если вы выполнили все основные шаги, но проблема сохраняется, попробуйте следующие дополнительные меры:

  1. Полная переустановка OpenSSH - Иногда помогает полная переустановка компонента
  2. Проверка антивируса - Некоторые антивирусы могут блокировать подключения к нестандартным портам
  3. Проверка прокси-серверов - Если вы используете прокси, убедитесь, что он не перенаправляет подключения к порту 22
  4. Проверка сетевого оборудования - Маршрутизаторы и файрволы могут блокировать нестандартные порты

Помните, что при изменении порта SSH необходимо обновлять все клиентские конфигурации и скрипты, которые используют подключение к вашему серверу.

Источники

  1. GitHub: Change of Port 22 to another port does not work
  2. Microsoft Q&A: How to fix a ssh port 22 connection problem in windows 11
  3. Experts Exchange: Problems with OpenSSH on Windows - Cannot change Port number from 22 to 443
  4. Microsoft Q&A: OpenSSH on Windows does not work
  5. Super User: How to change ssh port on windows 10
  6. Server Fault: Can’t establish connection by port 22 on Windows Server 2012 R2
  7. GitHub: default port unable to change
Авторы
Проверено модерацией
Модерация