如何设置 Debian Jessie 系统的主机名?

如何设置 Debian Jessie 系统的主机名?

Debian Jessie 自带systemd。建议使用 systemd 的 hostnamectl 来设置主机名。但是,此命令在 Debian Jessie 上不起作用(甚至无法显示当前主机名)在 EC2 上启动的镜像

sudo hostnamectl
sudo: unable to resolve host ip-172-30-0-17
Failed to create bus connection: No such file or directory

所以我尝试遵循 Debian 的建议这里

echo "myhostname" > /etc/hostname
echo "127.0.0.1 myhostname" >> /etc/hosts
/etc/init.d/hostname.sh start
/etc/init.d/networking force-reload

但是,注销并再次登录后,主机名没有改变。不过,重启后它会改变,但这不是我想要的。

此方法曾经在 Debian Wheezy 中起作用。

任何帮助解决此问题的方法都将受到赞赏。

答案1

发现问题了。Debian Jessie 的 EC2 上的基本 AMI 没有安装 dbus。hostnamectl 似乎需要 dbus。因此修复方法是:

apt-get update && apt-get install -y dbus

进而:

hostname=myname
echo "127.0.0.1      $hostname" >> /etc/hosts
hostnamectl set-hostname "$hostname"
echo "$hostname" > /etc/hostname # uneeded

这有效。

答案2

要更改 EC2 主机的 hostanme,必须按照以下步骤操作:

  1. 以 root 身份登录:$: sudo su -
  2. 安装 dbus:$: apt-get update && apt-get install -y dbus
  3. 设置主机名:hostnamectl set-hostname <HOSTNAME>

确保<HOSTNAME>使用您想要设置的主机名进行更改。

答案3

我们实际上不需要安装任何软件包,我们只需要根据您的发行版从下面的列表中编辑文件。

root@ServerOne:~# ls -l /etc/cloud/templates/
total 32
-rw-r--r-- 1 root root 1487 Nov 18  2015 chef_client.rb.tmpl
-rw-r--r-- 1 root root  941 May  3 23:37 hosts.debian.tmpl
-rw-r--r-- 1 root root  914 Nov 18  2015 hosts.freebsd.tmpl
-rw-r--r-- 1 root root  912 Nov 18  2015 hosts.redhat.tmpl
-rw-r--r-- 1 root root  866 Nov 18  2015 hosts.suse.tmpl
-rw-r--r-- 1 root root  812 Nov 18  2015 resolv.conf.tmpl
-rw-r--r-- 1 root root 1506 Nov 18  2015 sources.list.debian.tmpl
-rw-r--r-- 1 root root 2841 Nov 18  2015 sources.list.ubuntu.tmpl
root@ServerOne:~#

编辑如下行,(注释掉的是原始行),将 {{fqdn}} 和 {{hostname}} 替换如下。

#127.0.1.1 {{fqdn}} {{hostname}}
127.0.1.1 ServerOne.opsplus.io ServerOne

或者,将“manage_etc_hosts:”设置为 false,如下所示,您可以自由修改 /etc/hosts 文件,因为它将停止覆盖 hosts 文件。

root@ServerOne:~# cat /etc/cloud/cloud.cfg.d/01_debian_cloud.cfg
apt_preserve_sources_list: true
manage_etc_hosts: true
root@ServerOne:~#

相关内容