Linux hostname

From Ever changing code

Debian based

In CentOS/Ubuntu and other distros you can control hostname using:

sudo hostnamectl set-hostname <new hostname>

In CentOS 7 it updates also /etc/hostname file that stores centrally the system's hostname

RPM based

In Redhat (RPM) based distros change the hostname permanently by editing:

$ vi /etc/sysconfig/network
# requires a reboot for eg. Amazon Linux

RHEL 7 or CentOS 7

# 1
sudo hostnamectl set-hostname -–static <new-name> # this command does not update /etc/hosts file 
# 2 on your RHEL 7 or CentOS 7 but not required for RHEL 7.4 and above
sudo vi /etc/cloud/cloud.cfg 
# 3 Add the following string to the bottom of the /etc/cloud/cloud.cfg file to be sure that the new 
sudo vi /etc/cloud/cloud.cfg
preserve_hostname: true
# reboot
hostname #verify that the hostname change persisted

Amazon Linux AMI

# change to public DNS name
sudo vi /etc/sysconfig/network
# or without public dns name
# reboot

Amazon Linux 2

Change the system hostname to a public DNS name

sudo hostnamectl set-hostname
# reboot


In other distros it should be enough to change:

$ vi /etc/hosts ''newHostName''   localhost localhost.localdomain
::1         localhost localhost.localdomain

Ubuntu >14.04

$ vi /etc/hosts       localhost       ''newHostName'' ''newHostName''.home

Temp hostname

Temporarily changing hostname can be achieved by the command below then logout and login again to see the effect in bash.

$ hostname newHostName

Restart networking

If you changed /etc/hosts or /etc/sysconfig/network file you want to restart networking to ensure that changes will be persistent on reboot:

$ /etc/init.d/network restart        # Redhat based
$ sudo service networking restart    # Debian/Ubuntu distros