GNU/Linux >> Tutoriels Linux >  >> Linux

chargement dynamique des alias de shell locaux dans la session ssh

Vous pouvez copier temporairement votre .bashrc à votre machine distante avec un autre nom. Par exemple, en utilisant .bashrc_temp :

[email protected]$ scp .bashrc [email protected]:~/.bashrc_temp

Ensuite, vous pouvez vous connecter à la machine distante :

[email protected]$ ssh [email protected]

et source le fichier .bashrc_temp :

[email protected]$ source ~/.bashrc_temp

Vous pouvez maintenant utiliser votre .bashrc et vos fonctions. Lorsque vous avez terminé votre travail, vous pouvez supprimer le fichier ~/.bashrc_temp sur la machine distante et vous déconnecter.

La copie du fichier et la connexion à la machine distante peuvent être réalisées avec une fonction bash :

# copy the .bashrc to the remote machine 
# and log into the remote machine.
# parameter $1: [email protected]
function s() {
  scp ~/.bashrc $1:~/.bashrc_temp
  ssh $1
}

Mettre à jour :

Vous pouvez également envisager de copier le .bashrc à /tmp sur votre machine distante et source /tmp/.bashrc_temp .

Mise à jour 2 :

Vous pouvez vous connecter à la machine distante en utilisant ssh -t. Cela utilisera automatiquement votre temp .bashrc . Fonction mise à jour s() :

function s() {
  scp ~/.bashrc $1:/tmp/.bashrc_temp
  ssh -t $1 "bash --rcfile /tmp/.bashrc_temp ; rm /tmp/.bashrc_temp"
}

jens-na a fourni une excellente réponse. J'ai passé un peu de temps et retravaillé un peu pour travailler un tout petit peu mieux. De cette façon, vous pouvez transmettre n'importe quel paramètre à SSH, comme les numéros de port. La différence est qu'il utilise le ssh commande pour télécharger le .bashrc fichier, au lieu de scp , qui utilise des noms de paramètres de commande différents.

Vous remarquerez également qu'il télécharge un fichier différent, .bashrc_remote , afin que vous puissiez sélectionner exactement ce que vous souhaitez sourcer sur des serveurs distants, au lieu de tout

sshs() {
        ssh [email protected] "cat > /tmp/.bashrc_temp" < ~/.bashrc_remote
        ssh -t [email protected] "bash --rcfile /tmp/.bashrc_temp ; rm /tmp/.bashrc_temp"
}

Exécutez-le comme suit :

sshs [email protected]

Le nom 'sshs ' est pour "Source SSH". Utilisez ssh lorsque vous ne voulez pas sourcer, et utilisez sshs quand vous le faites.

https://gist.github.com/jonahbron/5549848


Je pense que sshrc est ce que vous recherchez :https://github.com/Russell91/sshrc

sshrc fonctionne exactement comme ssh, mais il source également ~/.sshrc après une connexion à distance.

$ echo "echo welcome" > ~/.sshrc
$ sshrc [email protected]
welcome

$ echo "alias ..='cd ..'" > ~/.sshrc
$ sshrc [email protected]
$ type ..
.. is aliased to `cd ..'

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 aucun impact sur les autres utilisateurs du serveur - même s'ils utilisent également sshrc. Pour une configuration plus avancée, continuez à lire.


Linux
  1. Trouver l'adresse IP du client dans une session SSH

  2. Comment envoyer des données au presse-papiers local à partir d'une session SSH distante

  3. Linux exécuter la commande à distance

  4. Maintenir la session SSH en vie

  5. SSH sans source .bashrc

Comment mettre fin à une connexion SSH qui ne répond pas sous Linux ?

Ssh – Restreindre un utilisateur Ssh/scp/sftp à un répertoire ?

Comportement inattendu d'un script shell ?

Ssh - Journalisation des tentatives d'accès Ssh ?

Processus dans une session dans un shell interactif Vs dans un script ?

Secure Shell :client ssh du navigateur Web Chrome