.ssh / config façon de spécifier l'allocation de pseudo-tty et l'exécution des commandes

13

Existe-t-il un moyen de spécifier, dans .ssh/config, une commande comme:

ssh -t remote-host "screen -dR screen_name"

donc je peux facilement accéder à la screensession à distance avec ssh remote-host?

En ce moment, j'ai résolu ce problème en utilisant un script personnalisé:

$ cat ~/bin/sssh 
#!/bin/sh

/usr/bin/ssh -t $1 "screen -dR ab"

~/binreste le premier $PATH, mais il est inflexible et laid.

Je voudrais également trouver un moyen d'implémenter l'autocomplétion de l'hôte pour mon script personnalisé.

UN B
la source
Je remplacerais $1par $@. Ensuite, vous pouvez ajouter plus d'options, pas seulement le nom d'hôte. Pour terminer, essayez d'exécuter . /usr/share/bash-completion/completions/ssh, puiscomplete -F _ssh sssh
Alex Stragies

Réponses:

17

Pour allouer le tty comme vous le feriez avec l' -toption, placez RequestTTY forceune entrée dans le fichier de configuration ssh (généralement dans ~/.ssh/config). Pour toujours exécuter une commande sur le serveur après vous être connecté, entrez RemoteCommand COMMANDl'entrée, où se COMMANDtrouve la commande que vous souhaitez exécuter lors de la connexion. Pour d'autres options, cochez man ssh_config.

Host remote-host
    Hostname my.server.com
    User imauser
    IdentityFile /path/to/identity_file
    RequestTTY force
    RemoteCommand screen -dR screen_name
Brian Albert Monroe
la source
7

Utilise la force Luke!

RequestTTY forcedans votre ~/.ssh/configpour l'hôte souhaité.

Veaceslav Mindru
la source
1

Je dirais que c'est le moyen le plus flexible. Un script vous permet de définir des paramètres, d'ajouter des conditions, de modifier la commande selon vos besoins, le tout en fonction des entrées.

Il existe des moyens de "forcer" la commande authorized_keys. Mais je ne connais aucun moyen de forcer l'allocation tty sauf depuis la ligne de commande ou de forcer une commande sur le serveur distant à partir des fichiers de configuration côté local.

Moi-même, j'ai un script qui analyse le fichier de configuration, vérifie le DNS avec différents domaines et définit la chaîne de titre de l'émulateur de terminal. Je l'appelle depuis l'écran sur mon système local ( Ctrl-a g).

Arcege
la source
0

Remarque: RemoteCommandcommence à travailler avec OpenSSH 7.6 . Dans la version précédente (c'est-à-dire Debian 9.9 actuelle), le client ssh cesserait de fonctionner correctement (au moins avec git pull).

Mathissimo
la source