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

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

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

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

richzilla
источник
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

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

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
источник
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 и т. Д. В каждом случае найдите и измените имя хоста в их конфигурации и перезапустите сервис.

ImaginaryRobots
источник
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.
    альтернативный текст
karthick87
источник
5
Почему это получает отрицательные голоса? Должно быть лучше настроить что-то с помощью специального инструмента, чем копаться в командной строке и ломать вещи в процессе.
эндолит
38
Установка такого большого программного обеспечения просто для изменения имени хоста - это немного излишне
Nemo
9
Я согласен, что это излишне - в частности, потому что программное обеспечение не доступно в репозиториях, но должно быть установлено из PPA ...
Марсель Стимберг
@ karthick87, возможно, упомяните в своем ответе, что это большая часть программного обеспечения (с другими параметрами конфигурации)? - лично я согласен с endolith в том, что инструмент с одной простой точкой изменения лучше, чем множество операций командной строки (я использую Ubuntu Tweak, также доступный в настоящее время в PPA)
david.libremone
Я думаю, что вы можете сломать намного больше вещей (и легче), используя этот инструмент, чем просто заменить слово в паре файлов. Это выставило вам слишком много вещей.
герлос
9

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

dkuntz2
источник
Из любопытства, есть ли какая-то конкретная причина, по которой 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

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

Nemo
источник
7

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

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

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

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

hostnamectl set-hostname "new_name"
Терри Ван
источник
4

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

13east
источник
3

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

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

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

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

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

# you need restart to effect with...

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