29

Is it possible to automatically change the color of the terminal based on which server I am connected to through SSH?

For instance, when I fire up the terminal it has the standard colors defined under my profile. Then I ssh to ssh.example.com and the color changes to black & green instead. Then I exit the session and the color returns to the standard color theme.

I know that you could do this manually. But I'm looking for an automated way.

Radu Rădeanu
  • 166,822
  • 48
  • 327
  • 400
karlingen
  • 487
  • 1
  • 4
  • 13

2 Answers2

24

Yes, you can by changing the PS1 value in .bashrc file on every hostname where you are connecting with ssh.

See this answer to view how to costumize as you like the bash changing the PS1 value.

ssh colored

On my machine (radu@Radu) I have in .bashrc:

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;35m\]\u@\h\[\033[00m\]:\[\033[01;34m\] \w\[\033[01;37m\] > '

On the hosted machine (radu@ubuntu) I have:

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;35;40m\]\u@ubuntu\[\033[00;40m\]:\[\033[01;34;40m\] \w\[\033[01;32;40m\] > '
Radu Rădeanu
  • 166,822
  • 48
  • 327
  • 400
  • 8
    How exactly did u manage to change the background color? – chrisg86 Mar 11 '15 at 13:31
  • The '3x' codes change the foreground color. the '4x' codes change the background color. Notice that the hosted machine has '4x' codes, but the local does not. http://www.arwin.net/tech/bash.php – FlipMcF Sep 08 '16 at 16:35
  • Is there a way to get the same result without changing anything on the remote box? We use VMs, and changes wouldn't be persisted for long... – Christian Jul 31 '17 at 11:08
0

If you are using xterm, this works great.

https://github.com/fboender/sshbg

Ben Mathews
  • 103
  • 3