Как мне изменить имя компьютера?


327

Когда я подключаюсь к своему серверу (Ubuntu Server 10.10), я получаю это:

name@server-name.belkin ~>

Как я могу удалить ".belkin"?


1
Попробуйте отредактировать / etc / hosts. gksudo gedit / etc / hosts и замените server-name.belkin на любое имя, которое вы пожелаете.
LFC_fan

2
Вы хотите изменить фактическое имя сервера или только то, как оно отображается в приглашении?
Дэйв Дженнингс

2
Голосование возобновить, потому что это надмножество (позволяет перезапустить).
Сиро Сантилли 新疆 17: 中 at 法轮功 六四 事件

как этот вопрос закрывается в пользу вопроса, заданного через год ?
садок

@ Warren текущий консенсус заключается в том, чтобы закрыть по «качеству»: meta.stackexchange.com/questions/147643/… Так как «качество» не поддается измерению, я просто иду вверх по голосам. ;-) Скорее всего, все сводится к тому, какой вопрос попал в список лучших ключевых слов Google для новичка в заголовке.
Сиро Сантилли 新疆 '中心 法轮功 六四 事件

Ответы:


420

Вам нужно отредактировать имя компьютера в двух файлах:

/etc/hostname 

а также

/etc/hosts

Оба будут нуждаться в административном доступе, поэтому запустите

gksu gedit /path/to/file

Замените все экземпляры существующего имени компьютера новым. Когда закончите

sudo service hostname start

Имя также будет изменено, если вы перезагрузите компьютер.

Смотрите также:


43
После этого как раз sudo service hostname restartи имя хоста было изменено без перезагрузки.
Энтони О.

6
В Ubuntu 14.04 нет службы «имя хоста». Что я могу сделать там, чтобы избежать перезагрузки.
Арпад Хорват

8
sudo service hostname restartне работает по умолчанию при установке сервера ubuntu 14.04 на AWS. Я должен был сделать полный перезапуск сервера
gerrytan

9
14 апреля я просто побежал sudo hostname, и это помогло. Я не заметил никаких немедленных изменений, но когда я открыл новый терминал, я увидел, что мое имя хоста действительно изменилось.
TSJNachos117

8
sudo hostname new-host-nameработал для меня на Ubuntu 13.10
Lekhnath

153

hostnamectl set-hostname на 13.10+ рабочий стол

Это лучший способ, если у вас systemd (начиная с 13.10), и если cloud-init не активен (см. Ниже):

hostnamectl set-hostname 'new-hostname'

Это:

  • не требует перезагрузки
  • сохраняется после перезагрузки

Более подробная информация на: https://askubuntu.com/a/516898/52975

18.04 и далее: cloud-init

18.04 Введен cloud-init, который может управлять настройкой имени хоста, поэтому hostnamectlизменения не будут зависать после перезагрузки, если установлен cloud-init. TODO: как проверить, установлен ли он, установлен ли он по умолчанию на образе рабочего стола или только на сервере?

Если вы хотите, чтобы hostnamectlизменения оставались после перезагрузки, вам нужно отредактировать конфигурационные файлы cloud-init, отключить модуль установки / обновления имени хоста cloud-init :

sudo sed -i 's/preserve_hostname: false/preserve_hostname: true/' /etc/cloud/cloud.cfg

или полностью отключить cloud-init:

sudo touch /etc/cloud/cloud-init.disabled

Смотрите также: Как мне изменить имя хоста без перезапуска?


3
отлично работает в Ubuntu 15.10
AB

4
Не меняет / etc / hosts в 14.04
Autodidact

7
отлично работает в Ubuntu 16.04 ... большое спасибо
Hirak

2
Подтверждено, что правильно работает в 16.10 также
fuzzygroup

2
Мне пришлось добавить имя нового хоста в / etc / hosts, иначе использование sudo может вызвать ошибку «sudo: не
удается

70

Это довольно просто:

  1. Редактировать /etc/hostname, изменить имя, сохранить файл.

  2. Вы также должны сделать те же изменения в /etc/hostsфайле

  3. Бегать sudo service hostname start

Пока у вас нет настроек приложения в зависимости от «старого» имени хоста, вы должны быть в порядке ;-)


31
ВНИМАНИЕ: Если вы сделаете это без изменения / etc / hosts, соответственно, вы не сможете использовать sudo, потому что ваше имя хоста не будет найдено
João Pinto

Вы правы в отношении редактирования / etc / hosts, я забыл об этом (просто добавил его в свой ответ), хотя sudo, кажется, работает нормально для меня, не меняя его (я перезапустил машину, и она все еще работает)
Павлос Г.

1
Все в порядке, вы можете сделать это, как hostnameсейчас сервис управляется из upstart. Это будет делать то же самое, перезапустите службу.
Павлос Г.

2
Примечание: это не будет работать для Ubuntu 14.x, так как hostnameего больше нетinit.d
Rápli András

2
Предупреждение: не будет работать с Ubuntu 18+, который по умолчанию использует cloud-init, который контролирует имя хоста при загрузке.
nslntmnx

24

Это безопасно, вам просто нужно убедиться, что вы отредактировали как файл конфигурации имени хоста системы (/ etc / hostname), так и файл разрешения имени хоста (/ etc / hosts). Из терминала выполните следующее:

sudo -s
editor /etc/hostname
editor /etc/hosts
shutdown -ry now

2
Вы можете избежать отключения с помощью sudo service hostname restart.
Wtower

3
@Wtower Не работает с 14.04. :(
ankush981

Предупреждение: не будет работать с Ubuntu 18+, который по умолчанию использует cloud-init, который контролирует имя хоста при загрузке.
nslntmnx

18

В дополнение к редактированию / etc / hosts и / etc / hostname, различные службы могут также иметь проблемы с изменением. Mysql и postfix по умолчанию устанавливаются в Ubuntu. Сломанный постфикс не повлияет на большинство пользователей Ubuntu, так как это фоновый почтовый сервер, который используется не очень часто.

Postfix:

sudo editor /etc/postfix/main.cf
sudo service postfix restart

Конфигурация по умолчанию для mysql не использует имя хоста, поэтому она будет работать как есть. Если вы настроили его, отредактируйте файлы в / etc / mysql / и перезапустите сервис.

Вы также можете отредактировать / etc / motd (сообщение дня), которое отображается на виртуальных терминалах и удаленных входах. Это никому не повредит.

Другие сервисы, которые вы, возможно, установили и нуждались в исправлении, это apache, bind9 и т. Д. В каждом случае найдите и измените имя хоста в их конфигурации и перезапустите сервис.


14

Имя хоста однозначно идентифицирует ваш компьютер в локальной сети (и, возможно, также в Интернете), поэтому не стоит менять его, если вы не знаете, что делаете.

Но вы можете изменить приглашение оболочки, чтобы оно не отображало .belkin(часть имени домена):

export PS1='\u@\h \w> '

См. Страницу руководства bash и, в частности, раздел о запросах для получения дополнительной информации.


14

Еще один лучший и безопасный способ переименовать имя хоста

Установить ailurus

  • Добавьте PPA и обновите свой репозиторий

    sudo add-apt-repository ppa:ailurus && sudo apt-get update

  • Установить ailurus

    sudo apt-get install ailurus

  • После установки его можно найти в разделе Приложения >> Системные инструменты >> Ailurus.
    альтернативный текст

5
Почему это получает отрицательные голоса? Должно быть лучше настроить что-то с помощью специального инструмента, чем копаться в командной строке и ломать вещи в процессе.
эндолит

38
Установка такого большого программного обеспечения просто для изменения имени хоста - это немного излишне
Nemo

9
Я согласен, что это излишне - в частности, потому что программное обеспечение не доступно в репозиториях, но должно быть установлено из PPA ...
Марсель Стимберг

@ karthick87, возможно, упомяните в своем ответе, что это большая часть программного обеспечения (с другими параметрами конфигурации)? - лично я согласен с endolith в том, что инструмент с одной простой точкой изменения лучше, чем множество операций командной строки (я использую Ubuntu Tweak, также доступный в настоящее время в PPA)
david.libremone

Я думаю, что вы можете сломать намного больше вещей (и легче), используя этот инструмент, чем просто заменить слово в паре файлов. Это выставило вам слишком много вещей.
герлос

9

Если вы не хотите играть с текстовым редактором, Ubuntu Tweak (возьмите дебат со своего веб-сайта) - это одна из тех мелочей, с которыми вы можете поиграть (наряду с множеством других маленьких твиков, которые вы, возможно, захотите сделать, но не очень хочется поиграться с терминалом и самими файлами).


Из любопытства, есть ли какая-то конкретная причина, по которой Ubuntu Tweak отсутствует в репозиториях программного обеспечения?
Оливье Лалонд

Они никогда не удосужились добавить его / не были приняты. Вы можете добавить их репо в свой список сразу после запуска настройки или через список терминалов / репо.
dkuntz2

Вы также можете добавить Ubuntu Tweak в качестве PPA, sudo add-apt-repository ppa:tualatrix/ppaа sudo apt-get updateзатем sudo apt-get install ubuntu-tweak
david.libremone

1
обратите внимание, что с ~ 13.04 в Ubuntu Tweak больше нет этой опции
david.libremone

9

Используйте hostnameкоманду для изменения вашего имени хоста

sudo hostname newname

Тем не менее, это не редактирует ваш файл hosts, что вы должны сделать, чтобы убедиться, что ваш компьютер распознает себя

gksudo /etc/hosts

И добавьте новую запись для вашего имени хоста, указывающую на 127.0.0.1

127.0.0.1 oldname newname

Вы также можете удалить старую запись, но я предпочитаю оставить ее там.


7

Следующая команда меняет имя хоста на лету, но чтобы сделать его постоянным, вы должны отредактировать /etc/hostname:

echo 'new_hostname' > /proc/sys/kernel/hostname

Откройте новый сеанс терминала, и вы сразу увидите его.

С systemdна месте, правильный способ сделать это

hostnamectl set-hostname "new_name"

4

Если вы хотите процесс с графическим интерфейсом, установите Ubuntu-Tweak. Среди других применений этого приложения - возможность изменить имя компьютера через вкладку «Сведения о компьютере» -> «Имя хоста».


3

SystemSettings -> Details -> Overwiev (по умолчанию открыт в U16.04) - Имя устройства.

но дополнительно вы должны изменить имя в / etc / hosts. Ubuntu BUG ()?


Я думаю, что это довольно хороший способ изменить имя хоста.
Jawtheshark

2

Откройте терминал и

sudo sed -i '1s/.*/desired-name/g' /etc/hostname

# you need restart to effect with...

sudo shutdown -r 0

Предупреждение: не будет работать с Ubuntu 18+, который по умолчанию использует cloud-init, который контролирует имя хоста при загрузке.
nslntmnx
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.