Configuring SSH Access to a Docker Container via an Alternative Port

Configuring SSH Access to a Docker Container via an Alternative Port

If you want to configure SSH access to a Docker container using an alternative port, such as port 6666, follow the steps below carefully. This guide assumes that you have administrative access to your Docker host and are familiar with basic Linux commands.

Step 1: Run the Container with SSH Service

Start by running a new container from your image with port 6666 on the host mapped to port 22 inside the container:

sudo docker run -it -p 6666:22 --name ssh-container testimage

Make sure to replace testimage with the actual name of your Docker image. The --name option gives the container a specific name for easier management.

Step 2: Install OpenSSH Server in the Container

Once inside the container, update the package list and install the OpenSSH server:

apt-get update && apt-get install -y openssh-server

Step 3: Set the Root Password

Set a password for the root user, which will be required when logging in via SSH:

passwd

Follow the prompts to set a strong password.

Step 4: Modify the SSH Configuration

Edit the SSH daemon configuration file to allow root login with a password:

vim /etc/ssh/sshd_config

Find the line PermitRootLogin prohibit-password and either comment it out or change it to:

PermitRootLogin yes

Security Warning: Allowing root login over SSH can pose a security risk. Consider creating a non-root user for SSH access instead.

Step 5: Restart the SSH Service

Restart the SSH service to apply the changes:

service ssh restart
# Or use:
# /etc/init.d/ssh restart

Step 6: Connect to SSH from the Host Machine

Try connecting to the container from another terminal window on the host machine:

ssh -p 6666 root@localhost

Or if you’re trying to connect from outside the host machine, replace localhost with the IP address of the host machine where the Docker container is running.

Troubleshooting Connection Refused Error

If you encounter a “Connection refused” error when trying to connect remotely, it might be because the host’s firewall is blocking the connection on port 6666. To fix this, you need to open the port on the host machine:

sudo iptables -I INPUT -p tcp --dport 6666 -j ACCEPT

Additionally, ensure that:

  • Your Docker container is running.
  • You have correctly mapped the ports using -p 6666:22.
  • There are no other services on the host machine already using port 6666.

Connecting Remotely

To connect to the Docker container running on the server from a remote machine, use the following command, replacing 192.168.x.xx with the actual IP address of your server:

ssh -p 6666 root@192.168.x.xx

Security Recommendations

  • Use a non-root user for SSH access whenever possible.
  • Ensure the root user has a strong password.
  • Configure SSH key-based authentication for improved security.
  • Keep the OpenSSH server updated with the latest security patches.

By following these steps, you should be able to successfully configure SSH access to your Docker container using an alternative port. Remember to always prioritize security when configuring network services.

Comments

Popular posts from this blog

How to turn off Sass warning prompts in Nuxt.js projects

Guide to Modifying Docker Container Port Mappings

Optimizing Class Name Management with CSS Attribute Selector