Como Usar Cada TTY do Linux para um Servidor SSH Diferente (Sem Login Local)

Objetivo: Configurar cada TTY virtual (Ctrl+Alt+F1, F2, etc.) para conectar automaticamente a um servidor SSH diferente, sem exigir login local.


1. Métodos Disponíveis

MétodoVantagensDesvantagens
Substituir getty por SSH (systemd)Automático, reinicia se cairRequer configuração manual por TTY
Auto-SSH via .profileSimples de configurarVolta ao shell local se desconectar
Multiplexadores (tmux/byobu)Flexível, múltiplas sessõesRequer interação manual
Editar /etc/passwdRadical, sem shell localPerde acesso local ao TTY

Recomendação: Método 1 (systemd) é o mais robusto.


2. Configuração Automática (Sem Login Local)

(Recomendado) Usando systemd para SSH Direto

Passo 1: Crie um serviço para cada TTY (ex.: TTY2 → Servidor1).

sudo nano /etc/systemd/system/ssh-tty2.service

Conteúdo (ajuste user@servidor):

[Unit]
Description=SSH automático para Servidor1 (TTY2)
After=network.target

[Service]
ExecStart=/usr/bin/ssh -o "StrictHostKeyChecking=no" user@servidor1
Restart=always
RestartSec=5
StandardInput=tty
StandardOutput=tty
TTYPath=/dev/tty2
TTYReset=yes
TTYVHangup=yes

[Install]
WantedBy=multi-user.target

Passo 2: Desative o getty padrão e ative o serviço SSH.

sudo systemctl mask [email protected]  # Desativa login local
sudo systemctl enable --now ssh-tty2.service  # Ativa SSH automático

Repita para outros TTYs (TTY3, TTY4, etc.).


Configurar SSH Sem Senha (Opcional)

Para evitar prompts de senha:

ssh-keygen -t ed25519  # Gere chaves SSH (se já não tiver)
ssh-copy-id user@servidor1  # Copie a chave para o servidor

Agora o SSH loga automaticamente.


3. Alternativas

a) Usando .profile para Auto-SSH (Simples, mas menos robusto)

Edite ~/.profile:

if [[ $(tty) == "/dev/tty2" ]]; then
    ssh user@servidor1
elif [[ $(tty) == "/dev/tty3" ]]; then
    ssh user@servidor2
fi

Problema: Se o SSH cair, volta ao shell local.

b) Usando tmux ou byobu para Multiplexação

Em um único TTY, você pode gerenciar várias sessões:

tmux new-session -s servidor1 "ssh user@servidor1"

Vantagem: Flexível, mas requer comando manual.

c) Solução Radical (Substituir Shell por SSH)

Edite /etc/passwd (não recomendado):

usuario:x:1000:1000:SSH Automático:/home/usuario:/usr/bin/ssh user@servidor1

Cuidado: Remove acesso local ao TTY.


4. Como Voltar ao Padrão

sudo systemctl unmask [email protected]  # Restaura o getty
sudo systemctl disable ssh-tty2.service   # Desativa o SSH automático

5. Resumo Final

Melhor método: systemd + serviço personalizado (robusto, reinicia automaticamente).
🔧 Alternativa rápida: .profile + autologin SSH (simples, mas menos confiável).
🔄 Para múltiplas sessões: tmux/byobu em um único TTY.


Pronto! Agora você pode:

  • Acessar Ctrl+Alt+F2 → Conexão direta ao servidor1.
  • Acessar Ctrl+Alt+F3 → Conexão direta ao servidor2.
  • Sem digitar login local, sem intervenção manual.
Rolar para cima