Ошибка ssh2 не установлен на вашем сервере

Secure Shell (SSH) is a key WordPress development tool. It grants advanced users access to key platforms and software that make coding and other tasks easier, faster, and more organized.

So if you attempt to use SSH only to see a “Connection refused” error, you may start to feel concerned. However, this is a common issue, and it’s entirely possible to fix it on your own with just a bit of troubleshooting. You’ll be back to running commands in no time flat.

In this post, we’ll discuss what SSH is and when to use it. Then we’ll explain some common reasons your connection may be refused, including in PuTTY. Finally, we’ll provide some troubleshooting tips.

Let’s dive in!

Prefer to watch the video version?

What Is SSH and When Should I Use It?

Secure Shell (SSH), also sometimes called Secure Socket Shell, is a protocol for securely accessing your site’s server over an unsecured network. In other words, it’s a way to safely log in to your server remotely using your preferred command-line interface:

ssh login example

Using SSH to remotely access a WordPress site hosted on Kinsta

Unlike File Transfer Protocol (FTP), which only enables you to upload, delete, and edit files on your server, SSH can accomplish a wide range of tasks. For instance, if an error locks you out of your WordPress site, you can use SSH to access it remotely.

This protocol also enables you to use several key developer tools, including:

  • WP-CLI. The WordPress command line. You can use it for a variety of tasks, including new installations, bulk plugin updates, and media file imports.
  • Composer. A PHP package manager. It enables you to implement several frameworks for use in your site’s code by pulling the necessary libraries and dependencies.
  • Git. A version control system used to track changes in code. This is especially useful for teams of developers working together on a single project.
  • npm. A JavaScript package manager. It includes a command-line and JavaScript software registry. Note: Kinsta customers will need an Enterprise plan in order to access this feature.

It’s important to note that using SSH is an advanced skill. Generally speaking, lay users of WordPress should contact their developers or hosting providers for help, rather than trying to resolve issues with SSH themselves.

Why Is My SSH Connection Refused? (5 Reasons for Connectivity Errors)

Unfortunately, there are many scenarios that could occur while you’re trying to connect to your server via SSH, which might result in an error reading “Connection refused”.

Below are some of the most common issues that might be causing problems for you.

1. Your SSH Service Is Down

In order to connect to your server with SSH, it must be running an SSH daemon – a program that runs in the background to listen for and accept connections.

If this service is down, you will not be able to successfully connect to your server and may receive a Connection refused error:

connection refused error

Connection Refused error in Terminal

Your server’s SSH daemon may be down for a wide variety of reasons, including unexpected traffic spikes, resource outages, or even a Distributed Denial of Service (DDoS) attack. In addition to the troubleshooting steps we’ll mention below, you may want to contact your hosting provider to determine the root cause of the issue.

If you suspect that your SSH service might be down, you can run this command to find out:

sudo service ssh status

If the command line returns a status of down, then you’ve likely found the reason behind your connectivity error.

2. You Have the Wrong Credentials

Although it may seem too simple to be true, it’s possible that you’re just entering the wrong credentials when trying to connect to your server. There are four pieces of information needed to run SSH:

  • Host name. The IP address of the server you’re trying to connect to or your domain name.
  • Username. Your (S)FTP username.
  • Password. Your (S)FTP password.
  • Port. The default port is 22. However, some hosting providers (including Kinsta) change their SSH port number for security reasons. If this is the case, you should be able to find it by logging in to your MyKinsta dashboard.

You can also check to see which port is being used for SSH by running this command:

grep Port /etc/ssh/sshd_config

The command line should return the correct port.

Check to make sure you’re entering the right credentials and taking into account the possibility of typos or entering the wrong IP address or port.

3. The Port You’re Trying to Use Is Closed

A “port” is simply the endpoint to which you’re directed when connecting to your server. In addition to making sure you have the correct one, you’ll also want to check to see if the port you’re trying to use is open.

Any open port is a security vulnerability, as hackers can try to exploit it and gain access to the server. For this reason, unused ports are often closed to prevent attacks.

In the event that port 22, or the custom SSH port for your server, has been closed, you will likely see a Connection refused error. You can see all the ports listening on your server by running this command:

sudo lsof -i -n -P | grep LISTEN

This command should return a list of ports with the LISTEN state. Ideally, you want to see port 22 or your server’s custom SSH port listed here. If it’s not, you’ll need to reopen the port in order to connect to your server.

4. SSH Isn’t Installed on Your Server

As we briefly mentioned earlier, servers use SSH daemons to listen for and accept connections. Therefore, if the server you’re trying to connect to doesn’t have one installed, you won’t be able to access it using SSH.

Generally speaking, almost all hosting providers will have SSH daemons installed on their servers by default. This particular issue is more common on localhost or dedicated servers.

5. Firewall Settings Are Preventing an SSH Connection

Since open ports present a security risk, firewalls installed to protect servers from hackers sometimes block connections to them. Unfortunately, this means that even harmless users who are trying to SSH into their servers may receive a Connection refused error as a result of firewall settings.

If your setup appears to be in order and you still can’t connect, take a look at your firewall’s rules. You can display them in your command-line interface with the following commands:

sudo iptables-save # display IPv4 rules
sudo ip6tables-save # display IPv6 rules

Your results will vary, but you’ll want to look for these elements to determine if your firewall is blocking SSH connections:

  • dport 22: This refers to the destination port, which for SSH is usually port 22 (reminder: Kinsta doesn’t use this port number).
  • REJECT: This would indicate that connections are being refused from the specified destination.
  • DROP: Like REJECT, this means that connections to the relevant port are being blocked.

If you search the results of the commands above for dport 22, you should be able to determine if your firewall is preventing an SSH connection. If so, you’ll have to change the rules to accept requests.

Why Does PuTTY Say Connection Refused?

PuTTY is an SSH client. If you’re familiar with FTP, this platform is the FileZilla equivalent to SSH on Windows machines. In other words, PuTTY enables users to input their credentials and launch an SSH connection:

download putty

The PuTTY website

If you’re a PuTTY user and see the Connection refused error, the cause is likely one of those listed above.

This is an SSH connectivity error like any other, and the troubleshooting tips below should work whether you’re using PuTTY, Terminal, or any other program for connecting to your server with SSH.

We’ve taken our knowledge of effective website management at scale, and turned it into an ebook and video course. Click to download The Guide to Managing 60+ WordPress Sites!

How Do I Troubleshoot SSH Connectivity Errors?

When you’re experiencing an SSH connectivity error, there are a few steps you can take to troubleshoot it depending on the cause. Here are some tips for troubleshooting the reasons for a Connection refused error that we covered above:

  • If your SSH service is down. Contact your hosting provider to see why your SSH service isn’t running. For localhost or dedicated servers, you can use the command sudo service ssh restart to try to get it running again.
  • If you entered the wrong credentials. Once you’ve double-checked the SSH port using the grep Port /etc/ssh/sshd_config command, try connecting again with the correct details.
  • If your SSH port is closed. This is usually a side effect of one of the two reasons listed below. Either install an SSH daemon on the server you want to connect to or change your firewall rules to accept connections to your SSH port.
  • If SSH isn’t installed on your server. Install an SSH tool such as OpenSSH on the server you want to connect to using the sudo apt install openssh-server command.
  • If your firewall is blocking your SSH connection. Disable the firewall rules blocking your SSH connection by changing the destination port’s settings to ACCEPT.

If you’re attempting to connect to your hosting provider’s server, it may be wiser to contact support than to try troubleshooting the problem yourself. Users on localhost or dedicated servers may be able to find further support on more advanced forums if none of the above solutions works.

Are you getting the ‘Connection refused’ error over SSH? Learn why that’s happening and how to troubleshoot SSH connectivity errors thanks to this guide 🙅 ✋Click to Tweet

Summary

Being able to connect to your server with SSH is convenient in a wide range of situations. It can enable you to access your site when you’re locked out of your WordPress dashboard, run commands via WP-CLI, track changes in your site’s code with Git, and more.

Although there are several causes that could be behind your SSH connectivity error, these are a few of the most common:

  1. Your SSH service is down.
  2. You have the wrong credentials.
  3. The port you’re trying to use is closed.
  4. SSH isn’t installed on your server.
  5. Firewall settings are preventing an SSH connection.

Secure Shell (SSH) is a key WordPress development tool. It grants advanced users access to key platforms and software that make coding and other tasks easier, faster, and more organized.

So if you attempt to use SSH only to see a “Connection refused” error, you may start to feel concerned. However, this is a common issue, and it’s entirely possible to fix it on your own with just a bit of troubleshooting. You’ll be back to running commands in no time flat.

In this post, we’ll discuss what SSH is and when to use it. Then we’ll explain some common reasons your connection may be refused, including in PuTTY. Finally, we’ll provide some troubleshooting tips.

Let’s dive in!

Prefer to watch the video version?

What Is SSH and When Should I Use It?

Secure Shell (SSH), also sometimes called Secure Socket Shell, is a protocol for securely accessing your site’s server over an unsecured network. In other words, it’s a way to safely log in to your server remotely using your preferred command-line interface:

ssh login example

Using SSH to remotely access a WordPress site hosted on Kinsta

Unlike File Transfer Protocol (FTP), which only enables you to upload, delete, and edit files on your server, SSH can accomplish a wide range of tasks. For instance, if an error locks you out of your WordPress site, you can use SSH to access it remotely.

This protocol also enables you to use several key developer tools, including:

  • WP-CLI. The WordPress command line. You can use it for a variety of tasks, including new installations, bulk plugin updates, and media file imports.
  • Composer. A PHP package manager. It enables you to implement several frameworks for use in your site’s code by pulling the necessary libraries and dependencies.
  • Git. A version control system used to track changes in code. This is especially useful for teams of developers working together on a single project.
  • npm. A JavaScript package manager. It includes a command-line and JavaScript software registry. Note: Kinsta customers will need an Enterprise plan in order to access this feature.

It’s important to note that using SSH is an advanced skill. Generally speaking, lay users of WordPress should contact their developers or hosting providers for help, rather than trying to resolve issues with SSH themselves.

Why Is My SSH Connection Refused? (5 Reasons for Connectivity Errors)

Unfortunately, there are many scenarios that could occur while you’re trying to connect to your server via SSH, which might result in an error reading “Connection refused”.

Below are some of the most common issues that might be causing problems for you.

1. Your SSH Service Is Down

In order to connect to your server with SSH, it must be running an SSH daemon – a program that runs in the background to listen for and accept connections.

If this service is down, you will not be able to successfully connect to your server and may receive a Connection refused error:

connection refused error

Connection Refused error in Terminal

Your server’s SSH daemon may be down for a wide variety of reasons, including unexpected traffic spikes, resource outages, or even a Distributed Denial of Service (DDoS) attack. In addition to the troubleshooting steps we’ll mention below, you may want to contact your hosting provider to determine the root cause of the issue.

If you suspect that your SSH service might be down, you can run this command to find out:

sudo service ssh status

If the command line returns a status of down, then you’ve likely found the reason behind your connectivity error.

2. You Have the Wrong Credentials

Although it may seem too simple to be true, it’s possible that you’re just entering the wrong credentials when trying to connect to your server. There are four pieces of information needed to run SSH:

  • Host name. The IP address of the server you’re trying to connect to or your domain name.
  • Username. Your (S)FTP username.
  • Password. Your (S)FTP password.
  • Port. The default port is 22. However, some hosting providers (including Kinsta) change their SSH port number for security reasons. If this is the case, you should be able to find it by logging in to your MyKinsta dashboard.

You can also check to see which port is being used for SSH by running this command:

grep Port /etc/ssh/sshd_config

The command line should return the correct port.

Check to make sure you’re entering the right credentials and taking into account the possibility of typos or entering the wrong IP address or port.

3. The Port You’re Trying to Use Is Closed

A “port” is simply the endpoint to which you’re directed when connecting to your server. In addition to making sure you have the correct one, you’ll also want to check to see if the port you’re trying to use is open.

Any open port is a security vulnerability, as hackers can try to exploit it and gain access to the server. For this reason, unused ports are often closed to prevent attacks.

In the event that port 22, or the custom SSH port for your server, has been closed, you will likely see a Connection refused error. You can see all the ports listening on your server by running this command:

sudo lsof -i -n -P | grep LISTEN

This command should return a list of ports with the LISTEN state. Ideally, you want to see port 22 or your server’s custom SSH port listed here. If it’s not, you’ll need to reopen the port in order to connect to your server.

4. SSH Isn’t Installed on Your Server

As we briefly mentioned earlier, servers use SSH daemons to listen for and accept connections. Therefore, if the server you’re trying to connect to doesn’t have one installed, you won’t be able to access it using SSH.

Generally speaking, almost all hosting providers will have SSH daemons installed on their servers by default. This particular issue is more common on localhost or dedicated servers.

5. Firewall Settings Are Preventing an SSH Connection

Since open ports present a security risk, firewalls installed to protect servers from hackers sometimes block connections to them. Unfortunately, this means that even harmless users who are trying to SSH into their servers may receive a Connection refused error as a result of firewall settings.

If your setup appears to be in order and you still can’t connect, take a look at your firewall’s rules. You can display them in your command-line interface with the following commands:

sudo iptables-save # display IPv4 rules
sudo ip6tables-save # display IPv6 rules

Your results will vary, but you’ll want to look for these elements to determine if your firewall is blocking SSH connections:

  • dport 22: This refers to the destination port, which for SSH is usually port 22 (reminder: Kinsta doesn’t use this port number).
  • REJECT: This would indicate that connections are being refused from the specified destination.
  • DROP: Like REJECT, this means that connections to the relevant port are being blocked.

If you search the results of the commands above for dport 22, you should be able to determine if your firewall is preventing an SSH connection. If so, you’ll have to change the rules to accept requests.

Why Does PuTTY Say Connection Refused?

PuTTY is an SSH client. If you’re familiar with FTP, this platform is the FileZilla equivalent to SSH on Windows machines. In other words, PuTTY enables users to input their credentials and launch an SSH connection:

download putty

The PuTTY website

If you’re a PuTTY user and see the Connection refused error, the cause is likely one of those listed above.

This is an SSH connectivity error like any other, and the troubleshooting tips below should work whether you’re using PuTTY, Terminal, or any other program for connecting to your server with SSH.

We’ve taken our knowledge of effective website management at scale, and turned it into an ebook and video course. Click to download The Guide to Managing 60+ WordPress Sites!

How Do I Troubleshoot SSH Connectivity Errors?

When you’re experiencing an SSH connectivity error, there are a few steps you can take to troubleshoot it depending on the cause. Here are some tips for troubleshooting the reasons for a Connection refused error that we covered above:

  • If your SSH service is down. Contact your hosting provider to see why your SSH service isn’t running. For localhost or dedicated servers, you can use the command sudo service ssh restart to try to get it running again.
  • If you entered the wrong credentials. Once you’ve double-checked the SSH port using the grep Port /etc/ssh/sshd_config command, try connecting again with the correct details.
  • If your SSH port is closed. This is usually a side effect of one of the two reasons listed below. Either install an SSH daemon on the server you want to connect to or change your firewall rules to accept connections to your SSH port.
  • If SSH isn’t installed on your server. Install an SSH tool such as OpenSSH on the server you want to connect to using the sudo apt install openssh-server command.
  • If your firewall is blocking your SSH connection. Disable the firewall rules blocking your SSH connection by changing the destination port’s settings to ACCEPT.

If you’re attempting to connect to your hosting provider’s server, it may be wiser to contact support than to try troubleshooting the problem yourself. Users on localhost or dedicated servers may be able to find further support on more advanced forums if none of the above solutions works.

Are you getting the ‘Connection refused’ error over SSH? Learn why that’s happening and how to troubleshoot SSH connectivity errors thanks to this guide 🙅 ✋Click to Tweet

Summary

Being able to connect to your server with SSH is convenient in a wide range of situations. It can enable you to access your site when you’re locked out of your WordPress dashboard, run commands via WP-CLI, track changes in your site’s code with Git, and more.

Although there are several causes that could be behind your SSH connectivity error, these are a few of the most common:

  1. Your SSH service is down.
  2. You have the wrong credentials.
  3. The port you’re trying to use is closed.
  4. SSH isn’t installed on your server.
  5. Firewall settings are preventing an SSH connection.

dimas199862

im_dimas

@dimas199862

frontend и backend

При попытке установить выходит ошибка:

root@dmitriy:~# pecl install -f ssh2
WARNING: failed to download pecl.php.net/ssh2 within preferred state «stable», will instead download version 0.12, stability «beta»
downloading ssh2-0.12.tgz …
Starting to download ssh2-0.12.tgz (26,223 bytes)
………done: 26,223 bytes
6 source files, building
running: phpize
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525
libssh2 prefix? [autodetect] :
building in /tmp/pear/temp/pear-build-rootpsBQ2G/ssh2-0.12
running: /tmp/pear/temp/ssh2/configure —with-ssh2
checking for grep that handles long lines and -e… /bin/grep
checking for egrep… /bin/grep -E
checking for a sed that does not truncate output… /bin/sed
checking for cc… cc
checking whether the C compiler works… yes
checking for C compiler default output file name… a.out
checking for suffix of executables…
checking whether we are cross compiling… no
checking for suffix of object files… o
checking whether we are using the GNU C compiler… yes
checking whether cc accepts -g… yes
checking for cc option to accept ISO C89… none needed
checking how to run the C preprocessor… cc -E
checking for icc… no
checking for suncc… no
checking whether cc understands -c and -o together… yes
checking for system library directory… lib
checking if compiler supports -R… no
checking if compiler supports -Wl,-rpath,… yes
checking build system type… x86_64-unknown-linux-gnu
checking host system type… x86_64-unknown-linux-gnu
checking target system type… x86_64-unknown-linux-gnu
checking for PHP prefix… /usr
checking for PHP includes… -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib
checking for PHP extension directory… /usr/lib/php5/20100525
checking for PHP installed headers prefix… /usr/include/php5
checking if debug is enabled… no
checking if zts is enabled… no
checking for re2c… no
configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
checking for gawk… gawk
checking for ssh2 support… yes, shared
checking for ssh2 files in default path… not found
configure: error: The required libssh2 library was not found. You can obtain that package from sourceforge.net/projects/libssh2
ERROR: `/tmp/pear/temp/ssh2/configure —with-ssh2′ failed
root@dmitriy:~#


  • Вопрос задан

    более трёх лет назад

  • 1534 просмотра

aptitude install php5-ssh2
или на слаку переезжайте.

Пригласить эксперта


  • Показать ещё
    Загружается…

05 июн. 2023, в 22:21

1500 руб./за проект

05 июн. 2023, в 22:02

500 руб./за проект

05 июн. 2023, в 21:36

100000 руб./за проект

Минуточку внимания

Содержание

  1. Введение
  2. Клиент SSH не установлен
  3. Решение: Установите SSH-клиент
  4. Демон SSH не установлен на сервере
  5. Решение: Установите SSH на удаленном сервере
  6. Неверные учетные данные
  7. Служба SSH не работает
  8. Решение: Включите службу SSH
  9. Брандмауэр препятствует подключению SSH
  10. Решение: Разрешить SSH-соединения через брандмауэр
  11. Порт SSH закрыт
  12. Решение: Открыть порт SSH
  13. Отладка и логирование SSH
  14. Заключение

Введение

У вас возникли проблемы с доступом к удаленному серверу по SSH?

Если SSH отвечает сообщением “Connection refused“, вам может потребоваться изменить запрос или проверить настройку.

В этом руководстве вы найдете наиболее распространенные причины ошибки отказа в подключении SSH.

Почему происходит отказ в подключении при SSH?

Существует множество причин, по которым вы можете получить ошибку “Connection refused” при попытке подключиться по SSH к вашему серверу. Чтобы решить эту проблему, сначала нужно определить, почему система отказала вам в подключении по SSH.

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

Клиент SSH не установлен

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

На машине, с которой вы получаете доступ к серверу, должен быть установлен клиент SSH.

Без правильной установки клиента вы не сможете удаленно подключиться к серверу.

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

ssh

Если терминал выдает список опций команды ssh, клиент SSH установлен в системе.

Однако если он отвечает “command not found“, необходимо установить клиент OpenSSH.

Решение: Установите SSH-клиент

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

Для систем Ubuntu/Debian:

sudo apt install openssh-client

Для систем CentOS/RHEL:

sudo yum install openssh-client

Демон SSH не установлен на сервере

Точно так же, как вам нужна клиентская версия SSH для доступа к удаленному серверу, вам нужна серверная версия для прослушивания и приема соединений.

Поэтому сервер может отклонить входящее соединение, если SSH-сервер отсутствует или его установка недействительна.

Чтобы проверить доступен ли SSH на удаленном сервере, выполните команду:

ssh localhost

Если в выводе появится ответ “Connection refused”, переходите к установке SSH на сервере.

Решение: Установите SSH на удаленном сервере

Чтобы решить проблему отсутствия сервера SSH, обратитесь к разделу о том, как установить сервер OpenSSH.

Как установить OpenSSH-сервер из исходников в Linux

🛡️ Как обезопасить и защитить сервер OpenSSH

Неверные учетные данные

Неправильные учетные данные являются распространенными причинами отказа в SSH-соединении.

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

Затем проверьте, правильно ли вы используете IP-адрес сервера.

Наконец, убедитесь, что у вас открыт правильный порт SSH.

Проверить это можно, выполнив следующие действия:

grep Port /etc/ssh/sshd_config

На выводе отображается номер порта, как показано на рисунке ниже.

Примечание: Вы можете подключиться к удаленной системе по SSH, используя аутентификацию с помощью пароля или открытого ключа (беспарольный вход по SSH). Если вы хотите настроить аутентификацию с открытым ключом, обратитесь к разделу  🔬 Как обменяться ключом SSH для аутентификации без пароля между серверами Linux

Служба SSH не работает

Служба SSH должна быть включена и работать в фоновом режиме.

Если служба не работает, демон SSH не сможет принимать соединения.

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

sudo service ssh status

Решение: Включите службу SSH

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

systemctl start sshd

Чтобы включить запуск службы при загрузке системы, выполните команду:

sudo systemctl enable sshd

Брандмауэр препятствует подключению SSH

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

Брандмауэр защищает сервер от потенциально опасных соединений.

Однако если в системе настроен SSH, необходимо настроить брандмауэр так, чтобы он разрешал SSH-соединения.

Убедитесь, что брандмауэр не блокирует SSH-соединения, так как это может привести к ошибке “connection refused“.

Решение: Разрешить SSH-соединения через брандмауэр

Чтобы решить проблему, о которой мы говорили выше, вы можете использовать ufw (Uncomplicated Firewall), инструмент интерфейса командной строки для управления конфигурацией брандмауэра.

Введите следующую команду в окне терминала, чтобы разрешить SSH-соединения:

sudo ufw allow ssh

Порт SSH закрыт

Когда вы пытаетесь подключиться к удаленному серверу, SSH отправляет запрос на определенный порт.

Чтобы принять этот запрос, на сервере должен быть открыт порт SSH.

Если порт закрыт, сервер отказывает в подключении.

По умолчанию SSH использует порт 22.

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

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

sudo lsof -i -n -P | grep LISTEN

Найдите порт 22 в выводе и проверьте, установлено ли значение STATE в LISTEN.

Также вы можете проверить, открыт ли определенный порт, в данном случае порт 22:

sudo lsof -i:22


Решение: Открыть порт SSH

Чтобы включить порт 22 для прослушивания запросов, используйте команду iptables:

sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

Вы также можете открыть порты через графический интерфейс, изменив настройки брандмауэра.

Отладка и логирование SSH

Для анализа проблем с SSH в Linux можно включить режим verbose или режим отладки.

Когда вы включаете этот режим, SSH выводит отладочные сообщения, которые помогают устранить проблемы с подключением, конфигурацией и аутентификацией.

Существует три уровня :

  • уровень 1 (-v)
  • уровень 2 (-vv)
  • уровень 3 (-vvv)

Поэтому вместо доступа к удаленному серверу с помощью синтаксиса ssh [server_ip] добавьте опцию -v и выполните команду:

ssh -v [server_ip]

В качестве альтернативы вы можете использовать:

ssh -vv [server_ip] или
ssh -vvv [server_ip]

Заключение

В этой статье перечислены некоторые из наиболее распространенных причин ошибки SSH “Connection refused”.

Чтобы устранить проблему, просмотрите список и убедитесь, что все параметры настроены правильно.

Я пытаюсь установить это на машине Windows+Apache . Документация говорит, что SSH2 требует библиотеки OpenSSL и libssh2 . Я добавил эти строки в файл php.ini :

и перезапустил Apache, но он все еще не работает ( Fatal error: Call to undefined function ssh2_connect() ).

Вот как я это сделал:

  1. Загрузили расширение Win32 SSH2 PECL из этого места (выберите соответствующую версию);

  2. Извлечение содержимого архива и:

    • размещенные php_ssh2.dll и php_ssh2.pdb в папке ext (например, C:phpext );
    • скопировал файл libssh2.dll в C:Windowssystem32 и (если у вас есть Win64) C:WindowsSysWOW64 (ы);
  3. Выполните следующую команду для регистрации DLL:

     C:> regsvr32 libssh2.dll 
  4. Перезапущенный Apache.

Итоговая записка

Если вы получили PHP x64, вам нужно искать версию 64 библиотеки библиотеки DLL. Этот сайт предлагает некоторые компилируемые библиотеки Win64 для PHP, сначала попробуйте здесь.

Надеюсь это поможет.

  1. Поместите php_ssh2.dll в папку ext
  2. Поместите libssh2.dll в папку php
  3. Перезапустить IIS

которые работают для меня

  • PHP 5.4.25 NTS + Windows Server 2012

Если у кого-то возникли проблемы с установкой SSH2, вот как я это сделал:

1) Загрузите библиотеку SSH2 PECL из PHP.net .

2) Скопируйте файл libssh2.dll в папку System32.

3) Скопируйте php_ssh2.dll и php_ssh2.pdb в папку php / ext.

4) Удалить ‘;’ из ;extension:php_ssh2.dll в php.ini. Если эта строка не находится на вашем php.ini, добавьте ее.

5) Перезапустите Apache.

Если вы используете xamp 3.2.1 и PHP 5.6.8, это может быть полезно для вас.

Сделайте то, что сказал alex b, и загрузите пакет, соответствующий запросу вашей версии php (и битов) с этой страницы ( ссылка )

Я загрузил и заменил в C: xampp php ext, и это сработало!

Надеюсь, это поможет, приветствует.

Прежде всего, ваш вопрос раскрывает два неправильных представления:

  1. В разделе « Требования » на самом деле сказано следующее:

    Требуются библиотеки OpenSSL и libssh2. Убедитесь, что библиотеки разработки установлены, где типичным именем пакета может быть openssl-dev.

    Речь идет не о расширениях PHP, а о сторонних библиотеках, которые не имеют никакого отношения к PHP.

  2. extension=php_ssh2.dll требует, чтобы у вас на самом деле был файл php_ssh2.dll в вашем каталоге ext и у вас его, вероятно, нет, в основном потому, что он не связан с PHP.

Если мы проверим раздел « Установка», мы сможем прочитать, что SSH2 является расширением PECL. Есть несколько ссылок с инструкциями, но я могу составить резюме важной информации:

  • Вам нужен файл php_ssh2.dll который соответствует вашей установке PHP.
  • Ни команда PHP, ни команда PECL не распространяют такой файл.
  • Установка PECL-расширений в Windows сложна. Вам нужно загрузить исходный код C, захватить компилятор C и сделать файл самостоятельно или найти того, кто уже сделал это для вас.

Сказал, что, если вы не используете Google для php_ssh2.dll и не найдете что-то актуальное, вам, вероятно, не повезло.

Исправьте, что сработало для меня. Я запускаю xampp v. 3.2.1 apache 2.2, столкнувшись с одной и той же проблемой, попытался поместить файлы dll в другое место c: но не удалось, наконец, это помогло.

1.) Загрузите файлы определенной версии DLL из http://pecl.php.net/package/ssh2/0.12/windows и извлеките файлы

Обратите внимание, что даже если вы в 64-битной версии Windows загрузите 32 версию THREAD SAFE ssh, т.е. Thread Safe (TS) x86, согласно вашей версии php

2.) Добавить / заменить libssh2.dll на C: xampp php (стандартная установка)

3.) Добавьте / замените php_ssh2.dll и php_ssh2.pdb в C: xampp php ext (стандартная установка)

4.) перезапустить сервер Apache

Работали как очарование

CHEERS

У меня есть wamp с PHP 5.6.25 / 7.0.10 – установлен MySQL 5.7.14, и я сейчас работаю над PHP 7.0. У меня была такая же ошибка. Я проверил использование phpinfo (), если работали оба библиотекаря OpenSSL и libssh2 (вы можете Google проверить, как это проверить). После того, как я увидел, что они работают, я загрузил php_ssh2.dll по адресу http://pecl.php.net/package/ssh2/1.0/windows (также можно найти http://windows.php.net/downloads/pecl / релизы / ssh2 / ) для версии 7.0, поместите его в папку php ext. Затем я включил его в файл php.ini, используя расширение = php_ssh2.dll.

Затем он появился в phpinfo (). И это сработало. Надеюсь, поможет.

  • Главная

  • Инструкции

  • Linux

  • Как исправить ошибку аутентификации SSH

Blog

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

Как Исправить Ошибку Аутентификации Ssh (2)

В чем суть ошибки

У сообщения «authentication failed» перевод на русский предельно простой. Этот вывод в терминале говорит о том, что аутентификация пользователя не удалась.

Аутентификация — это проверка подлинности. Например, у вас есть сервер на cloud.timeweb.com. Вы настроили SSH для удаленного подключения. Чтобы система защиты вас пропустила, нужно пройти процедуру аутентификации – подтвердить, что это действительно вы. 

Метод проверки подлинности закреплен в конфигурационном файле SSH. По умолчанию это аутентификация по паролю. 

Другой вариант — использование пары SSH-ключей для проверки подлинности. В таком случае у пользователя на компьютере хранится закрытая часть ключа. На сервере располагается открытая часть. При попытке установить соединение эти части сравниваются. При совпадении доступ открывается. Если совпадения нет, появляется сообщение об ошибке — например, следующая ошибка SSH:

Permission denied (publickey)

Но причины появления ошибки не ограничиваются только неправильным паролем или не теми ключами. Сбой может возникать также из-за повреждения системных файлов или неверно выставленных прав доступа.

Ниже разберемся с наиболее частыми ситуациями. 

Ошибка при использовании пароля

Обычно проблемы возникают из-за неверного имени пользователя или пароля. Также стоит обратить внимание на конфигурацию сервера — может стоять запрет на аутентификацию через пароль. Как это проверить:

  1. Откройте файл конфигурации на сервере. Он находится по пути /etc/ssh/sshd_config.
  2. Найдите строку PasswordAuthentication. По умолчанию у неё значение `yes`. Это значит, что проверка по паролю разрешена.
  3. Если в вашем файле конфигурации параметр PasswordAuthentication имеет значение `no`, то подключиться по паролю не получится. Чтобы исправить ситуацию, измените значение на `yes`.

С паролем связано и появление ошибки su authentication failure. Вернее, с отсутствием парольной проверки у пользователя root. Если при такой конфигурации выполнить команду `su` без параметров, то вернется ошибка. Чтобы ее устранить, достаточно назначить пользователю root парольную защиту.

Ошибка при использовании ключей

Одна из самых распространенных проблем — использование не тех ключей при установке соединения. Часто это происходит, если с одного компьютера приходится подключаться к разным хостам. Самый простой способ не запутаться — давать понятные названия с указанием на то, для каких целей вы используете файлы аутентификации.

Использование большого количества ключей без явного указания нужного приводит еще к одной ошибке: 

Too many authentication failures for user

Причина сбоя — превышение числа попыток. Это случается из-за того, что SSH-клиент пытается подключиться к хосту, используя все доступные ключи. Исправить ситуацию можно с помощью опций IdentitiesOnly и IdentityFile. Пример запроса на подключение:

ssh -o IdentitiesOnly=yes 
    -o IdentityFile=id1.key
    user@example.com

Чтобы каждый раз не прописывать это в командной строке при подключении, можно указать необходимую настройку в конфигурационном файле SSH ~/.ssh/config. Пример такой настройки:

Host 192.168.3.44
    IdentityFile ~/.ssh/id_rsa
Host *
    IdentitiesOnly=yes

В этом случае SSH будет использовать только идентификаторы, указанные в файлах ssh_config, плюс идентификатор, указанный в командной строке. Идентификаторы, предоставленные агентом, будут игнорироваться.

При использовании ssh-ключей может возникнуть еще одна ошибка:

Permission denied (publickey, password)

Ее причиной может быть ввод неверной ключевой фразы. 

Если вы потеряете ключевую фразу, восстановить ее будет невозможно. Вам нужно будет сгенерировать новую пару значений для Secure Shell.

Восстановление открытого ключа

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

Самый просто способ — использовать утилиту ssh-keygen.

Запустите терминал и выполните команду:

ssh-keygen -y -f ~/.ssh/id_rsa

Здесь ~/.ssh/id_rsa — это путь к закрытому части, которая хранится на компьютере. В ответ вы получите последовательность символов. Это и есть открытая часть, которую необходимо добавить на сервер.

В среде Windows решить ту же задачу можно с помощью утилиты PuTTYgen, которая входит в набор PuTTY. В ней есть кнопка Load, через которую вы можете загрузить закрытый ключ. Для этого нужно лишь знать директорию, в которой он хранится на компьютере.

После импорта вы увидите окно с полем `Public key for…`. В нём отобразится открытая часть, которую можно скопировать и отправить на сервер.

Восстановить закрытую часть по открытой нельзя — это противоречит основам безопасности.

На что еще обратить внимание

У понятия «authentication failed» перевод дает весьма общее представление о причине сбоя. Проблема может крыться не только в пароле или ключах. Значение имеют также выставленные права доступа и алгоритмы шифрования.

Неправильная конфигурация клиента 

Распространенная ошибка — использование клиента SSH/SFTP (SSH, PuTTY, Filezilla) без правильной настройки всех необходимых параметров, таких как хост, порт, имя пользователя или закрытый ключ. 

Другая частая проблема возникает, когда вы используете неподдерживаемый сертификат. Например, пытаетесь добавить в PuTTY файл ключа *.pem вместо файла ключа *.ppk.

Противоречия в файле конфигурации

Убедитесь, что в файле /etc/ssh/sshd_config установлены параметры, которые не противоречат друг другу. Такое может быть, например, при отключении парольной проверки или запрете на подключение для пользователя root.

Распространенный пример конфликта: у параметра PasswordAuthentication установлено значение `yes`, а у параметра PermitRootLogin — значение `no` или `without-password`. Из-за этого сервер не понимает, как проверять пользователей, и не пускает никого.

Настройка прав доступа

У OpenSSH строгие правила к тому, кто должен быть владельцем файлов и какие на них должны быть выставлены права доступа.

Убедитесь, что на сервере выставлены следующие доступы:

  • ~./ssh – 700.
  • ~./ssh принадлежит текущему аккаунту.
  • ~/.ssh/authorized_keys – 600.
  • ~/.ssh/authorized_keys принадлежит текущему аккаунту.

На клиенте также проверьте разрешения следующих файлов:

  • ~ / .ssh / config – 600.
  • ~ / .ssh / id_ * – 600.

Почему важен владелец? Например, вы настраивали доступ через Secure Shell от имени одного пользователя, а затем пытаетесь подключиться под другим аккаунтом, у которого нет прав даже на чтение содержимого защищенных директорий с аутентификационными данными.

Использование устаревших алгоритмов

В OpenSSH начиная с седьмой версии не поддерживаются старые ключи, которые используют алгоритм цифровой подписи — DSA. Ключи ssh-dss считаются слишком слабыми для того, чтобы можно было доверять им защиту подключения к серверу.

Если у вас старые ключи, оптимальное решение — сгенерировать и добавить на хосты новые, которые основаны на более стойких алгоритмах. 

Есть и альтернатива, но пользоваться ей придется на свой страх и риск. Речь идет об изменении файла конфигурации /etc/ssh/sshd_config. Если установить параметру PubkeyAcceptedKeyTypes значение `+ssh-dss`, то можно будет использовать ключи, сгенерированные с помощью устаревшего алгоритма цифровой подписи.

Дополнительные опции могут понадобиться и на SSH-клиенте. Например, при подключении к серверу с ПО, которое давно не обновлялось. В частности, такие проблемы возникают при подключении к хостам на CentOS 6, поддержка которой прекращена в конце 2020 года. Чтобы исправить эту ошибку, необходимо добавить опцию `-oHostKeyAlgorithms=+ssh-dss`:

 ssh -oHostKeyAlgorithms=+ssh-dss user@legacyhost

Ошибки на сторонних сервисах

Проблемы аутентификации могут возникать и при использовании сторонних сервисов. Например, при подключении к VK API пользователи сталкиваются с сообщением user authorization failed invalid session. Устранить такой сбой самостоятельно не получится — нужно обращаться в поддержку.

Заключение

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

Недавно я сделал PHP для подключения к серверу Amazon через SFTP и обнаружил, что в соответствии с примером, написанным в блоге других людей

// Подключаемся к ssh, есть два способа подключения (1) Использовать пароль
         // (2) используем секретный ключ
    public function connect(){
        $methods['hostkey'] = $this->use_pubkey_file ? 'ssh-rsa' : [] ;
        $this->conn = ssh2_connect($this->config['host'], $this->config['port'], $methods);
                 // (1) При использовании секретного ключа
        if($this->use_pubkey_file){
                         // Протокол аутентификации пользователя
            $rc = ssh2_auth_pubkey_file($this->conn,$this->config['user'],$this->config['pubkey_file'],$this->config['privkey_file'],$this->config['passphrase']);
                         // (2) Используйте имя пользователя и пароль для входа
        }else{
            $rc = ssh2_auth_password( $this->conn, $this->config['user'],$this->config['passwd']);
        }
        return $rc ;
    }

Всегда сообщал об ошибке
Warning: ssh2_connect() [function.ssh2-connect]: Error starting up SSH connection(-5): Unable to exchange encryption keys in 

Затем следуйте инструкциям в официальном руководстве PHP и измените код на

$methods = array(
            'hostkey'=>'ssh-rsa,ssh-dss',
            'client_to_server' => array(
                'crypt' => 'aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-cbc,blowfish-cbc',
                'comp' => 'none'),
            'server_to_client' => array(
                'crypt' => 'aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-cbc,blowfish-cbc',
                'comp' => 'none'));
        if($this->use_pubkey_file){
            $this->conn = ssh2_connect($this->config['host'], $this->config['port'], $methods);
        }else{
            $this->conn = ssh2_connect($this->config['host'], $this->config['port']);
        }

Таким образом, ошибка ssh2_connect не будет сообщаться;

Это может быть сообщено позже

Warning: ssh2_auth_pubkey_file() [function.ssh2-auth-pubkey-file]: Authentication failed for XXXXXX using public key: Unable to open public key file in XXXXX on line XX

Для этой ошибки сначала убедитесь, что ваш открытый ключ и личный ключ переданы правильно. Если вы подтвердите, что передача правильная, вы обнаружите, что об этой ошибке сообщается.

Я сгенерировал это с PuTTYgen

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

Закрытый ключ также не может использовать кнопку «Сохранить закрытый ключ» ниже, вы должны использовать вышеупомянутый «Экспорт OpenSSH ключ», чтобы сохранить закрытый ключ;

Таким образом, не будет ошибки аутентификации, неудачной для XXX с использованием открытого ключа

dimas199862

im_dimas

@dimas199862

frontend и backend

При попытке установить выходит ошибка:

root@dmitriy:~# pecl install -f ssh2
WARNING: failed to download pecl.php.net/ssh2 within preferred state «stable», will instead download version 0.12, stability «beta»
downloading ssh2-0.12.tgz …
Starting to download ssh2-0.12.tgz (26,223 bytes)
………done: 26,223 bytes
6 source files, building
running: phpize
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525
libssh2 prefix? [autodetect] :
building in /tmp/pear/temp/pear-build-rootpsBQ2G/ssh2-0.12
running: /tmp/pear/temp/ssh2/configure —with-ssh2
checking for grep that handles long lines and -e… /bin/grep
checking for egrep… /bin/grep -E
checking for a sed that does not truncate output… /bin/sed
checking for cc… cc
checking whether the C compiler works… yes
checking for C compiler default output file name… a.out
checking for suffix of executables…
checking whether we are cross compiling… no
checking for suffix of object files… o
checking whether we are using the GNU C compiler… yes
checking whether cc accepts -g… yes
checking for cc option to accept ISO C89… none needed
checking how to run the C preprocessor… cc -E
checking for icc… no
checking for suncc… no
checking whether cc understands -c and -o together… yes
checking for system library directory… lib
checking if compiler supports -R… no
checking if compiler supports -Wl,-rpath,… yes
checking build system type… x86_64-unknown-linux-gnu
checking host system type… x86_64-unknown-linux-gnu
checking target system type… x86_64-unknown-linux-gnu
checking for PHP prefix… /usr
checking for PHP includes… -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib
checking for PHP extension directory… /usr/lib/php5/20100525
checking for PHP installed headers prefix… /usr/include/php5
checking if debug is enabled… no
checking if zts is enabled… no
checking for re2c… no
configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
checking for gawk… gawk
checking for ssh2 support… yes, shared
checking for ssh2 files in default path… not found
configure: error: The required libssh2 library was not found. You can obtain that package from sourceforge.net/projects/libssh2
ERROR: `/tmp/pear/temp/ssh2/configure —with-ssh2′ failed
root@dmitriy:~#


  • Вопрос задан

    более трёх лет назад

  • 1534 просмотра

aptitude install php5-ssh2
или на слаку переезжайте.

Пригласить эксперта


  • Показать ещё
    Загружается…

09 июн. 2023, в 23:05

80000 руб./за проект

09 июн. 2023, в 22:45

1000 руб./за проект

09 июн. 2023, в 22:39

1000 руб./в час

Минуточку внимания

Содержание

  1. Введение
  2. Клиент SSH не установлен
  3. Решение: Установите SSH-клиент
  4. Демон SSH не установлен на сервере
  5. Решение: Установите SSH на удаленном сервере
  6. Неверные учетные данные
  7. Служба SSH не работает
  8. Решение: Включите службу SSH
  9. Брандмауэр препятствует подключению SSH
  10. Решение: Разрешить SSH-соединения через брандмауэр
  11. Порт SSH закрыт
  12. Решение: Открыть порт SSH
  13. Отладка и логирование SSH
  14. Заключение

Введение

У вас возникли проблемы с доступом к удаленному серверу по SSH?

Если SSH отвечает сообщением “Connection refused“, вам может потребоваться изменить запрос или проверить настройку.

В этом руководстве вы найдете наиболее распространенные причины ошибки отказа в подключении SSH.

Почему происходит отказ в подключении при SSH?

Существует множество причин, по которым вы можете получить ошибку “Connection refused” при попытке подключиться по SSH к вашему серверу. Чтобы решить эту проблему, сначала нужно определить, почему система отказала вам в подключении по SSH.

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

Клиент SSH не установлен

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

На машине, с которой вы получаете доступ к серверу, должен быть установлен клиент SSH.

Без правильной установки клиента вы не сможете удаленно подключиться к серверу.

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

ssh

Если терминал выдает список опций команды ssh, клиент SSH установлен в системе.

Однако если он отвечает “command not found“, необходимо установить клиент OpenSSH.

Решение: Установите SSH-клиент

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

Для систем Ubuntu/Debian:

sudo apt install openssh-client

Для систем CentOS/RHEL:

sudo yum install openssh-client

Демон SSH не установлен на сервере

Точно так же, как вам нужна клиентская версия SSH для доступа к удаленному серверу, вам нужна серверная версия для прослушивания и приема соединений.

Поэтому сервер может отклонить входящее соединение, если SSH-сервер отсутствует или его установка недействительна.

Чтобы проверить доступен ли SSH на удаленном сервере, выполните команду:

ssh localhost

Если в выводе появится ответ “Connection refused”, переходите к установке SSH на сервере.

Решение: Установите SSH на удаленном сервере

Чтобы решить проблему отсутствия сервера SSH, обратитесь к разделу о том, как установить сервер OpenSSH.

Как установить OpenSSH-сервер из исходников в Linux

🛡️ Как обезопасить и защитить сервер OpenSSH

Неверные учетные данные

Неправильные учетные данные являются распространенными причинами отказа в SSH-соединении.

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

Затем проверьте, правильно ли вы используете IP-адрес сервера.

Наконец, убедитесь, что у вас открыт правильный порт SSH.

Проверить это можно, выполнив следующие действия:

grep Port /etc/ssh/sshd_config

На выводе отображается номер порта, как показано на рисунке ниже.

Примечание: Вы можете подключиться к удаленной системе по SSH, используя аутентификацию с помощью пароля или открытого ключа (беспарольный вход по SSH). Если вы хотите настроить аутентификацию с открытым ключом, обратитесь к разделу  🔬 Как обменяться ключом SSH для аутентификации без пароля между серверами Linux

Служба SSH не работает

Служба SSH должна быть включена и работать в фоновом режиме.

Если служба не работает, демон SSH не сможет принимать соединения.

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

sudo service ssh status

Решение: Включите службу SSH

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

systemctl start sshd

Чтобы включить запуск службы при загрузке системы, выполните команду:

sudo systemctl enable sshd

Брандмауэр препятствует подключению SSH

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

Брандмауэр защищает сервер от потенциально опасных соединений.

Однако если в системе настроен SSH, необходимо настроить брандмауэр так, чтобы он разрешал SSH-соединения.

Убедитесь, что брандмауэр не блокирует SSH-соединения, так как это может привести к ошибке “connection refused“.

Решение: Разрешить SSH-соединения через брандмауэр

Чтобы решить проблему, о которой мы говорили выше, вы можете использовать ufw (Uncomplicated Firewall), инструмент интерфейса командной строки для управления конфигурацией брандмауэра.

Введите следующую команду в окне терминала, чтобы разрешить SSH-соединения:

sudo ufw allow ssh

Порт SSH закрыт

Когда вы пытаетесь подключиться к удаленному серверу, SSH отправляет запрос на определенный порт.

Чтобы принять этот запрос, на сервере должен быть открыт порт SSH.

Если порт закрыт, сервер отказывает в подключении.

По умолчанию SSH использует порт 22.

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

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

sudo lsof -i -n -P | grep LISTEN

Найдите порт 22 в выводе и проверьте, установлено ли значение STATE в LISTEN.

Также вы можете проверить, открыт ли определенный порт, в данном случае порт 22:

sudo lsof -i:22


Решение: Открыть порт SSH

Чтобы включить порт 22 для прослушивания запросов, используйте команду iptables:

sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

Вы также можете открыть порты через графический интерфейс, изменив настройки брандмауэра.

Отладка и логирование SSH

Для анализа проблем с SSH в Linux можно включить режим verbose или режим отладки.

Когда вы включаете этот режим, SSH выводит отладочные сообщения, которые помогают устранить проблемы с подключением, конфигурацией и аутентификацией.

Существует три уровня :

  • уровень 1 (-v)
  • уровень 2 (-vv)
  • уровень 3 (-vvv)

Поэтому вместо доступа к удаленному серверу с помощью синтаксиса ssh [server_ip] добавьте опцию -v и выполните команду:

ssh -v [server_ip]

В качестве альтернативы вы можете использовать:

ssh -vv [server_ip] или
ssh -vvv [server_ip]

Заключение

В этой статье перечислены некоторые из наиболее распространенных причин ошибки SSH “Connection refused”.

Чтобы устранить проблему, просмотрите список и убедитесь, что все параметры настроены правильно.

27 мая, 2017 12:10 пп
36 066 views
| Комментариев нет

Linux, SSH, VPS

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

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

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

Требования

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

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

Отказ в доступе (парольная аутентификация)

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

Клиенты PuTTY и OpenSSH выдают такое сообщение:

root@111.111.111.111's password:
Permission denied (publickey,password).
PuTTY Error output
root@111.111.111.111's password:
Access denied
Server sent disconnect message
type 2 (protocol error):
"Too many authentication failures for root"

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

  • Убедитесь, что вы используете правильное имя пользователя. В CoreOS используйте пользователя core. В FreeBSD используйте аккаунт пользователя freebsd.
  • Парольная аутентификация пользователя может быть нарушена. Проверьте, поддерживает ли парольную аутентификацию веб-консоль сервера. Если она не поддерживает пароли, вам придется попытаться сбросить пароль или обратиться за помощью к службе поддержки, чтобы восстановить доступ.
  • Убедитесь, что сервер поддерживает парольную аутентификацию.

Отказ в доступе (аутентификация на основе SSH-ключей)

Этот метод использует криптографические ключи для аутентификации пользователя.

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

  • Как настроить SSH-ключи
  • Создание SSH-ключей для PuTTY

Вы можете получить такую ошибку:

Permission denied (publickey).
PuTTY Error output
Disconnected: No supported authentication methods available (server sent: publickey)

Многие наиболее распространенные проблемы, связанные с аутентификацией на основе ключей, вызваны неправильными правами доступа к файлам или правами собственности. Чтобы устранить проблему, попробуйте сделать следующее:

  • Убедитесь, что файл authorized_keys и сам закрытый ключ имеют правильные права доступа и собственности.
  • Убедитесь, что сервер поддерживает аутентификацию на основе ключей SSH.
  • Убедитесь, что клиент SSH может получить закрытый ключ. Если вы используете PuTTY, убедитесь, что ключи SSH правильно настроены в сессии. Если вы используете OpenSSH, убедитесь, что у закрытого ключа SSH есть соответствующие привилегии.
  • Убедитесь, что файл authorized_keys содержит правильный открытый ключ, и что открытый ключ добавлен на сервер.
  • Возможно, вы используете закрытый ключ, который больше не поддерживается сервисом OpenSSH. Эта ошибка обычно затрагивает серверы OpenSSH 7+ при использовании закрытого DSA-ключа SSH. Обновите конфигурацию сервера.

Консоль не поддерживает пароли

Если вы не можете восстановить доступ к консоли, это может указывать на проблемы с файловой системой или  конфигурацией в подсистеме PAM, которые влияют на механизм аутентификации. Эта ошибка также повлияет на попытки сбросить пароль root и войти в систему через консоль.

В консоли появляется форма аутентификации:

Ubuntu 14.04.4 LTS server tty1
server Login:
Password:

Но после ввода пароля появляется ошибка:

Login incorrect

После сброса пароля вы получите:

You are required to change your password immediately (root enforced)
Changing password for root.
(Current) UNIX Password:

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

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

Enter new UNIX password:
Retype new UNIX password:

Однако если после повторного ввода правильного нового пароля сессия перезапустится (т.е. снова вернется форма для входа в систему) или появится сообщение об ошибке, это означает, что проблема в одном из файлов, в котором хранятся данные аутентификации.

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

Устранение неполадок

Проверка доступных методов аутентификации

Если вы используете подробный вывод или следите за логами SSH-клиента, убедитесь, что в сообщении, описывающем методы аутентификации, указаны password и/или publickey.

debug1: Authentications that can continue: publickey,password

Если вы не нашли в списке метод аутентификации, который хотите использовать, откройте файл /etc/ssh/sshd_config. В нём часто допускается ошибка: PasswordAuthentication имеет значение yes, а PermitRootLogin – no или without-password для пользователя root.

Исправьте эту ошибку, перезапустите сервис.

Настройка прав доступа и собственности

Сервер и клиент OpenSSH имеют строгие требования к привилегиям и правам собственности на файлы ключей.

Сервер и клиент OpenSSH должны иметь следующие права:

  • ~./ssh – 700.
  • ~./ssh должен принадлежать текущему аккаунту.
  • ~/.ssh/authorized_keys – 600.
  • ~/.ssh/authorized_keys должен принадлежать текущему аккаунту.

Кроме того, клиент должен также иметь такие права:

  • ~ / .ssh / config – 600.
  • ~ / .ssh / id_ * – 600.

Эти изменения можно внести с помощью консоли.

Проверка открытого и закрытого ключа

Если вы забыли, какой закрытый ключ соответствует тому или иному открытому ключу, инструменты OpenSSH и PuTTY помогут вам сгенерировать открытый ключ на основе зарытого ключа. Полученный результат вы можете сравнить с файлом ~/.ssh/authorized_keys.

Чтобы восстановить открытый ключ на основе закрытого ключа в среде OpenSSH, используйте ssh-keygen и укажите путь к закрытому ключу.

ssh-keygen -y -f ~/.ssh/id_rsa
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCfBiMwCU1xoVVp0VbSYV3gTDV/jB57IHdILQ8kJ2622//Lmi4gDPlxA6HXVKq8odkGD/5MjqUw85X2rwEbhoBul74+LCToYJvvvBaDPCgg5z1icCKIJ1m/LJBrGNqPKCgqFWu0EH4/EFP2XIQqWqX1BZtJu/2YWrTr+xFOE/umoYmOd+t3dzQqMsv/2Aw+WmA/x/B9h+41WrobDgCExYNLPYcD0PO7fpsa8CcrZCo+TUWCe7MgQQCSM6WD4+PuYFpUWGw3ILTT51bOxoUhAo19U8B2QqxbMwZomzL1vIBhbUlbzyP/xgePTUhEXROTiTFx8W9yetDYLkfrQI8Q05+f

В среде PuTTY команда PuTTYgen.exe загружает интерфейс, в котором можно использовать опцию Load и импортировать закрытый ключ. PuTTY хранит такие файлы в формате .ppk (нужно знать место хранения файла).

Импортировав ключ, вы увидите окно с разделом Public key for pasting into OpenSSH authorized_keys file. В нём и будет искомый открытый ключ. Выделите текст и вставьте его в файл. Он сгенерирует открытый ключ.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCfBiMwCU1xoVVp0VbSYV3gTDV/jB57IHdILQ8kJ2622//Lmi4gDPlxA6HXVKq8odkGD/5MjqUw85X2rwEbhoBul74+LCToYJvvvBaDPCgg5z1icCKIJ1m/LJBrGNqPKCgqFWu0EH4/EFP2XIQqWqX1BZtJu/2YWrTr+xFOE/umoYmOd+t3dzQqMsv/2Aw+WmA/x/B9h+41WrobDgCExYNLPYcD0PO7fpsa8CcrZCo+TUWCe7MgQQCSM6WD4+PuYFpUWGw3ILTT51bOxoUhAo19U8B2QqxbMwZomzL1vIBhbUlbzyP/xgePTUhEXROTiTFx8W9yetDYLkfrQI8Q05+f imported-openssh-key

Можно проигнорировать комментарий после открытого ключа (imported-openssh-key).

В любом случае этот открытый ключ нужно добавить в файл ~/.ssh/authorized_keys.

OpenSSH 7 и устаревшие ключевые алгоритмы

В системах с OpenSSH 7 (FreeBSD и CoreOS по умолчанию) старые ключи DSA не поддерживаются.

Ключи ssh-dss считаются слабыми, вместо них рекомендуют использовать более надёжные современные алгоритмы.

Следовательно, в данном случае лучшим решением будет создать новые ключи и добавить их на хосты.

Однако в качестве обходного пути вы можете установить в PubkeyAcceptedKeyTypes значение +ssh-dss в файле /etc/ssh/sshd_config.

Заключение

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

Читайте также: Как настроить SSH-ключи

Tags: OpenSSH, PuTTY, SSH

Понравилась статья? Поделить с друзьями:
  • Ошибка sp flash tool 2035
  • Ошибка sp flash tool 0xc0060005
  • Ошибка sp flash tool 0xc0030012
  • Ошибка sp flash tool 0xc0010001
  • Ошибка sos функция аварийного вызова