SSH - Comment inclure la "commande -t" dans le fichier ~ / .ssh / config

13

J'utilise le ~/.ssh/configfichier pour pouvoir facilement entrer ssh myserveret il fournira le nom d'utilisateur, le port, le nom d'hôte, le fichier d'identité, etc. corrects.

Cependant, pour de nombreux serveurs, la première chose que je fais est d'entrer su -pour me connecter en tant que root. Je peux le faire en une seule commande sur la ligne de commande comme ceci: ssh myserver -t su -. Y a-t-il quelque chose que je peux ajouter à mon ~/.ssh/configdossier qui fera cela pour moi? Je veux pouvoir faire ssh myserver-rootet ça fera la même chose que ssh myserver -t su -?

Je sais PermitRootLogin, c'est désactivé pour ce serveur, et je suis réticent à l'activer. Je préfère de loin voir s'il existe un moyen de le faire en utilisant ssh du côté client.

Rory
la source

Réponses:

10

Je pense que j'aborderais cela dans l'autre sens - utilisez 'command =' sur l'entrée de clé publique dans votre fichier ~ / .ssh / authorized_keys sur le serveur distant, pour exécuter votre commande "su -".

Utilisez ensuite / référencez la clé privée dans votre fichier ~ / .ssh / config (option IdentityFile) pour chaque hôte / alias ("myserver-root") que vous souhaitez utiliser de cette façon.

Les options disponibles dans authorized_keys (5) sont documentées dans sshd (8).

jrg
la source
Oui, cela fait exactement ce que je veux. :) J'ai un contrôle total sur le fichier ~ / .ssh / authorized_key sur le serveur et je n'ai aucun problème à changer cela.
Rory
3

Pourquoi ne pas ajouter un script à un répertoire de votre chemin (ou un alias pour celui-ci) appelé rssh comme:

#!/bin/bash
ssh $1 -t 'su -'

Alors c'est juste:

rssh myServer
Kyle Brandt
la source
1

Je n'ai trouvé aucune option de configuration pour l'allocation de pseudo-tty dans la source OpenSSH.

Mais je peux donner un conseil concernant PermitRootLogin, définissez-le sur:

PermitRootLogin without-password

Et autorisez uniquement les connexions root avec les clés ssh.

rkthkr
la source
1

Que diriez-vous d'ajouter quelque chose comme ça dans ~ / .bashrc côté serveur?

if [ "$SSH_TTY" != "" ]; then su -; logout; fi
Shawn Chin
la source
1

La meilleure réponse est probablement une combinaison de rkthkr et jrg . Utilisez PermitRootLoginpour exiger une clé, puis placez-la uniquement avec le commandmot clé dans le fichier authorized_keys de la racine.

mwalling
la source