Для удалённого доступа к компу на 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 будет работать.
Если будет время и желание покопаться, может потом дополню заметку новым решением.
- Об авторе
- Недавние публикации
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 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
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
4419 silver badges17 bronze badges
answered Mar 23, 2013 at 17:13
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 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?
answered Jan 29, 2014 at 6:19
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
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
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
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
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
22.9k8 gold badges120 silver badges116 bronze badges
answered Nov 26, 2015 at 15:13
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 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 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
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
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
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:
- Double checked that the issue is what I am assuming by
ssh -T [email protected]
It should end up in a timeout.
- 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
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 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.
answered Dec 30, 2021 at 10:53
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
answered Feb 9 at 8:02
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
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
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
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
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
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
8,4066 gold badges61 silver badges88 bronze badges
answered Jan 27, 2020 at 16:54
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 justgithub.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
JohnLBevanJohnLBevan
22.9k14 gold badges97 silver badges180 bronze badges
In my case,
- I backup the
known_hosts
toknown_hosts.bk
- 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
- Success
answered May 15 at 15:59
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
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
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.
answered Jul 26, 2021 at 8:49
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 используется команда 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
$ 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! You‘ve 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! You‘ve 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. |