Как установить имя хоста для системы Debian Jessie?

19

Debian Jessie поставляется с systemd. Для установки имени хоста рекомендуется использовать hostnamectl для systemd. Однако эта команда не работает (даже для отображения текущего имени хоста) на образе 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.

Любая помощь в получении этого права приветствуется.

Донателло
источник

Ответы:

33

Нашел проблему. Базовый AMI на EC2 для Debian Jessie, не имеет установленного 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команде.
Энтони Дж. - справедливость для Моники
Также предупреждение о существующем RAIN, можно ли настраивать массивы тоже? root @ debian: ~ # rm / etc / ssh / ssh_host_ * root @ debian: ~ # dpkg-перенастроить openssh-сервер И, возможно, также
восстановить regrd
1
@donatello Похоже, у timedatectlвас такая же зависимость от dbus ... спасибо, что поделились своим решением!
Гергели Лукачи
2

Чтобы изменить hostanme вашего хоста EC2, вы должны выполнить следующие шаги:

  1. Войдите в систему как root:$: sudo su -
  2. Установите dbus:$: apt-get update && apt-get install -y dbus
  3. Настройка имени хоста: hostnamectl set-hostname <HOSTNAME>

Убедитесь, что вы изменили <HOSTNAME>имя хоста, которое хотите установить.

lktslionel
источник
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:~#
akjprajapati
источник