Port 22 connection timed out windows

Для удалённого доступа к компу на 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 мне выдавал нечто подобное

PuTTY Fatal Error
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» в решении проблемы не помог.

Тем не менее данный переключатель позволит избавится от ошибки «Host unreachable», при попытке подключиться к этому компу с ConnectBot на Андроид. Нужно его переключить в положение Выключено, тогда устройства в этой Wi-Fi сети смогут взаимодействовать друг с другом.

Таким образом, я не нашёл идеального решения этой проблемы кроме как переключить данный ноутбук с гостевой сети Wi-Fi на основную. Тогда SSH будет работать.

Если будет время и желание покопаться, может потом дополню заметку новым решением.

  • Об авторе
  • Недавние публикации

DenTNT

I am under a proxy and I am pushing in to git successfully for quite a while.
Now I am not able to push into git all of a sudden.
I have set the RSA key and the proxy and double checked them, with no avail and git is throwing me the error shown in the title of the page.

asked Mar 23, 2013 at 17:13

Vihari Piratla's user avatar

Vihari PiratlaVihari Piratla

8,3784 gold badges21 silver badges26 bronze badges

8

For my case none of the suggested solutions worked so I tried to fix it myself and I got it resolved.

For me I am getting this error on my AWS EC2 UBUNTU instance, what I did to resolve it was to edit the ssh config (or add it if it does not exist).

sudo nano ~/.ssh/config

And I added the following

Host github.com
 Hostname ssh.github.com
 Port 443

Then, run the command ssh -T [email protected] to confirm if the issue is fixed.

According to this

Sometimes, firewalls refuse to allow SSH connections entirely. If using HTTPS cloning with credential caching is not an option, you can attempt to clone using an SSH connection made over the HTTPS port. Most firewall rules should allow this, but proxy servers may interfere

Hopefully this helps anyone else who’s having the same issue I did.

answered Oct 15, 2018 at 12:41

Mahan_F's user avatar

16

The reason could be the firewall modification as you are under a network.(In which case they may deliberately block some ports)
To double check if this is the reason … do

ssh -T [email protected]

this should timeout.
If that’s the case use http protocol instead of ssh this way
just change your url in the config file to http.
Here is how :-

git config --local -e

change entry of

 url = [email protected]:username/repo.git

to

url = https://github.com/username/repo.git

lantrix's user avatar

lantrix

4419 silver badges17 bronze badges

answered Mar 23, 2013 at 17:13

Vihari Piratla's user avatar

Vihari PiratlaVihari Piratla

8,3784 gold badges21 silver badges26 bronze badges

11

inside the .ssh folder
Create «config» file

Host github.com
User git
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Port 443

Host gitlab.com
Hostname altssh.gitlab.com
User git
Port 443
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa

answered Mar 13, 2019 at 19:32

Isaque Elcio 's user avatar

Isaque Elcio Isaque Elcio

1,0499 silver badges4 bronze badges

4

Basic URL Rewriting

Git provides a way to rewrite URLs using git config. Simply issue the following command:

git config --global url."https://".insteadOf git://

Now, as if by magic, all git commands will perform a substitution of git:// to https://

source:
git:// protocol blocked by company, how can I get around that?

Community's user avatar

answered Jan 29, 2014 at 6:19

Michaël P's user avatar

Michaël PMichaël P

6435 silver badges3 bronze badges

4

I faced the same problem and couldn’t find a working solution. I faced this problem while setting up a local server and the git couldn’t connect through my proxy network but my workstation could. This was the output when I ran the command
ssh -vT [email protected]

ubuntu@server:~$ ssh -vT [email protected]
OpenSSH_7.2p2 Ubuntu-4ubuntu2.8, OpenSSL 1.0.2g  1 Mar 2016
debug1: Reading configuration data /home/ubuntu/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to github.com [13.234.176.102] port 22.

So I tried using an SSH connection made over the HTTPS port by editing the config file ~/.ssh/config but to no avail.

Host github.com
 Hostname ssh.github.com
 Port 443

Finally, I found this article which solved and exposed the real problem.

# github.com
Host github.com
    Hostname ssh.github.com
    ProxyCommand nc -X connect -x <PROXY-HOST>:<PORT> %h %p
    Port 443
    ServerAliveInterval 20
    User git

This is my config file and now git works perfectly well through ssh!

answered Jul 21, 2019 at 14:10

Animesh Singh's user avatar

5

Quick workaround: try switching to a different network

I experienced this problem while on a hotspot (3/4G connection). Switching to a different connection (WiFi) resolved it, but it’s just a workaround — I didn’t get the chance to get to the bottom of the issue so the other answers might be more interesting to determine the underlying issue

answered Sep 19, 2018 at 12:41

kip2's user avatar

kip2kip2

6,4934 gold badges55 silver badges72 bronze badges

1

For me, the problem was from ISP side. The Port number was not enabled by the Internet Service Provider. So asked them to enable the port number over my network and it started working.
Only to test: Connect to mobile hotspot and type ssh -T [email protected] or git pull.
If it works, then ask your ISP to enable the port.

answered Oct 13, 2020 at 12:11

Anushree's user avatar

AnushreeAnushree

2233 silver badges4 bronze badges

1

This answer is based on the comment to the main question from @zundi (to whom credit should go, thanks zundi):

  • Create a hotspot on your mobile device and connect to the hotspot
  • git push
  • Turn off the hotspot on your mobile device and reconnect to the original network
  • git push continues to work

I do not know why temporarily connecting to a hotspot magically «kickstarts» the original network connection.

answered Jun 6, 2022 at 15:20

AlainD's user avatar

AlainDAlainD

5,4956 gold badges46 silver badges100 bronze badges

Execute:

nc -v -z <git-repository> <port>

Your output should look like:

"Connection to <git-repository> <port> port [tcp/*] succeeded!"

If you get:

connect to <git-repository> <port> (tcp) failed: Connection timed out

You need to edit your ~/.ssh/config file. Add something like the following:

Host example.com
Port 1234

Dorian's user avatar

Dorian

22.9k8 gold badges120 silver badges116 bronze badges

answered Nov 26, 2015 at 15:13

ameen's user avatar

ameenameen

591 bronze badge

1

In a similar failure mode as Ludder, I was getting this error when I hadn’t yet signed in to the correct company VPN. :facepalm:

answered Apr 19, 2021 at 17:02

Mad Bernard's user avatar

Mad BernardMad Bernard

3631 gold badge7 silver badges16 bronze badges

I was having this same issue, but the answer I found was different, thought someone might come across this issue, so here is my solution.

I had to whitelist 2 IPs for port 22, 80, 443, and 9418:

  • 192.30.252.0/22

  • 185.199.108.0/22

In case these IP’s don’t work, it might be because they got updated, you can find the most current ones on this page.

answered May 31, 2017 at 19:20

Artur Grigio's user avatar

Artur GrigioArtur Grigio

5,2158 gold badges45 silver badges65 bronze badges

1

My computer was unable to connect port 22 while connecting to Github. I never had this issue with bitbucket. If you have both GitHub and bitbucket then

Host bitbucket.org
Hostname  altssh.bitbucket.org
Port  443


Host github.com
Hostname ssh.github.com
Port 443

ref

It basically connects SSH in 443 port instead of 22.

answered Jan 9, 2022 at 9:34

kta's user avatar

ktakta

19.5k7 gold badges65 silver badges47 bronze badges

The answer above gave me the information needed to resolve this issue. In my case the url was incorrectly starting with ssh:///

To check the url in your git config is correct, open the git config file :-

git config --local -e

Check the url entry. It should NOT have ssh:/// at the start.

Incorrect entry:

 url = ssh:///[email protected]:username/repo.git

Correct entry:

 url = [email protected]:username/repo.git

If your url is correct, then the next step would be to try the answer above that suggests changing protocol to http.

answered Apr 30, 2019 at 22:51

Manda QoP's user avatar

Changing the repo url from ssh to https is not very meaningful to me. As I prefer ssh over https because of some sort of extra benefits which I don’t want to discard. Above answers are pretty good and accurate. If you face this problem in GitLab, please go to their official documentation page and change your config file like that.

Host gitlab.com
  Hostname altssh.gitlab.com
  User git
  Port 443
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/gitlab

answered May 10, 2020 at 22:49

Md. Nowshad Hasan's user avatar

The main reason was the change from the proxy installed by the company recently, which has blocked other ssh connections other than those to the company domain.

I was able to connect successfully by following these steps:

  1. Double checked that the issue is what I am assuming by
    ssh -T [email protected]

It should end up in a timeout.

  1. Edited the local remote URL by

ssh config --local -e

and from

[email protected]:asheeshjanghu/Journal.git

to

url=https://github.com/asheeshjanghu/Journal.git

The important point is that in the url you have to change at 2 places.

from git@ to https:// and from github:username to github/username

In the end verify by doing a git fetch

answered Aug 25, 2020 at 7:15

Asheesh Janghu's user avatar

1

Restart the computer solved it for me.
Git version: 2.27.0.windows.1
OS version: Windows 10

answered Jul 12, 2020 at 3:04

Wenfang Du's user avatar

Wenfang DuWenfang Du

9,02412 gold badges60 silver badges92 bronze badges

In my case the problem was caused by a setting that I had changed on my Router a day before.
So on my Router, I just had to revert the setting Isolation to disable and it has fixed my issue.

enter image description here

answered Dec 30, 2021 at 10:53

user1941537's user avatar

user1941537user1941537

6,12714 gold badges54 silver badges101 bronze badges

For my case, I didn’t change anything in my PC. My workaround was:

  • Restart the PC.
  • Connect PC network with mobile hotspot or use Cloudflare WARP for private network.
  • Do your work and chill :D

answered Feb 9 at 8:02

Abdullah's user avatar

If your ssh -T [email protected] connects and does not time out but you’re still getting the error when trying to git commit:

ssh: connect to host sign port 22: Operation timed out?

fatal: failed to write commit object:

Ive been able to fix the issue by disabling gpgsign in .gitconfig

[commit]
    gpgsign = false

Running MacOs, Not under proxy. Im guessing the complete solution is to generate and re assign new gpg keys but ive been at this for hours so perhaps tomorrow.

answered Feb 21 at 2:50

Ohmnitude's user avatar

OhmnitudeOhmnitude

1811 silver badge7 bronze badges

I had this issue on a server of mine that was set up with it’s regular IP and a failover IP. The failover IP did not point to the server at this time. I had to remove the failover IP from the server configuration in /etc/netplan/01-netcfg.yaml. Pointing the failover IP to that server would have probably solved the issue as well.

answered Sep 11, 2020 at 20:14

Robin's user avatar

RobinRobin

3,53211 gold badges39 silver badges73 bronze badges

So I was having this same problem (not behind a proxy) and came across this question. Here’s what I did to fix it:

Tried running ssh -T [email protected] and it did time out, but adding -o KexAlgorithms=ecdh-sha2-nistp521 made a successful connection (found from this answer to a semi-related question).

To permanently fix this, I just added a line KexAlgorithms=ecdh-sha2-nistp521 under github.com in my ~/.ssh/config. Everything seems to work fine now.

answered Apr 25, 2022 at 15:51

Klaus Haukenstein's user avatar

1

If you are in windows, move into the directory where you stored your ssh key, and try again, it worked for me.

answered May 28, 2022 at 20:38

Baboucarr Badjie's user avatar

What solved it for me was doing ssh-add on the key file.

ssh-add C:/Path/To/Key.pem

C:/Users/User/.ssh/config:

Host sshapp
    Hostname ssh.github.com
    IdentityFile C:/Path/To/Key.pem
    Port 443

Then clone using:

>git clone git@sshapp:<git_user>/app.git
Cloning into 'app'...
The authenticity of host '[ssh.github.com]:443 ([140.82.121.35]:443)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6T.....vCOqU.

answered Jan 17 at 17:47

justadev's user avatar

justadevjustadev

1,2081 gold badge19 silver badges33 bronze badges

ISSUE

Step to produce issue: git clone [email protected]:sramachand71/test.git
for the first time in the new laptop

ERROR

ssh: connect to host github.com port 22: Connection timed out
 fatal: Could not read from remote repository.

 Please make sure you have the correct access rights
 and the repository exists.

SOLUTION

for the first time in the system to clone we need to give double quotes for the clone command.

$ git clone "[email protected]:sramachand71/test.git"

I face this issue in the system even after everything was correct but noticed at last that double quote is must for url «repository_url.git» for first time or new user in the system.

Michael's user avatar

Michael

8,4066 gold badges61 silver badges88 bronze badges

answered Jan 27, 2020 at 16:54

Shivaprasad R's user avatar

I had this issue when working over a public library’s wifi.

Running PowerShell test-netconnection github.com -port 22 showed that they were blocking outbound connections on that port (lots of places seem to only allow HTTP ports; i.e. 80 and 443).

Thankfully, GitHub allows you to access SSH over port 443 too: documentation

Instead of running git clone [email protected]:myOrg/myRepo.git, make the following tweaks:

  • Add ssh:// to the start of the URL
  • Connect to the ssh subdomain (i.e. ssh.github.com instead of just github.com)
  • Add the port after the hostname: i.e. :443.
  • Amend the colon before your org/username to a slash.

So for the above example you’d run: git clone ssh://[email protected]:443/myOrg/myRepo.git

This may give you a warning about the authenticity of the host; but (assuming you’re happy*), answering YES to that will allow the command to run. To decide if you should answer YES, check the fingerprint given in this warning against GitHub’s published fingerprints.

answered Apr 20 at 9:42

JohnLBevan's user avatar

JohnLBevanJohnLBevan

22.9k14 gold badges97 silver badges180 bronze badges

In my case,

  1. I backup the known_hosts to known_hosts.bk
  2. I clear all content of the old known_hosts.

Maybe it did remember the old host when I ssh using the other .pem file.

  • Error

enter image description here

  • Success

enter image description here

answered May 15 at 15:59

Nguyễn Văn Phong's user avatar

Nguyễn Văn PhongNguyễn Văn Phong

13.6k18 gold badges39 silver badges56 bronze badges

When I accidentally switched to a guest wifi network I got this error. Had to switch back to my default wifi network.

answered Jun 7, 2019 at 20:18

Ludder's user avatar

LudderLudder

2,5951 gold badge25 silver badges27 bronze badges

Suggest to check the Internet connection or connect to another connection.

answered Mar 28, 2022 at 11:18

TiiGRUS's user avatar

TiiGRUSTiiGRUS

851 silver badge4 bronze badges

1

Refreshing my Internet connection worked for me.

Also if you use mobile hotspot — restart of mobile device was solution in my case.

Daniel Garmoshka's user avatar

answered Jul 26, 2021 at 8:49

Winnie Nyambura's user avatar

1

First of all, I’m pretty new to SSH. I’ve used it before, but never had to deal much with setting it up or navigating the details. Migrated from ServerFault.

Whenever I try to ssh to a public ip address from my windows 10 computer, I get an error that looks like ssh: connect to username@<public ip address> port 22: Connection timed out.

I can connect to my own linux machine from windows with a private ip address, and my windows machine connects to github with ssh public/private key authentication. My linux machine can connect to external servers (like AWS) via ssh, it’s just my windows machine, and just public IP addresses, so far as I can tell.

Here’s the output with the -vv option, and on a different port:

ssh -vv -p 2200 example.com                                                                                  OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5                                                                                       debug2: resolving "example.com" port 2200                                                                                       debug2: ssh_connect_direct: needpriv 0                                                                                          debug1: Connecting to example.com [93.184.216.34] port 2200.                                                                    debug1: connect to address 93.184.216.34 port 2200: Connection timed out                                                        ssh: connect to host example.com port 2200: Connection timed out   

What is causing this problem, and what do I need to do to fix it, so that I can ssh to external servers from my windows 10 computer?

I can ping external servers fine:

Pinging 1.1.1.1 with 32 bytes of data:
Reply from 1.1.1.1: bytes=32 time=23ms TTL=54 
Reply from 1.1.1.1: bytes=32 time=74ms TTL=54
Reply from 1.1.1.1: bytes=32 time=26ms TTL=54
Reply from 1.1.1.1: bytes=32 time=24ms TTL=54
      
Ping statistics for 1.1.1.1:
packets: Sent = 4, Received = 4, Lost = 0 (0% loss),                                                                Approximate round trip times in milli-seconds:                                                                              Minimum = 23ms, Maximum = 74ms, Average = 36ms

25 мая, 2017 11:40 дп
93 893 views
| Комментариев нет

Linux, SSH

В первой статье этой серии вы узнали о том, как и в каких ситуациях вы можете попробовать исправить ошибки SSH. Остальные статьи расскажут, как определить и устранить ошибки:

  • Ошибки протокола: в этой статье вы узнаете, что делать, если сбрасываются клиентские соединения, клиент жалуется на шифрование или возникают проблемы с неизвестным или измененным удаленным хостом.
  • Ошибки аутентификации: поможет устранить проблемы с парольной аутентификацией или сбросом SSH-ключей.
  • Ошибки оболочки: это руководство поможет исправить ошибки ветвления процессов, валидации оболочки и доступа к домашнему каталогу.

Для взаимодействия SSH-клиента с SSH-сервером необходимо установить базовое сетевое подключение. Это руководство поможет определить некоторые общие ошибки подключения, исправить их и предотвратить их возникновение в будущем.

Требования

  • Убедитесь, что можете подключиться к виртуальному серверу через консоль.
  • Проверьте панель на предмет текущих проблем, влияющих на работу и состояние сервера и гипервизора.

Основные ошибки

Разрешение имени хоста

Большинство ошибок подключения возникает тогда, когда ссылка на хост SSH не может быть сопоставлена с сетевым адресом. Это почти всегда связано с DNS, но первопричина часто бывает не связана с DNS.

На клиенте OpenSSH эта команда:

ssh user@example.com

может выдать ошибку:

ssh: Could not resolve hostname example.com: Name or service not known

В PuTTY может появиться такая ошибка:

Unable to open connection to example.com Host does not exist

Чтобы устранить эту ошибку, можно попробовать следующее:

  • Проверьте правильность написания имени хоста.
  • Убедитесь, что вы можете разрешить имя хоста на клиентской машине с помощью команды ping. Обратитесь к сторонним сайтам (WhatsMyDns.net, например), чтобы подтвердить результаты.

Если у вас возникают проблемы с разрешением DNS на любом уровне, в качестве промежуточного решения можно использовать IP-адрес сервера, например:

ssh user@111.111.111.111
# вместо
ssh user@example.com.

Истечение времени соединения

Эта ошибка значит, что клиент попытался установить соединение с SSH-сервером, но сервер не смог ответить в течение заданного периода ожидания.

На клиенте OpenSSH следующая команда:

ssh user@111.111.111.111

выдаст такую ошибку:

ssh: connect to host 111.111.111.111 port 22: Connection timed out

В PuTTY ошибка выглядит так:

Network error: Connection timed out

Чтобы исправить ошибку:

  • Убедитесь, что IP-адрес хоста указан правильно.
  • Убедитесь, что сеть поддерживает подключение через используемый порт SSH. Некоторые публичные сети могут блокировать порт 22 или пользовательские SSH-порты. Чтобы проверить работу порта, можно, например, попробовать подключиться к другим хостам через этот же порт. Это поможет вам определить, не связана ли проблема с самим сервером.
  • Проверьте правила брандмауэра. Убедитесь, что политика по умолчанию – не DROP.

Отказ в соединении

Эта ошибка означает, что запрос передается на хост SSH, но хост не может успешно принять запрос.

На клиенте OpenSSH следующая команда выдаст ошибку:

ssh user@111.111.111.111
ssh: connect to host 111.111.111.111 port 22: Connection refused

В PuTTY ошибка появится в диалоговом окне:

Network error: Connection refused

Эта ошибка имеет общие с ошибкой Connection Timeout причины. Чтобы исправить её, можно сделать следующее:

  • Убедиться, что IP-адрес хоста указан правильно.
  • Убедиться, что сеть поддерживает подключение через используемый порт SSH. Некоторые публичные сети могут блокировать порт 22 или пользовательские SSH-порты. Чтобы проверить работу порта, можно, например, попробовать подключиться к другим хостам через этот же порт.
  • Проверить правила брандмауэра. Убедитесь, что политика по умолчанию – не DROP, и что брандмауэр не блокирует этот порт.
  • Убедиться, что сервис запущен и привязан к требуемому порту.

Рекомендации по исправлению ошибок подключения

Брандмауэр

Иногда проблемы с подключением возникают из-за брандмауэра. Он может блокировать отдельные порты или сервисы.

Читайте также: Что такое брандмауэр и как он работает?

В разных дистрибутивах используются разные брандмауэры. Вы должны научиться изменять правила и политики своего брандмауэра. В Ubuntu обычно используется UFW, в CentOS – FirewallD. Брандмауэр iptables используется независимо от системы.

Читайте также:

  • Основы UFW: общие правила и команды фаервола
  • Настройка брандмауэра FirewallD в CentOS 7
  • Основы Iptables: общие правила и команды брандмауэра

Чтобы настроить брандмауэр, нужно знать порт сервиса SSH. По умолчанию это порт 22.

Чтобы запросить список правил iptables, введите:

iptables -nL

Такой вывод сообщает, что правил, блокирующих SSH, нет:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Если в выводе вы видите правило или политику по умолчанию REJECT или DROP, убедитесь, что цепочка INPUT разрешает доступ к порту SSH.

Чтобы запросить список правил FirewallD, введите:

firewall-cmd --list-services

Список, появившийся на экране, содержит все сервисы, которые поддерживаются брандмауэром. В списке должно быть правило:

dhcpv6-client http ssh

Если вы настроили пользовательский порт SSH, используйте опцию –list-ports. Если вы создали пользовательское определение сервиса, добавьте опцию –list-services, чтобы найти SSH.

Чтобы проверить состояние UFW, введите:

ufw status

Команда вернёт доступные порты:

Status: active
To                         Action      From
--                         ------      ----
22                         LIMIT       Anywhere
443                        ALLOW       Anywhere
80                         ALLOW       Anywhere
Anywhere                   ALLOW       192.168.0.0
22 (v6)                    LIMIT       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)
80 (v6)                    ALLOW       Anywhere (v6)

В списке должен быть порт SSH.

Проверка состояния сервиса SSH

Если вы не можете подключиться к серверу по SSH, убедитесь, что сервис SSH запущен. Способ сделать это зависит от операционной системы сервера. В более старых версиях дистрибутивов (Ubuntu 14.04, CentOS 6, Debian 8) используется команда service. Современные дистрибутивы на основе Systemd используют команду systemctl.

Метод проверки состояния сервиса может варьироваться от системы к системе. В более старых версиях (Ubuntu 14 и ниже, CentOS 6, Debian 6) используется команда service, поддерживаемая системой инициализации Upstart, а в более современных дистрибутивах для управления сервисом используется команда systemctl.

Примечание: В дистрибутивах Red Hat (CentOS и Fedora) сервис называется sshd, а в Debian и Ubuntu – ssh.

В более старых версия используйте команду:

service ssh status

Если процесс работает должным образом, вы увидите вывод, который содержит PID:

ssh start/running, process 1262

Если сервис не работает, вы увидите:

ssh stop/waiting

В системах на основе SystemD используйте:

systemctl status sshd

В выводе должна быть строка active:

sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
Active: active (running) since Mon 2017-03-20 11:00:22 EDT; 1 months 1 days ago
Process: 899 ExecStartPre=/usr/sbin/sshd-keygen (code=exited, status=0/SUCCESS)
Main PID: 906 (sshd)
CGroup: /system.slice/sshd.service
├─  906 /usr/sbin/sshd -D
├─26941 sshd: [accepted]
└─26942 sshd: [net]

Если сервис не работает, вы увидите в выводе inactive:

sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
Active: inactive (dead) since Fri 2017-04-21 08:36:13 EDT; 2s ago
Process: 906 ExecStart=/usr/sbin/sshd -D $OPTIONS (code=exited, status=0/SUCCESS)
Process: 899 ExecStartPre=/usr/sbin/sshd-keygen (code=exited, status=0/SUCCESS)
Main PID: 906 (code=exited, status=0/SUCCESS)

Чтобы перезапустить сервис, введите соответственно:

service ssh start
systemctl start sshd

Проверка порта SSH

Существует два основных способа проверить порт SSH: проверить конфигурационный файл SSH или просмотреть запущенный процесс.

Как правило, конфигурационный файл SSH хранится в /etc/ssh/sshd_config. Стандартный порт 22 может переопределяться любой строкой в этом файле, определяющей директиву Port.

Запустите поиск по файлу с помощью команды:

grep Port /etc/ssh/sshd_config

Читайте также: Использование Grep и регулярных выражений для поиска текстовых шаблонов в Linux

Команда вернёт:

Port 22

Если вы уже убедились, что сервис работает, теперь вы можете узнать, работает ли он на требуемом порте. Для этого используйте команду ss. Команда netstat –plnt выдаст аналогичный результат, но команду ss рекомендуется использовать для запроса информации сокета из ядра.

ss -plnt

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

State       Recv-Q Send-Q              Local Address:Port                       Peer Address:Port
LISTEN      0      128                 *:22                                     *:*                   users:(("sshd",pid=1493,fd=3))
LISTEN      0      128                 :::22                                    :::*                  users:(("sshd",pid=1493,fd=4))

Символ * и 0.0.0.0 указывает, что все интерфейсы сервера прослушиваются. Строка 127.0.0.1 значит, что сервис не является общедоступным. В sshd_config директива ListenAddress должна быть закомментирована, чтобы прослушивать все интерфейсы, или должна содержать внешний IP-адрес сервера.

Если у вас не получается самостоятельно настроить соединение SSH, вы можете обратиться за помощью к службе поддержки своего хостинг-провайдера.

Tags: firewalld, Iptables, OpenSSH, PuTTY, SSH, UFW

Solution for ‘ssh: connect to host github.com port 22: Connection timed out’ error


This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters

Show hidden characters

$ git clone git@github.com:xxxxx/xxxx.git my-awesome-proj
Cloning into my-awesome-proj
ssh: connect to host github.com port 22: Connection timed out
fatal: Could not read from remote repository.
$ # This should also timeout
$ ssh -T git@github.com
ssh: connect to host github.com port 22: Connection timed out
$ # but this might work
$ ssh -T -p 443 git@ssh.github.com
Hi xxxx! Youve successfully authenticated, but GitHub does not provide shell access.
$ # Override SSH settings
$ vim ~/.ssh/config
«`
# Add section below to it
Host github.com
Hostname ssh.github.com
Port 443
«`
$ ssh -T git@github.com
Hi xxxxx! Youve successfully authenticated, but GitHub does not
provide shell access.
$ git clone git@github.com:xxxxxx/xxxxx.git my-awesome-proj
Cloning into my-awesome-proj
remote: Enumerating objects: 15, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 15 (delta 0), reused 15 (delta 0), pack-reused 0
Receiving objects: 100% (15/15), 22.90 KiB | 4.58 MiB/s, done.

  • Posiflex 2800 драйвер windows 10
  • Portable base layer windows 10 что это
  • Portable android emulator for windows
  • Port tools для windows ce
  • Porttool скачать для windows ce