Aviso: não funcionará com o Ubuntu 18+, que está executando o cloud-init por padrão, que controla o nome do host na inicialização.
Nslntmnx 01/09/19
@nslntmnx, obrigado!
MiB
Respostas:
642
É fácil. Basta clicar no ícone de engrenagem (localizado no canto superior direito da tela), abrir a tela "Sobre este computador" (localizada no ícone de engrenagem) e editar "Nome do dispositivo".
Eu sei. é por isso que você deve usar o comando 'hostname'. Eu só queria esclarecer que o comando 'hostname' muda apenas o nome do host até você reiniciar / travar / etc. Depois, ele lerá o nome do arquivo novamente.
jasperado
5
Depende. Se você digitou o comando, não precisa reiniciar. O nome do host já foi alterado. Mas apenas até a sua próxima reinicialização.
jasperado
19
Note que você também tem que mudar a /etc/hosts(ver outras respostas)
JB.
9
Em suma, embora hostnamefaça com que o novo nome entre em vigor imediatamente, ele não é "permanente", a menos que você também mude /etc/hostnamee /etc/hosts, como esses são os arquivos que serão lidos após uma reinicialização ou uma falha, o que, é claro, você pode não ser esperando com antecedência.
precisa
280
Ubuntu 13.04 em diante
O hostnamectlcomando faz parte da instalação padrão nas edições Desktop e Server.
Combina a configuração do nome do host por meio do hostnamecomando e edição /etc/hostname. Além de definir o nome do host estático, ele pode definir o nome do host "bonito", que não é usado no Ubuntu. Infelizmente, a edição /etc/hostsainda precisa ser feita separadamente.
hostnamectl set-hostname new-hostname
Este comando faz parte do systemd-servicespacote (que, a partir do Ubuntu 14.04, também inclui os comandos timedatectle localectl). À medida que o Ubuntu migra systemd, essa ferramenta é o futuro.
Observe que isso não está disponível em todos os lugares. Acabei de olhar na minha instalação do Ubuntu 14.04 LTS ARM-7 e hostnamectlnão existe. Acho que alguns sabores do Ubuntu ainda não estão usando o systemd.
Stéphane
1
@ Stéphane os comandos fazem parte da suíte systemd, mas estão disponíveis independentemente. Nesse caso, 13.04-14.10 não usa systemd como init, pelo comando está disponível.
muru 6/07/2015
1
@ H2ONaCl a variável shell está definida na inicialização, basta abrir outro shell e a variável hostname deve estar correta. Quanto ao sudo, o erro sobre a resolução do nome do host nunca me impediu de fazer nada.
muru
1
@ H2ONaCl ah, mas a variável HOSTNAME não é padrão - o traço IIRC e o ksh não o possuem, o zsh usa o HOST, então, no que diz respeito às variáveis do shell, é o fundo da pilha.
muru 31/01
3
Ainda funciona no Ubuntu 18.04 LTS.
LucaM 15/06
63
Sem reiniciar
Alterando o nome do host ou o nome do computador no ubuntu sem reiniciar
Edite / etc / hostname e mude para o novo valor,
nano /etc/hostname
Edite / etc / hosts e altere a linha 127.0.1.1 antiga para seu novo nome de host
127.0.0.1 localhost
127.0.1.1 ubuntu.local ubuntu # change to your new hostname/fqdn
Nota : eu li em um fórum> Editar / etc / hosts e alterei a antiga linha 127.0.1.1 para o seu novo nome de host (se você não fizer isso, não poderá mais usar o sudo. Se você já o fez , pressione ESC no menu grub, escolha recuperação e edite seu arquivo host para as configurações corretas)
Agora, após uma reinicialização, seu nome de host será o novo que você escolheu
Sem reinicialização
Para alterar sem uma reinicialização , você pode apenas usar hostname.sh depois de editar / etc / hostname. Você deve manter os dois nomes de host em / etc / hosts (127.0.0.1 newhost oldhost) até executar o comando abaixo:
sudo service hostname start
Nota : Comando acima para ativar a alteração. O nome do host salvo neste arquivo (/ etc / hostname) será preservado na reinicialização do sistema (e será definido usando o mesmo serviço).
No Ubuntu 12.10, a última parte não funciona com a seguinte mensagem de erro sudo: unable to resolve host old-hostname. Para essa parte, a solução @jesperado funciona bem.
Frédéric Grosshans
3
Se você não atualizar /etc/hosts, as coisas do mant começam a falhar no 12.04.2 LTS, incluindo o wcomando, Apache /sbin/reboote muito mais. Certifique-se de atualizar/etc/hosts
Josh
Você se referir tanto 127.0.0.1para localhoste 127.0.1.1para um nome de host personalizado. Direito? Então, no final da sua resposta, para uma ação sem rebot , você faz referência /etc/hostse 127.0.0.1 newhost oldhost. Então, não há necessidade de um 127.0.1.1endereço?
Nikos Alexandris
1
não funcionou para mim. eu tive que usar sudo nano /etc/hostspara que a mudança tivesse efeito; sem sudo, apenas nano /etc/hostsnão salvar a alteração
conman253
2
Qual é a diferença entre reiniciar e reiniciar?
tempestade
43
O nome padrão foi definido quando você estava instalando o Ubuntu. Você pode alterá-lo facilmente para o que quiser no Desktop e no servidor editando os arquivos de hosts e nomes de host. Abaixo está como:
Pressione CtrlAlttno teclado para abrir o terminal. Quando abrir, execute o comando abaixo:sudo hostname NEW_NAME_HERE
Isso mudará o nome do host até a próxima reinicialização. A alteração não será visível imediatamente no seu terminal atual. Inicie um novo terminal para ver o novo nome do host.
Para alterar o nome permanentemente, execute o comando para editar os arquivos do host:
sudo -H gedit /etc/hostname e sudo -H gedit /etc/hosts
Para o servidor Ubuntu sem uma GUI, execute sudo vi /etc/hostnamee sudo vi /etc/hostse editá-los um por um. Nos dois arquivos, altere o nome para o que você deseja e salve-o.
Por fim, reinicie o computador para aplicar as alterações.
Aqui está um script que altera o nome do host da maneira prescrita. Ele garante que não apenas sudomas também os aplicativos X11 continuem funcionando sem a necessidade de reinicialização.
Uso: sudo ./change_hostname.sh new-hostname
#!/usr/bin/env bash
NEW_HOSTNAME=$1
echo $NEW_HOSTNAME >/proc/sys/kernel/hostname
sed -i 's/127.0.1.1.*/127.0.1.1\t'"$NEW_HOSTNAME"'/g'/etc/hosts
echo $NEW_HOSTNAME >/etc/hostname
service hostname start
su $SUDO_USER -c "xauth add $(xauth list | sed 's/^.*\//'"$NEW_HOSTNAME"'\//g' | awk 'NR==1 {sub($1,"\"&\""); print}')"
O que a última linha do script su $SUDO_USER -c "xauth add $(xauth list | sed 's/^.*\//'"$NEW_HOSTNAME"'\//g' | awk 'NR==1 {sub($1,"\"&\""); print}')"faz? Apenas curioso.
Fr0zenFyr
4
@ Fr0zenFyr: pega um token de autenticação X11 válido ( xauth list) e substitui o nome do host antigo pelo novo nome do host ( sed). Em seguida, awkcoloca aspas no primeiro argumento xauth addporque xautho formato de entrada e saída não é simétrico.
Lucas
Obrigada pelo esclarecimento. Eu sempre reiniciei para que as alterações entrassem em vigor. +1
Fr0zenFyr
@trakz: Na verdade, 127.abc, qualquer que seja o número, é todo localhost conforme a IETF RFC. (a maioria das pessoas simplesmente não sabem disso, mas como a maioria não, editar aprovado)
Com 16.04, sysctl sudo: unable to resolve host oldname, sysctl: setting key "kernel.hostname": Read-only file system. Talvez porque seja um CT dentro do Proxmox.
Pablo A
14
Persistência de nome de host na nuvem-init (Ubuntu 18+)
Embora as abordagens acima ( hostnamectl, etc/hostnameetc) funcionem para a mudança imediata do nome do host, com o advento do cloud-init - que pode controlar a configuração do nome do host - entre muitas outras coisas. Portanto, não permanecerá após uma reinicialização se o cloud-init estiver instalado. Se você deseja que a alteração permaneça após uma reinicialização, será necessário editar os arquivos de configuração do cloud-init , desabilite o módulo set / update do nome do host do cloud-init :
sudo sed 's/preserve_hostname: false/preserve_hostname: true/' /etc/cloud/cloud.cfg
Voto por favor esta resposta. Isso funcionou muito bem para mim. Outras respostas não funcionam com a adoção do cloud-init.
Nslntmnx 01/09/19
@nslntmnx ele vem instalado por padrão na área de trabalho 18.04, apenas servidor? A área de trabalho não possui /etc/cloud/cloud.cfg. Qual é o nome do pacote? Apenas cloud-init?
Ciro Santilli escreveu:
1
Além disso, existe alguma maneira de alterar o nome do host com o cloud-init em vez de apenas desativar sua substituição?
Ciro Santilli escreveu:
1
Sim, você pode alterar muitas configurações usando o cloud-init - veja o link da documentação na minha resposta - aqui está um link para definir o nome do host: cloudinit.readthedocs.io/en/latest/topics/…
Pierz
7
Para obter seu nome de host atual:
cat /etc/hostname
Isso pode ser alterado em qualquer editor de texto. Você também precisaria atualizar a entrada diferente de localhost contra 127.0.0.1 em / etc / hosts.
Aviso: não funcionará com o Ubuntu 18+, que está executando o cloud-init por padrão, que controla o nome do host na inicialização.
Nslntmnx 01/09/19
@nslntmnx você tem certeza disso? Eu vejo no cloud-config.txt # if you do nothing you'll end up with: # * /etc/hostname (and 'hostname') managed via: 'preserve_hostame: false' # if you do not change /etc/hostname, it will be updated with the cloud # provided hostname on each boot. If you make a change, then manual # maintenance takes over, and cloud-init will not modify it.que atualmente não tenho o Ubuntu 18, então não posso testá-lo até o fim de semana.
George
4
Ubuntu 16.04
Isso é sem reinicialização e sem qualquer uso do terminal.
Vá para Configurações do sistema -> Detalhes .
Aí está. Ao lado do nome do dispositivo , há uma caixa de texto.
Edite a caixa de texto e feche a janela.
Terminal aberto. Veja por si mesmos.
(Para versões mais antigas, a caixa de texto não é editável.)
A resposta clássica à pergunta do pôster original é que, uma vez editado /etc/hostname, você o aplica sem reiniciar executando hostname (1) com a opção -F( --file) como root:
sudo hostname -F /etc/hostname
O nome do host (5) que lida com /etc/hostnamee o programa mencionado é o mesmo no Debian e seus derivados há mais de vinte anos, e o pacote que o fornece foi marcado como essencial e necessário , e no IIRC os scripts init literalmente usaram a mesma coisa para décadas ( /etc/init/hostname.confainda o contém), então devo dizer que estou realmente intrigado com o fato de ninguém ter mencionado isso já :)
Aviso: não funcionará com o Ubuntu 18+, que está executando o cloud-init por padrão, que controla o nome do host na inicialização.
Nslntmnx 01/09/19
@nslntmnx erm, o que? Que nova dependência o Ubuntu 18 introduziu para puxar o cloud-init por padrão? Você pode estar pensando em algumas imagens personalizadas para a nuvem; nesse caso, não deve ser surpresa que elas executem ferramentas personalizadas de provisionamento em nuvem.
Respostas:
É fácil. Basta clicar no ícone de engrenagem (localizado no canto superior direito da tela), abrir a tela "Sobre este computador" (localizada no ícone de engrenagem) e editar "Nome do dispositivo".
Ou, em um terminal, use o seguinte comando:
Isso definirá o nome do host como seu novo nome até você reiniciar. Consulte
man hostname
e Como altero o nome do computador? para mais informações. Não use_
em seu nome.Nota
Após a reinicialização, suas alterações
/etc/hostname
serão usadas, portanto (como você disse na pergunta), você ainda deve usar(ou algum outro editor) para que o arquivo contenha o nome do host.
Para testar se o arquivo está configurado corretamente, execute:
Você também deve editar
/etc/hosts
e alterar a linha que diz:para que agora ele contenha seu novo nome de host. (Isso é necessário, caso contrário, muitos comandos deixarão de funcionar.)
fonte
/etc/hosts
(ver outras respostas)hostname
faça com que o novo nome entre em vigor imediatamente, ele não é "permanente", a menos que você também mude/etc/hostname
e/etc/hosts
, como esses são os arquivos que serão lidos após uma reinicialização ou uma falha, o que, é claro, você pode não ser esperando com antecedência.Ubuntu 13.04 em diante
O
hostnamectl
comando faz parte da instalação padrão nas edições Desktop e Server.Combina a configuração do nome do host por meio do
hostname
comando e edição/etc/hostname
. Além de definir o nome do host estático, ele pode definir o nome do host "bonito", que não é usado no Ubuntu. Infelizmente, a edição/etc/hosts
ainda precisa ser feita separadamente.Este comando faz parte do
systemd-services
pacote (que, a partir do Ubuntu 14.04, também inclui os comandostimedatectl
elocalectl
). À medida que o Ubuntu migrasystemd
, essa ferramenta é o futuro.fonte
hostnamectl
não existe. Acho que alguns sabores do Ubuntu ainda não estão usando o systemd.Sem reiniciar
Alterando o nome do host ou o nome do computador no ubuntu sem reiniciar
Edite / etc / hostname e mude para o novo valor,
Edite / etc / hosts e altere a linha 127.0.1.1 antiga para seu novo nome de host
Nota : eu li em um fórum> Editar / etc / hosts e alterei a antiga linha 127.0.1.1 para o seu novo nome de host (se você não fizer isso, não poderá mais usar o sudo. Se você já o fez , pressione ESC no menu grub, escolha recuperação e edite seu arquivo host para as configurações corretas)
Agora, após uma reinicialização, seu nome de host será o novo que você escolheu
Sem reinicialização
Para alterar sem uma reinicialização , você pode apenas usar hostname.sh depois de editar / etc / hostname. Você deve manter os dois nomes de host em / etc / hosts (127.0.0.1 newhost oldhost) até executar o comando abaixo:
Nota : Comando acima para ativar a alteração. O nome do host salvo neste arquivo (/ etc / hostname) será preservado na reinicialização do sistema (e será definido usando o mesmo serviço).
fonte
sudo: unable to resolve host old-hostname
. Para essa parte, a solução @jesperado funciona bem./etc/hosts
, as coisas do mant começam a falhar no 12.04.2 LTS, incluindo ow
comando, Apache/sbin/reboot
e muito mais. Certifique-se de atualizar/etc/hosts
127.0.0.1
paralocalhost
e127.0.1.1
para um nome de host personalizado. Direito? Então, no final da sua resposta, para uma ação sem rebot , você faz referência/etc/hosts
e127.0.0.1 newhost oldhost
. Então, não há necessidade de um127.0.1.1
endereço?sudo nano /etc/hosts
para que a mudança tivesse efeito; sem sudo, apenasnano /etc/hosts
não salvar a alteraçãoO nome padrão foi definido quando você estava instalando o Ubuntu. Você pode alterá-lo facilmente para o que quiser no Desktop e no servidor editando os arquivos de hosts e nomes de host. Abaixo está como:
sudo hostname NEW_NAME_HERE
Isso mudará o nome do host até a próxima reinicialização. A alteração não será visível imediatamente no seu terminal atual. Inicie um novo terminal para ver o novo nome do host.
Para alterar o nome permanentemente, execute o comando para editar os arquivos do host:
sudo -H gedit /etc/hostname
esudo -H gedit /etc/hosts
Para o servidor Ubuntu sem uma GUI, execute
sudo vi /etc/hostname
esudo vi /etc/hosts
e editá-los um por um. Nos dois arquivos, altere o nome para o que você deseja e salve-o.Por fim, reinicie o computador para aplicar as alterações.
fonte
Aqui está um script que altera o nome do host da maneira prescrita. Ele garante que não apenas
sudo
mas também os aplicativos X11 continuem funcionando sem a necessidade de reinicialização.Uso:
sudo ./change_hostname.sh new-hostname
fonte
su $SUDO_USER -c "xauth add $(xauth list | sed 's/^.*\//'"$NEW_HOSTNAME"'\//g' | awk 'NR==1 {sub($1,"\"&\""); print}')"
faz? Apenas curioso.xauth list
) e substitui o nome do host antigo pelo novo nome do host (sed
). Em seguida,awk
coloca aspas no primeiro argumentoxauth add
porquexauth
o formato de entrada e saída não é simétrico.Sem reiniciar:
/etc/hostname
/etc/hosts
acordosudo sysctl kernel.hostname=mynew.local.host
Verifique seu nome de host atual com
hostname -f
fonte
sudo: unable to resolve host oldname
,sysctl: setting key "kernel.hostname": Read-only file system
. Talvez porque seja um CT dentro do Proxmox.Persistência de nome de host na nuvem-init (Ubuntu 18+)
Embora as abordagens acima (
hostnamectl
,etc/hostname
etc) funcionem para a mudança imediata do nome do host, com o advento do cloud-init - que pode controlar a configuração do nome do host - entre muitas outras coisas. Portanto, não permanecerá após uma reinicialização se o cloud-init estiver instalado. Se você deseja que a alteração permaneça após uma reinicialização, será necessário editar os arquivos de configuração do cloud-init , desabilite o módulo set / update do nome do host do cloud-init :ou desative inteiramente o cloud-init:
fonte
/etc/cloud/cloud.cfg
. Qual é o nome do pacote? Apenascloud-init
?Para obter seu nome de host atual:
Isso pode ser alterado em qualquer editor de texto. Você também precisaria atualizar a entrada diferente de localhost contra 127.0.0.1 em / etc / hosts.
fonte
/etc/hostname
pelo nome do host desejado (você pode editar comsudo nano /etc/hostname
)/etc/hosts
, substitua a entrada ao lado de 127.0. 1 .1 com o nome do host desejado (você pode editar comsudo nano /etc/hosts
)sudo service hostname restart; sudo service networking restart
fonte
# if you do nothing you'll end up with: # * /etc/hostname (and 'hostname') managed via: 'preserve_hostame: false' # if you do not change /etc/hostname, it will be updated with the cloud # provided hostname on each boot. If you make a change, then manual # maintenance takes over, and cloud-init will not modify it.
que atualmente não tenho o Ubuntu 18, então não posso testá-lo até o fim de semana.Ubuntu 16.04
Isso é sem reinicialização e sem qualquer uso do terminal.
Terminal aberto. Veja por si mesmos.
(Para versões mais antigas, a caixa de texto não é editável.)
fonte
A resposta clássica à pergunta do pôster original é que, uma vez editado
/etc/hostname
, você o aplica sem reiniciar executando hostname (1) com a opção-F
(--file
) como root:O nome do host (5) que lida com
/etc/hostname
e o programa mencionado é o mesmo no Debian e seus derivados há mais de vinte anos, e o pacote que o fornece foi marcado como essencial e necessário , e no IIRC os scripts init literalmente usaram a mesma coisa para décadas (/etc/init/hostname.conf
ainda o contém), então devo dizer que estou realmente intrigado com o fato de ninguém ter mencionado isso já :)fonte
Isso deve fazer o trabalho que eu acho
fonte
Eu li as respostas, mas acho que provavelmente você está procurando por isso:
Basta executar esses dois comandos após editar o
/etc/hostname
arquivo.Isso é tudo. Não há necessidade de reiniciar. Também certifique-se de alterar o nome no
/etc/hosts
arquivo.fonte
/etc/hosts
(confirmei em 14.04).Ubuntu 16.04
Solução baseada em resposta da Comunidade DigitalOcean.
Edite o arquivo hosts .
$ sudo nano /etc/hosts
Substitua oldname por um novo.
127.0.0.1 localhost newname
Configure o novo nome do host.
$ sudo hostnamectl set-hostname newname
fonte