How to solve connection issues

This page contains instructions and tips to help diagnose possible problems that could make Operous unable to connect to a server before running a test or while trying to register.

Connectivity tests

The Operous Test Runner shows the following information it can’t connect to a registered server:

server address
Figure 1: Connectivity Error

The message displays the IP address and TCP port used to make the SSH connection. In the preceding example the IP address is 192.168.1.76 and the TCP port is 22.

With this information at hand check if it’s possible to open a connection.

When the registration script can’t complete the connectivity test, the beginning of it’s output is:

[1/3] ✔ This server is supported
[2/3] ✔ SSHD successfully configured
[3/3] ✗ Operous Test Runner couldn\'t reach this server

Operous Test Runner was unable to reach this server!

# [...]

Operous tries to connect at the server public IP address. If you’re not sure what is this IP address, check it with one service that returns your server public IP:

curl https://ipinfo.io/ip

Make sure to execute the commands below on a system connected to the public Internet, for instance your workstation.

An active VPN on the workstation can interfere on troubleshooting. Make sure the active VPN connection isn’t interfering on the connection tests.

Replace the IP address and TCP port used on the examples below with the ones of the server you’re troubleshooting.

Testing the connection on Linux

On a Linux system, open a terminal and run the following command:

echo -n | telnet 192.168.1.76 22

If the connection is established, it should result in the following output:

Trying 192.168.1.76...
Connected to 192.168.1.76.
Escape character is '^]'.
Connection closed by foreign host.

If the connection isn’t established, it should result in the following output:

Trying 192.168.1.76...
telnet: Unable to connect to remote host: connection refused

Testing the connection on Windows

On a Windows system, open a PowerShell prompt and run the following command:

Test-NetConnection -computer 192.168.1.76 -port 22 | Select-Object -Property TcpTestSucceeded

If the connection establishes, it should result in the following output:

TcpTestSucceeded
----------------
            True

If the connection isn’t established, it should result in the following output:

TcpTestSucceeded
----------------
           False

The connection test works but the problem persists

It’s possible that there are filtering rules applied on the server firewall or an external firewall that blocks the Operous Test Runner from make a connection to the server.

The next steps are to check if a local or external firewall might be blocking the connection.

Check the local firewall

Only Ubuntu 18.04 and 20.04 are currently supported.

Run the following command on the server:

sudo ufw status

If the firewall is inactive the following output appears:

Status: inactive

If the firewall is active, make sure its configuration contain rules that allow inbound traffic for the Operous Test Runner on the SSH port.

To keep your firewall rules up to date, always resolve the FQDN runners.operous.dev for the current list of IP addresses used by the Operous Test Runner to connect to servers.

Check ssh server security group

Public cloud providers protect servers from outside connections running them inside isolated networks with custom traffic rules. If this scenario may be the case refer to your cloud provider documentation and learn how to allow inbound SSH traffic:

Didn’t find your cloud provider? Please contact the Operous team.

The IP address or port registered is wrong

Operous currently doesn’t support changing the IP address nor the SSH port of a server after its registration.

Contact the Operous team if the IP address or port of a registered server needs to be changed until this feature isn’t implemented.

Check the Operous user exists

The Operous Test Runner logins on the server using the operous-test-runner user. If this user isn’t present, this may be the issue at hand.

Run the following command on the server to check if the user operous-test-runner exists:

getent passwd | grep operous-test-runner

If the user exists, the command displays some user login information. If the user does not exist, there is no output.

To recreate the user, run the following command:

adduser \
    --ingroup sudo \
    --disabled-password \
    --gecos 'Operous Test Runner' \
    operous-test-runner
If the user operous-test-runner didn’t exist, make sure there is no other process that removes the required user.

Still doesn’t work

If the preceding procedures didn’t help, please contact the Operous team.