Quero configurar um alias no meu arquivo de configuração que tenha o mesmo resultado deste comando:
ssh -N devdb -L 1234:127.0.0.1:1234
Minha entrada .ssh/config para devdb
:
Host devdb
User someuser
HostName the_hostname
LocalForward 1234 127.0.0.1:1234
O que coloco na configuração acima para não iniciar um shell?
Então,
ssh.c
para o OpenSSH 7.6p1, encontramoso mesmo
-N
acontece com duas coisas:no_shell_flag
só aparecessh.c
e só é ativado para as opções-W
ou-N
, caso contrário, ele aparece em alguns blocos lógicos relacionadosControlPersist
e verificações de sanidade envolvendo bifurcações em segundo plano. Não vejo como uma opção poderia configurá-lo diretamente.readconf.c
o querequest_tty
corresponde àRequestTTY
opção detalhada emssh_config(5)
.Isso deixa (além de corrigir o OpenSSH e recompilar, ou solicitar uma
ssh_config
opção para alternarno_shell_flag
com ...) algo como:O que tecnicamente inicia um shell, mas esse shell deve se substituir imediatamente pelo
cat
programa que deve bloquear, permitindo que o encaminhamento de porta seja usado enquanto isso.cat
é portátil, mas consumirá entrada (se houver) ou poderá falhar (se a entrada padrão estiver fechada). Outra opção seria executar algo que apenas bloqueia arquivos .@thrig tem a resposta certa com base no seu desejo de fazer isso apenas dentro
.ssh/config
Pode-se também considerar o uso de uma função com padrões para agilizar outros comandos de túnel (especialmente se o túnel não mudar, mas apenas o host).
Aqui estão três exemplos de uso: sem argumentos, os padrões especificados na função são usados:
com padrão de túnel, execute em um host diferente:
com ambos os padrões, execute um one-off completo para um novo host/túnel:
Um comando remoto mais útil com base na resposta de @thrig:
O
read -r -d '' _
bloqueará a conexão até que o usuário pressionecontrol+c
.