Quero configurar um alias no meu arquivo de configuração que tenha o mesmo resultado que este 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?
ssh
ssh-config
mikeb
fonte
fonte
Respostas:
Então,
ssh.c
para o OpenSSH 7.6p1, encontramosassim
-N
acontece com duas coisas:no_shell_flag
único aparece emssh.c
e está ativado apenas para o-W
ou-N
opções , caso contrário, aparece em alguns blocos lógicos relacionados àControlPersist
verificação de sanidade envolvendo garfos em segundo plano. Não vejo como uma opção possa defini-la diretamente.readconf.c
asrequest_tty
corresponde àRequestTTY
opção detalhado nassh_config(5)
.Isso deixa (além de corrigir o OpenSSH do macaco e recompilar ou pedir uma
ssh_config
opção para alternarno_shell_flag
com ...) algo como:O que tecnicamente inicia um shell, mas esse shell deve substituir-se imediatamente pelo
cat
programa que deve bloquear, permitindo que a porta a frente seja usada 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 .fonte
.ssh/config
... bem feito!RemoteCommand exec sleep infinity
.O @thrig tem a resposta certa com base no seu desejo de fazer isso exclusivamente dentro de
.ssh/config
Pode-se também considerar o uso de uma função com padrões para acelerar outros comandos de encapsulamento (especialmente se o encapsulamento não mudar, mas apenas o host).
Aqui estão três exemplos disso em uso: sem argumentos, os padrões especificados na função são usados:
com o padrão de túnel, execute em um host diferente:
com os dois padrões, execute um único passo para um novo host / túnel:
fonte
Um comando remoto mais útil baseado na resposta do @ thrig:
O
read -r -d '' _
irá bloquear a conexão até que o usuário pressionarcontrol+c
.fonte