Для удалённого доступа к компу на Windows 10 я установил AnyDesk. Но, иногда его было мало, т.к. нужно было что-то делать в фоне, не отвлекая пользователя. Для этой цели я поставил OpenSSH. В процессе тестирования выяснилось, что я не могу у нему подключиться с другого компа, т.к. получаю ошибку «Connection timed out»:
PS C:\Windows\system32\OpenSSH> .\ssh 192.168.1.4 -p 22 ssh: connect to host 192.168.1.4 port 22: Connection timed out
PuTTY мне выдавал нечто подобное
Network error: Connection timed out
Поехали по порядку (часть инструкций с MSDN)…
Установка сервера SSH
▶ ▶ ▶
Но я решил воспользоваться PowerShell — так быстрее.
Проверим, установлен ли компонент SSH, для этого в PowerShell выполним:
Get-WindowsCapability -Online | ? Name -like '*SSH*'
Будет примерно такой вывод:
PS C:\Windows\system32\OpenSSH> Get-WindowsCapability -Online | ? Name -like '*SSH*'
Name : OpenSSH.Client~~~~0.0.1.0
State : Installed
Name : OpenSSH.Server~~~~0.0.1.0
State : Installed
Если включены SRP — Software Restriction Policies, при этом запуск dismhost.exe не разрешён явно и блокируется, то можно получить такую ошибку:
Get-WindowsCapability : The request is not supported. At line:1 char:1 + Get-WindowsCapability -Online | ? Name -like '*SSH*' + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Get-WindowsCapability], COMException + FullyQualifiedErrorId : Microsoft.Dism.Commands.GetWindowsCapabilityCommand
Если после проверки выяснилось, что компонент не установлен, поставим его (серверную часть и клиентскую, я выбрал сразу всё):
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Запуск и настройка
Запускаем службу SSH (под админом):
Start-Service sshd
Если планируем пользоваться SSH постоянно, то лучше выставить режим запуска службы в автоматический:
Set-Service -Name sshd -StartupType 'Automatic'
При установке SSH должно было быть создано правило в firewall, проверим:
Get-NetFirewallRule -Name *ssh*
Должен получиться такой вывод:
PS C:\Windows\system32\OpenSSH> Get-NetFirewallRule -Name *ssh*
Name : sshd
DisplayName : OpenSSH Server (sshd)
Description :
DisplayGroup :
Group :
Enabled : True
Profile : Any
Platform : {}
Direction : Inbound
Action : Allow
EdgeTraversalPolicy : Block
LooseSourceMapping : False
LocalOnlyMapping : False
Owner :
PrimaryStatus : OK
Status : The rule was parsed successfully from the store. (65536)
EnforcementStatus : NotApplicable
PolicyStoreSource : PersistentStore
PolicyStoreSourceType : Local
Если правило по каким-то причинам не было создано или было случайно удалено, можно создать новое:
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
Подключение к OpenSSH Server
Если подключаться через PowerShell, то нужно запускать PS с правами админа. Здесь я указываю номер порта, т.к. потом сменю его с 22 на какой-то другой:
.\ssh 192.168.1.64 -p 22
Если система не найдёт компонент, получим ошибку:
.\ssh : The term '.\ssh' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. At line:1 char:1 + .\ssh 192.168.1.64 -p 22 + ~~~~~ + CategoryInfo : ObjectNotFound: (.\ssh:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException
Ничего страшного, просто перейдём в папку c OpenSSH:
cd C:\Windows\System32\OpenSSH\
Если в этот раз мы получим ошибку о которой писал в самом начале статьи (Connection timed out), то переходим к следующему разделу.
Исправление ошибок
Ошибка Connection timed out может означать, что служба OpenSSH SSH Server (sshd) не запущена. Если её запустить, то ошибки быть не должно.
Это было просто и мне не помогло, т.к. у меня она была запущена, но ошибка всё равно присутствовала.
Я сейчас не стал разбираться и закапываться ещё глубже, но у меня проблема была не в этом и даже не в firewall (брандмауэре), хотя я думал на него. Проблема была в роутере Wi-Fi! Для подключения этого ноутбука я выделил гостевую сеть:
▶ ▶ ▶
Здесь я добавил новую гостевую сеть, чтобы в случае необходимости её было проще отключать так, чтобы не прерывать доступ в интернет остальным клиентам. Переключатель «Блокировать связь между WiFi» в решении проблемы не помог.
Если будет время и желание покопаться, может потом дополню заметку новым решением.
- C#: Сравнить два массива - 12.12.2024
- EVE-Online: Фильтры каналов - 23.11.2024
- Не приходит СМС для авторизации на сайте Госуслуги - 01.11.2024