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,必须按照以下步骤操作:
- 以 root 身份登录:
$: sudo su -
- 安装 dbus:
$: apt-get update && apt-get install -y dbus
- 设置主机名:
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:~#