Então em ssh.c para o OpenSSH 7.6p1 encontramos
case 'N':
no_shell_flag = 1;
options.request_tty = REQUEST_TTY_NO;
então -N faz duas coisas:
- o
no_shell_flagaparece apenas emssh.ce é ativado apenas para as opções-Wou-N, caso contrário, ele aparece em alguns blocos lógicos relacionados aControlPersiste verificação de integridade envolvendo os garfos de plano de fundo. Eu não vejo uma maneira que uma opção possa definir diretamente. - de acordo com
readconf.corequest_ttycorresponde à opçãoRequestTTYdetalhada emssh_config(5).
Isso deixa (além do monkey patchear o OpenSSH e recompilar, ou pedir uma opção ssh_config para alternar no_shell_flag com ...) algo como:
Host devdb
User someuser
HostName the_hostname
LocalForward 1234 127.0.0.1:1234
RequestTTY no
RemoteCommand cat
Que tecnicamente inicia um shell, mas esse shell deve substituir-se imediatamente com o programa cat , que deve então 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 for fechada). Outra opção seria executar algo que apenas bloqueia .