Debian Linux: Change Hostname / Computer Name Permanently

last updated in Categories , ,

How do I change the hostname of a Debian Linux system permanently using the command line tools?

You can use the hostname command to display or set the Debian Linux system’s host name. In this tutorial, you will learn how to change your hostname on Debian Linux.

How To change your hostname on Debian server

Steps to change your hostname on Debian Linux:

  1. Login to your server: ssh user@server-name
  2. Become a root user: sudo -s or su -
  3. Edit the file /etc/hostname: vi /etc/hostname
  4. Edit the file /etc/hosts: vi /etc/hosts
  5. Run command: /etc/init.d/hostname.sh start

Let us see steps in details to change a system’s hostname i.e. rename a computer/server name when using a Debian Linux based system.

Find your current computer name

Type the following command:
$ hostname
Sample outputs:

server1

Debian change hostname

Let us change your computer name on Debian. For example, change hostname to server2, enter:
$ hostname server2
$ hostname

Sample outputs:

server2

How To Change Your Hostname on Debian

How Do I Change Hostname Permanently?

Edit the file /etc/hostname, enter:
# vi /etc/hostname
Delete the existing name and replace it with a new name:

server2

Save and close the file. You may also need to edit the /etc/hosts file, enter:
# vi /etc/hosts
Find all references to server1 and replace with server2:

127.0.0.1	localhost
127.0.1.1	server2

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Save and close the file. Please note that the host name is usually set once at system startup in /etc/init.d/hostname.sh (normally by reading the contents of a file which contains the host name, e.g. /etc/hostname). Just type the following command to apply new changes without rebooting the server:
# /etc/init.d/hostname.sh start
OR
# invoke-rc.d hostname.sh start

A note about setting machine name when using systemd

With systemd it is possible to use a single command as follows:
# hostnamectl set-hostname machine-name-here
# hostnamectl set-hostname server2

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.

5 comment

  1. I kept having problems after the otherwise excellent instructions: my hostname did not change (It insisted on naming my machine “(none)”)
    Turned out the name was not acceptable. I wanted to use RB_1 (being the first rasperry in my house), and apparently I can’t use an underscore. Named it just RB and then followed your instructions.

    Have a question? Post it on our forum!