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


19

Debian Jessie附带了systemd。设置主机名的建议是将hostnamectl用于systemd。但是,此命令在EC2上引导的Debian Jessie 映像上不起作用(甚至不显示当前主机名):

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中起作用。

感谢您提供帮助,以解决此问题。


Answers:


33

找到了问题。用于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

这工作了。


3
很好地掌握了dbus依赖性。仅供参考:我一直在学习如何配置systemd系统,并发现它会hostnamectl set-hostname myhostname自动更新/etc/hostname(静态主机名)的内容,因此不需要第一个echo命令。
安东尼·G-莫妮卡的正义

还警告有关现有的RAIN,是否也可以调整阵列?root @ debian:〜#rm / etc / ssh / ssh_host_ * root @ debian:〜#dpkg-reconfigure openssh-server也许也可以重新生成initrd
rzr 2015年

1
@donatello看起来timedatectl对dbus也有相同的依赖性...感谢分享您的解决方案!
Gergely Lukacsy

2

要更改EC2主机的主机名,您必须遵循以下步骤:

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

确保更改<HOSTNAME>要设置的主机名。


0

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

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:~#
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.