Tutorial container docker open ssh server para acessar websites

Objetivo

Criar um container utilizando docker para prover o serviço de conexão por ssh, com o open-ssh server, para prover acesso a websites configurados no servidor. Uma forma elegante de configurar o acesso de um usuário a diversos websites que este tem acesso e de forma organizada.

Requisitos

  • Docker e docker compose instalado e configurado no servidor
  • Pastas com arquivos de diferentes usuários que deseja organizar o acesso
    • Por exemplo: pastas de diversos websites que um webmaster tem privilégios de acesso
  • Chave pública para acesso com certificado (opcional)
    • Possibilidade de acesso por nome de usuário/senha: menos seguro

Passo a passo para criar e configurar um container com open ssh server

Passo 1 – Criar pasta para configuração do container

mkdir ~/docker
mkdir ~/docker/openssh
cd ~/docker/openssh

Caso queira criar diversos containers com o openssh, pode criar pastas seguindo o modelo openssh-1, openssh2, …

Passo 2 – Criar o arquivo de configuração

Vamos então criar nosso arquivo docker-compose.yml:

nano docker-compose.yml

E agora copie o código abaixo dentro do arquivo:

services:
  openssh-server:
    image: lscr.io/linuxserver/openssh-server:latest
    container_name:  openssh_server
#    hostname: openssh_server
    environment:
      - PUID=1000							#Importante para não ter erro de permissão de escrita
      - PGID=1000							#Importante para não ter erro de permissão de escrita
      - TZ=America/Sao_Paulo
      - PUBLIC_KEY_FILE=/home/nomeusuario/.ssh/authorized_keys 		#opcional
#      - PUBLIC_KEY=suachavepublicaporextenso 				#opcional
#      - PUBLIC_KEY_DIR=/home/nomedousuario/apenas_chaves_publicas/ 	#opcional
#      - PUBLIC_KEY_URL=https://github.com/nomedousuario.keys 		#opcional
      - SUDO_ACCESS=false 						#opcional
      - PASSWORD_ACCESS=true 						#opcional
      - USER_NAME=nomedousuario 					#opcional
      - USER_PASSWORD=senhadousuario 					#opcional
#      - USER_PASSWORD_FILE=/home/nomedousuario/senhaemarquivo.txt 	#opcional
#      - LOG_STDOUT= 							#optional
    volumes:
      - /var/www/html/site1.com.br/public_html:/config/site1.com.br
      - /var/www/html/site2.com.br/public_html:/config/site2.com.br
    ports:
      - 2222:2222
    restart: unless-stopped

Passo 3 – Iniciando o container

Para iniciar o container, basta iniciar o comando:

docker compose up -d

Passo 4 – Credenciais de acesso

A forma mais simples de acessar é utilizando o software Filezilla, por possuir interface gráfica. Mas há quem prefere acessar diretamente pelo terminal também.

Do exemplo acima, as credenciais de acesso são:

host: sftp://192.168.1.100
Username: nomedousuario
Password: senhadousuario
Port: 2222

Lembrar de substituir o IP acima, pelo IP do seu servidor e não o IP do container. Se conectar pelo Filezilla, é necessário informar o prefixo sftp:// para que ele entenda que está realizando uma conexão por ssh.

Container Docker OpenSSH - conexão pelo filezilla com usuário e senha

Para conectar pelo terminal basta executar o comando e informar a senha:

ssh nomedousuario@192.168.1.100 -p 2222

Conclusão

A criação do container do OpenSSH server é bem simples, sendo possível escolher pela autenticação por chave pública ou usuário e senha. A conexão SSH é uma forma de acessar arquivos remotos de forma mais segura que o protocolo FTP. O setup acima é bem úteil também para organizar vários website ou pastas que podem ser acessar por determinado usuário.