J'ai découvert qu'avec la nouvelle société avec laquelle je travaille, je dois souvent accéder à des serveurs Linux avec des durées de vie relativement courtes. Sur chacun de ces serveurs, j'ai un compte, mais chaque fois qu'un nouveau est créé, je dois passer par les tracas du transfert sur mon .bashrc. Il est cependant possible que dans environ un mois, ce serveur ne soit plus là. Je dois également accéder à de nombreux autres serveurs pendant de courtes périodes (minutes) où cela ne vaut tout simplement pas la peine de transférer sur mon .bashrc mais comme je travaille sur beaucoup de serveurs, cela représente beaucoup de temps perdu.
Je ne veux rien changer sur les serveurs, mais je me demandais s'il y avait un moyen d'avoir un .bashrc "par connexion", donc chaque fois que je SSH vers un serveur mes paramètres seraient utilisés pour cette session.
Si cela est possible, ce serait bien si je pouvais faire la même chose avec d'autres fichiers de configuration, comme les fichiers gitconfig.
la source
Réponses:
Je pense que ce que vous voulez est (dans votre .ssh / config sur la machine à partir de laquelle vous vous connectez):
alors vous pouvez débuter avec:
et soyez sur votre joyeux chemin. LocalCommand exécute la commande sur le serveur auquel vous vous connectez quand il y arrive, juste avant votre session réelle.
Je voudrais également m'assurer que les sshds sur les serveurs sont configurés avec le
PermitLocalCommand yes
Il existe de nombreuses façons de modifier cette commande locale pour la faire fonctionner dans votre environnement spécifique - vous pouvez boucler à partir d'un serveur Web interne ou tirer à partir d'un montage nfs par exemple.
la source
; source /path/to/.bashrc
après la commande scp pour qu'il soit généré automatiquement. Enfin, un inconvénient peu important de cette méthode est que je dois taper mon mot de passe deux fois. Mais à la fin, cela a fonctionné, alors merci.source /path/to/.bashrc
sera exécuté sur la machine à partir de laquelle vous vous connectez. Les commandes dansLocalCommand
n'ont pas accès à la session ssh.Je pense que sshrc est ce que vous recherchez: https://github.com/Russell91/sshrc
Vous pouvez l'utiliser pour définir des variables d'environnement, définir des fonctions et exécuter des commandes post-connexion. C'est aussi simple que cela, et cela n'aura pas d'impact sur les autres utilisateurs du serveur - même s'ils utilisent également sshrc. Pour une configuration plus avancée, continuez à lire.
la source
Si vous n'avez jamais touché le serveur auparavant, il n'y aura aucune entrée dans ~ / .ssh / known_hosts pour cela.
Vous pouvez rechercher un hôte connu donné avec "ssh-keygen -F", mais vous devrez tester cette sortie (grep) car ssh-keygen ne renvoie pas false pour un échec. Notez que si vous faites référence à un hôte par différents identifiants (adresse IP, nom d'hôte, nom de domaine complet), ces derniers sont traités comme des instances distinctes.
Vous pouvez écrire un wrapper pour ssh qui transfère votre environnement utilisateur vers cet hôte lors de la première connexion:
ssh-newenv () {si! ssh-keygen -F $ 1 | grep -q "^ # hôte $ 1 trouvé:"; puis rsync ~ / .bashrc ~ / .bash_profile ~ / .bash_logout $ 1:.; Fi; ssh $ 1; }
Si vous souhaitez rendre cela plus robuste, vous pouvez vérifier l'existence d'un fichier d'environnement, d'un hachage ou d'un autre marqueur connu sur l'hôte distant.
la source
Je ne sais pas s'il y a un .bashrc par session.
Une autre solution serait d'écrire un petit script qui transfère toutes vos configurations préférées vers votre nouveau dossier personnel.
Peut-être juste créer un dossier avec toutes vos configurations avec des chemins et simplement les transférer avec scp
comme
puis un
Cela fait gagner du temps.
la source
Je ne pense pas que ce soit possible, étant donné que ssh n'a rien à voir avec le vôtre
.bashrc
. C'est le shell qui charge ce fichier, pas ssh.Quelques idées:
SendEnv
option (voir lassh_config
page de manuel pour plus d'informations). Si le serveur est correctement configuré (c.-AcceptEnv
à-d. Qu'il a la valeur adéquate dans sshd_config), vous pouvez utiliserSendEnv
pour copier vos variables d'environnement sur l'hôte distant.ProxyCommand
paramètre (voir lassh_config
page de manuel) pour envoyer vos.bashrc
fichiers ou d'autres avant de vous connecter à l'hôte distant. Cela nécessiterait cependant des tests. Soyez également prêt à ce que cela puisse interférer avec scp.la source
Je pense que https://github.com/fsquillace/pearl-ssh fait ce dont vous avez besoin.
Je l'ai écrit il y a longtemps avant la naissance de sshrc et il a plus d'avantages que sshrc:
Par exemple:
la source