Exécutez une commande à distance à l'aide du fichier de configuration ssh
32
J'aimerais pouvoir configurer une commande à exécuter lors de la connexion ssh à un serveur, sans avoir besoin de la taper. Fondamentalement, je recherche l'équivalent du fichier de configuration ssh:
Il est également possible d'insérer une commande dans votre fichier de clés autorisées. ( ~/.ssh/authorized_keys) Cela vous permet d'exécuter une commande personnalisée pour chaque clé du fichier. Je l'utilise pour transmettre des connexions shell via mon pare-feu. Le résultat est que je peux ssh à un hôte et il connecte automatiquement la session à un hôte à l'intérieur du réseau. L' authorized_keysentrée ressemble à ceci:
command="ssh -Tq <hostname> \"$SSH_ORIGINAL_COMMAND\"",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAA... the rest of the key ...
Plus précisément, la redirection est pour mon instance de gitolite. Cela permet un accès extérieur simple sans exposer directement l'hôte gitolite à un accès externe. Consultez la page de manuel pour plus d'informations. ( http://linux.die.net/man/8/sshd )
C'est génial, je ne savais pas que tu pouvais faire ça. +1
Brian Wigginton
3
Si vous placez la commande dans votre fichier authorized_keys, cela cassera des choses telles que rsync et scp - vous obtiendrez quelque chose comme ceci: open terminal failed: not a terminal. Sachez également que si la commande échoue, vous ne pourrez pas vous connecter. Je l'ai découvert à la dure.
Si vous exécutez OpenSSH, il semble qu'il
~/.ssh/rc
soit exécuté lors de la connexion .la source
/.ssh/rc
trouve sur la machine cliente ou serveur? On dirait que d'après les documents du serveur, non?rc
fichier ne semble pas exécuter des choses commescreen
, obtenant une erreur "Doit être connecté à un terminal"Vous pouvez configurer un alias bash.
Dans votre fichier .bashrc, mettez:
Ensuite, vous n'auriez même pas à taper le nom d'hôte.
Ou, si vous vouliez le faire avec plusieurs hôtes (et que plusieurs alias ne fonctionneraient pas), utilisez un petit script:
la source
Vous résolvez à froid cela dans votre
.ssh/config file
, pour l'hôte où vous souhaitez exécuter une commande, ajoutezoù
<some command>
est votre commande. Cela fonctionne également avec screen ou tmux.la source