Commande à distance dans le fichier de configuration ssh

12

Je voudrais définir ssh_config donc après avoir tapé, ssh my_hostnameje me retrouve dans un dossier spécifique. Tout comme je taperais cd /folder/another_one/much_much_deeper/.

Comment puis-je y parvenir?

ÉDITER. Il a été marqué comme doublon de "How to ssh into dir ..." mais ce n'est pas ma question.

Je sais que je peux exécuter n'importe quelle commande en les adaptant à la sshcommande. Ma question concerne le /ssh_configfichier et non la commande.

Kazz
la source
J'ai clarifié ma question.
Kazz
Il n'y a rien là-dedans man ssh_config. Le plus proche est LocalCommand mais il ne peut pas être utilisé pour une commande interactive.
lgeorget
1
Pouvez-vous expliquer (dans votre question) pourquoi vous pensez que le changement doit être fait ssh_config? Il existe probablement de meilleurs endroits pour configurer le répertoire de départ, et il serait utile de comprendre pourquoi il existe cette restriction particulière sur une solution possible.
roaima
1
Le fait "cela ne peut pas être fait en ssh_config" ne fait pas de cela un doublon de "faites-le en Bash". "Vous ne pouvez pas faire ça" est une réponse parfaitement valable.
Franklin Yu
1
@terdon Cependant, le fait "ce n'est pas possible" peut changer avec le temps. Oui, c'est possible maintenant. Maintenant, j'ai (ainsi que quiconque à venir voir cela) besoin d'une nouvelle réponse, et nous sommes coincés ici. Si ce n'est pas rouvert, j'imagine que le chemin souhaité est de créer une nouvelle question (et d'y répondre)?
Franklin Yu

Réponses:

19

Il n'y avait aucun moyen de le faire, jusqu'à OpenSSH 7.6 . Du manuel :

RemoteCommand

Spécifie une commande à exécuter sur la machine distante après une connexion réussie au serveur. La chaîne de commande s'étend jusqu'à la fin de la ligne et est exécutée avec le shell de l'utilisateur. Arguments pour RemoteCommandaccepter les jetons décrits dans la section TOKENS .

Alors maintenant, vous pouvez avoir

RemoteCommand cd /tmp && bash

Il a été introduit dans ce commit .

Franklin Yu
la source
5
Ajoutez RequestTTY forcesi la commande à distance nécessite un ATS. Par exemple:tmux new -As my-session
Aaron Blenkush
Ceci est l' sshoption tueur Merci!
nhed
Cela rend impossible l'exécution d'autres commandes, par exemple ssh my_hostname lséchouera avec Cannot execute command-line and remote command.. Il fait également échouer d'autres outils qui utilisent ssh comme git et rsync.
remram le
2

Je voudrais définir ssh_config donc après avoir tapé ssh my_hostname

Ce n'est pas possible. Il n'y a aucune option pour y parvenir ssh_config. Le plus proche est la configuration d'un alias bash ou d'une fonction bash, telle que

myssh() {
    ssh -t $1 "cd /dir/; bash"
}
Jakuje
la source
1

J'ai répondu sur un ticket différent avant que somoene n'ait indiqué que c'était l'original.

Si vous utilisez un Mac, ma recommandation est d'utiliser iTerm2 et de créer un profil. Mettez ssh my_hostnamela ligne de commande, puis ajoutez la commande cd /folder/another_one/much_much_deeper/dans le champ d'envoi de texte au début. Lorsque vous vous connectez aux sessions, il ssh vers votre nom d'hôte et cd dans le répertoire de votre cas, ou exécute une commande.

Govna
la source