Je veux configurer un alias dans mon fichier de configuration qui a le même résultat que cette commande:
ssh -N devdb -L 1234:127.0.0.1:1234
Mon entrée .ssh / config pour devdb
:
Host devdb
User someuser
HostName the_hostname
LocalForward 1234 127.0.0.1:1234
Que dois-je mettre dans la configuration ci-dessus pour ne pas démarrer un shell?
ssh
ssh-config
mikeb
la source
la source
Réponses:
Donc,
ssh.c
pour OpenSSH 7.6p1, nous trouvonsil en
-N
va de même pour deux choses:no_shell_flag
seul apparaît dansssh.c
et n'est activé que pour les options-W
ou-N
, sinon il apparaît dans certains blocs logiques liés à laControlPersist
vérification d'intégrité impliquant des fourches d'arrière-plan. Je ne vois pas comment une option pourrait la régler directement.readconf.c
lerequest_tty
correspond à l'RequestTTY
option détaillée dansssh_config(5)
.Cela laisse (à part le singe patcher OpenSSH et recompiler, ou demander une
ssh_config
option pour basculerno_shell_flag
avec ...) quelque chose comme:Ce qui techniquement démarre un shell mais ce shell devrait immédiatement se remplacer par le
cat
programme qui devrait ensuite bloquer en permettant l'utilisation du port forward entre-temps.cat
est portable, mais consommera l'entrée (s'il y en a) ou pourrait échouer (si l'entrée standard est fermée). Une autre option serait d' exécuter quelque chose qui ne fait que bloquer .la source
.ssh/config
... bravo!RemoteCommand exec sleep infinity
.@thrig a la bonne réponse en fonction de votre désir de le faire uniquement dans
.ssh/config
On pourrait également envisager d'utiliser une fonction avec des valeurs par défaut pour rendre d'autres commandes de tunnel rapides (surtout si le tunnel ne change pas mais seulement l'hôte).
En voici trois exemples: sans argument, les valeurs par défaut spécifiées dans la fonction sont utilisées:
avec tunnel par défaut, exécuté sur un hôte différent:
avec les deux valeurs par défaut, exécutez une opération ponctuelle complète vers un nouvel hôte / tunnel:
la source
Une commande à distance plus utile basée sur la réponse de @ thrig:
Le
read -r -d '' _
bloque la connexion jusqu'à ce que l'utilisateur appuie surcontrol+c
.la source