Comment obtenir un terminal de couleur sur ssh?


53

Lorsque je me connecte via ssh à des hôtes distants, tout n’est qu’une seule police / couleur. Je voudrais avoir des couleurs comme je le fais localement, par exemple vert pour les exécutables et bleu pour les liens symboliques, etc.


Est-ce un serveur Ubuntu auquel vous vous connectez?
Stefano Palazzo

@ Stefano-Palazzo: à Debian.
Dima

Réponses:


35

Parce que c'était xterm sur le serveur, j'ai pensé que quelque chose n'allait pas .bashrc

Et en effet! ls --color=autone fonctionne que lorsque vous êtes connecté à TTY. Changer tout simplement --colordans .bashrcl'hôte distant et tout est en jolies couleurs maintenant.


42
Cela aiderait beaucoup cette réponse si vous disiez vous mettiez --color = auto. .bashrc sur le serveur? Quelles commandes?
vendredi

8
Puisqu'il s'agit d'une vieille question qui reste pertinente, je voulais juste ajouter que sur les systèmes Ubuntu, le fichier .bashrc par défaut comporte une instruction case qui définit les termes autorisés à utiliser des couleurs. Si vous trouvez la "casse" $ TERM $ "dans" ligne dans votre fichier .bashrc, ajoutez "xterm) color_prompt = yes ;;" permettra également d'activer la couleur. Vous pouvez également supprimer la mise en commentaire de la ligne "force_color_prompt = yes" pour l'activer globalement à tout moment.
Mike E

2
c'est le commentaire de Mike E qui a résolu le problème pour moi,
Frank Schrijver le

3
Je suis confus. Que signifie "tout changer en simplement - couleur"? Puis-je voir un exemple?
still_dreaming_1

1
Est-ce que vous parlez de l'hôte local, de l'hôte distant ou des deux?
Adam

19

Cela a fonctionné pour moi:

ssh -t my_host my_command

-tétait la clé. A expliqué .


Cela fonctionne parfaitement et est très pratique pour des tâches uniques. Merci!
XtraSimplicity

J'ai perdu la couleur quand j'ai su -commandé dans l'invite de connexion ssh
dubis

10

On dirait que les couleurs ont déjà été définies ~/.bashrcpour moi et le problème est que ssh n'utilise pas le fichier bashrc. Vous pouvez utiliser bashrc dans votre session ssh en ajoutant ce qui suit à ~/.bash_profile:

if [ -f ~/.bashrc ]; then
      . ~/.bashrc
fi

1
Cela a fonctionné pour moi et était un moyen simple et efficace de le faire!
Flith

7

Quel est le contenu de votre variable env XTERM sur le serveur lorsque vous vous y connectez?

~ > export | grep -i term
TERM=xterm

$ export | grep -i terme déclare -x TERM = "xterm"
Dima

4

Dans mon cas, la partie manquante devait être de couleur ls, grep, etc., que l'on peut ajouter en ajoutant des alias au fichier .bashrc:

alias ls='ls --color=auto'
alias grep='grep --color=auto'

etc.


2

J'ai essayé de modifier les ~./bashrcparamètres (sur le serveur local et distant), mais cela ne semblait pas fonctionner.

Ensuite, j'ai remarqué que ~/.bashrcle serveur distant n'est même pas exécuté si je me connecte via ssh. J'ai donc fait ~/.bashrcdu serveur distant pour exécuter par puttinng if [ -f ~/.bashrc ]; then . ~/.bashrc fidans le serveur distant ~/.bash_profile. (basé sur https://stackoverflow.com/questions/820517/bashrc-at-ssh-login ).

Cette solution n’a donc nécessité aucune modification ~/bashrcdirecte des fichiers, mais un ~/bash_profilefichier de serveur distant pour que ce ~/bashrcfichier soit exécuté.


Ubuntu utilise .profileet non .bash_profilepar défaut, et la valeur par défaut .profileest source .bashrc.
Muru

C'est correct. Mais est- .profileil exécuté par défaut lors de la connexion via ssh?
chris544

Oui. Sous réserve que vous ne l'ayez pas remplacé .bash_profile, bash s'exécute .profileen tant que shell de connexion. Et SSH commence bash en tant que shell de connexion.
Muru

C'est correct ce ~/.profilen'est pas lu s'il ~/.bash_profileexiste. Mais n'existe-t-il pas ~/.bash_profilepar défaut sur Ubuntu?
chris544

Voir mon premier commentaire à nouveau. Non, ça ne va pas. Ubuntu utilise .profile.
Muru

2

Etant donné que les couleurs fonctionnaient bien tout en étant connectées directement, je me suis contenté de ne pas commenter la ligne force_color_prompt=yesdu fichier ~/.bashrc, ce qui m'a également donné les couleurs sur ssh:

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=yes

(Ubuntu 18.04 LTS)


Upvote, cela semble être la solution la plus simple.
snwflk

1

Dans ma situation, j'ai récemment installé chef-localet il m'a demandé d'ajouter une ligne à .bash_profile. Lorsque je me connecte, .bashrcne charge plus jamais, car il a vu .bash_profile.

Ce que j'ai fait a été d'ajouter une ligne dans .bash_profile:

source .bashrc
export PATH="/opt/chefdk/embedded/bin:$PATH"

Je me suis déconnecté puis rentré et j'ai tout de suite eu mon terminal coloré.


0

Il y a un commentaire de "Mike E" ci-dessus qui contenait la réponse pour moi, mais ce n'est pas seulement difficile à lire, c'est assez difficile de comprendre ce qu'il veut dire si vous n'en utilisez pas .bashrcbeaucoup - et je ne le fais pas t.

Après avoir vissé un peu, j'ai obtenu les résultats souhaités en modifiant les lignes suivantes ~/.bashrcsur la machine à laquelle je me connectais avec ssh:

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color|*-256color) color_prompt=yes;;
esac

à:

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color|*-256color) color_prompt=yes;;
    xterm) color_prompt=yes;;
esac

Je pense que j'aurais pu simplement ajouter "| xterm" après "couleur" dans la première ligne, ou creuser et comprendre pourquoi ssh utilisait "xterm" au lieu de "xterm-color" et changer cela, mais cela fonctionne et je ont d'autres choses à faire maintenant.


0

Je perdais ma couleur lors de la connexion via un proxy car TERM=dumbje l'ai donc corrigée:

ssh myproxy "ssh pi@localhost -p 5000 -tt 'TERM=xterm bash'"

1
Vous devez également allouer un terminal lors de la première connexion, si vous voulez le faire.
Muru
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.