다시 시작하지 않고 호스트 이름을 어떻게 변경합니까?


497

OS 호스트 이름을 변경하고 싶지만 다시 시작하고 싶지 않습니다.

편집 /etc/hostname했지만 구현하려면 다시 시작해야합니다. 이것을 피하는 방법?


3
경고 : 기본적으로 cloud-init를 실행하는 Ubuntu 18+ (부팅시 호스트 이름을 제어)는 작동하지 않습니다.
nslntmnx

@nslntmnx 감사합니다!
MiB

답변:


642

그것은 간단합니다. 화면 오른쪽 상단에있는 톱니 바퀴 아이콘을 클릭하고 "컴퓨터 정보"화면 (Gear 아이콘에있는)을 열고 "장치 이름"을 편집하십시오.

또는 터미널에서 다음 명령을 사용하십시오.

sudo hostname your-new-name

이렇게하면 다시 시작할 때까지 호스트 이름이 새로운 이름으로 설정됩니다. 보기 man hostname는 어떻게 컴퓨터 이름을 변경합니까? 자세한 내용은. _당신의 이름으로 사용하지 마십시오 .

노트

다시 시작한 후에도 변경 사항 /etc/hostname이 사용되므로 (질문에서 언급했듯이) 계속 사용해야합니다.

sudo -H gedit /etc/hostname

(또는 다른 편집기) 파일에 호스트 이름이 포함되도록합니다.

파일이 올바르게 설정되었는지 테스트하려면 다음을 실행하십시오.

sudo service hostname start

또한 다음 /etc/hosts과 같은 행을 편집 하고 변경 해야합니다 .

127.0.1.1     your-old-hostname

새 호스트 이름이 포함되도록합니다. (그렇지 않으면 많은 명령이 작동하지 않습니다.)


4
난 다시 시작하고 싶지
않아

23
알아. 따라서 'hostname'명령을 사용해야합니다. 방금 'hostname'명령은 재시작 / 충돌 / 등을 할 때까지 호스트 이름 만 변경한다는 것을 분명히하고 싶었습니다. 나중에 파일에서 이름을 다시 읽습니다.
jasperado

5
다릅니다. 명령을 입력 한 경우 다시 시작할 필요가 없습니다. 호스트 이름이 이미 변경되었습니다. 그러나 다음에 다시 시작할 때까지만.
jasperado

19
당신은 또한 변경해야합니다 /etc/hosts(다른 답변을 참조)
JB합니다.

9
하지만 즉, hostname즉시 적용하려면 새 이름을 발생합니다, 당신도 변경되는 경우를 제외하고 "영구적"아니다 /etc/hostname/etc/hosts그 물론, 당신은하지 않을 수 있습니다 다시 시작 또는 충돌, 후 읽을 수 있습니다 파일이 있기 때문에 미리 기대합니다.
Tim Parenti

280

우분투 13.04 이후

hostnamectl명령은 Desktop 및 Server 에디션 모두에서 기본 설치의 일부입니다.

hostname명령을 통한 호스트 이름 설정 과 편집 이 결합 됩니다 /etc/hostname. 정적 호스트 이름을 설정하는 것 외에도 우분투에서는 사용하지 않는 "pretty"호스트 이름을 설정할 수 있습니다. 불행히도 편집은 /etc/hosts여전히 개별적으로 수행해야합니다.

hostnamectl set-hostname new-hostname

이 명령은 systemd-services패키지의 일부입니다 (Ubuntu 14.04부터 timedatectland 및 localectl명령 포함). Ubuntu가로 마이그레이션함에 따라이 systemd도구는 미래입니다.


1
이것은 어디에서나 사용할 수 없습니다. 우분투 14.04 LTS ARM-7 설치를 보았는데 hostnamectl존재하지 않습니다. 우분투의 일부 맛이 아직 체계화되어 있지 않은 것 같아요.
Stéphane

1
@ Stéphane 명령은 시스템 스위트의 일부이지만 독립적으로 사용할 수 있습니다. 이 경우 13.04-14.10은 systemd를 init로 사용하지 않으며 명령을 사용할 수 있습니다.
muru

1
@ H2ONaCl 쉘 변수는 시작시 설정되며 다른 쉘을 열면 호스트 이름 변수가 양호해야합니다. sudo와 관련하여 호스트 이름 확인에 대한 오류로 실제로 아무것도하지 못했습니다.
muru

1
@ H2ONaCl ah이지만 HOSTNAME variablle은 표준이 아닙니다 .IIRC 대시 및 ksh에는 없습니다. zsh는 HOST를 사용하므로 쉘 변수가있는 한 힙의 맨 아래에 있습니다.
muru

3
우분투 18.04 LTS에서 여전히 작동합니다.
LucaM

63

다시 시작하지 않고

다시 시작하지 않고 우분투에서 호스트 이름 또는 컴퓨터 이름 변경

/ etc / hostname을 편집하고 새 값으로 변경하십시오.

nano /etc/hostname 

/ etc / hosts를 편집하고 이전 127.0.1.1 행을 새 호스트 이름으로 변경하십시오.

127.0.0.1   localhost
127.0.1.1   ubuntu.local    ubuntu   # change to your new hostname/fqdn

참고 : 포럼에서 읽은 후 / etc / hosts 편집하고 이전 127.0.1.1 줄을 새 호스트 이름으로 변경하십시오 (이를 수행하지 않으면 더 이상 sudo를 사용할 수 없습니다. 이미 완료 한 경우) , grub 메뉴에서 ESC를 누르고 복구를 선택한 다음 호스트 파일을 올바른 설정으로 편집하십시오.)

재부팅 후 호스트 이름은 새로 선택한 이름이됩니다.

재부팅하지 않고

재부팅하지 않고 변경 하려면 / etc / hostname을 편집 한 후 hostname.sh를 사용하면됩니다. 아래 명령을 실행할 때까지 호스트 이름을 모두 /etc/hosts(127.0.0.1 newhost oldhost)에 유지해야합니다.

sudo service hostname start

참고 : 위 명령은 변경 사항을 활성화합니다. 이 파일에 저장된 호스트 이름 (/ etc / hostname)은 시스템 재부팅시 유지되며 동일한 서비스를 사용하여 설정됩니다.


Ubuntu 12.10에서 마지막 부분은 다음 오류 메시지와 함께 작동하지 않습니다 sudo: unable to resolve host old-hostname. 그 부분에서는 @jesperado 솔루션이 잘 작동합니다.
Frédéric Grosshans

3
업데이트하지 않으면 명령, Apache /etc/hosts등을 포함하여 12.04.2 LTS에서 mant 일이 실패하기 시작합니다 . 업데이트해야합니다w/sbin/reboot/etc/hosts
Josh

당신은 모두 참조 127.0.0.1를 위해 localhost127.0.1.1사용자 정의 호스트 이름. 권리? 그런 다음 답변이 끝날 때까지 rebot이없는 작업의 경우/etc/hosts 및 을 참조하십시오 127.0.0.1 newhost oldhost. 따라서 127.0.1.1주소 가 필요하지 않습니까?
Nikos Alexandris

1
나를 위해 일하지 않았다. sudo nano /etc/hosts변경 사항을 적용하려면 사용해야 했습니다. sudo 없이는 nano /etc/hosts변경 사항을 저장하지 않았습니다
conman253

2
재시작과 ​​재부팅의 차이점은 무엇입니까?
storm

43

기본 이름은 Ubuntu를 설치할 때 설정되었습니다. 호스트 및 호스트 이름 파일을 편집하여 데스크탑 및 서버 모두에서 원하는대로 쉽게 변경할 수 있습니다. 방법은 다음과 같습니다.

  1. 를 눌러 CtrlAltt키보드는 터미널을 엽니 다. 열리면 아래 명령을 실행하십시오.sudo hostname NEW_NAME_HERE

다음에 다시 부팅 할 때까지 호스트 이름이 변경됩니다. 변경 사항은 현재 터미널에서 즉시 보이지 않습니다. 새 호스트 이름을 보려면 새 터미널을 시작하십시오.

  1. 이름을 영구적으로 변경하려면 명령을 실행하여 호스트 파일을 편집하십시오.

    sudo -H gedit /etc/hostnamesudo -H gedit /etc/hosts

GUI를하지 않고 우분투 서버의 실행 sudo vi /etc/hostnamesudo vi /etc/hosts및 하나씩 편집 할 수 있습니다. 두 파일 모두에서 이름을 원하는 것으로 변경하고 저장하십시오.

마지막으로 컴퓨터를 다시 시작하여 변경 사항을 적용하십시오.


16

다음은 규정 된 방식으로 호스트 이름을 변경하는 스크립트입니다. 그것은뿐만 아니라 보장 sudo뿐만 아니라 X11 응용 프로그램이 필요 없음을 다시 시작으로 계속 작동.

용법: 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}')"

스크립트의 마지막 줄은 무엇을 su $SUDO_USER -c "xauth add $(xauth list | sed 's/^.*\//'"$NEW_HOSTNAME"'\//g' | awk 'NR==1 {sub($1,"\"&\""); print}')"합니까? 그냥 궁금해서
Fr0zenFyr

4
@ Fr0zenFyr : 유효한 X11 인증 토큰 ( xauth list)을 사용하고 이전 호스트 이름을 새 호스트 이름 ( sed)으로 바꿉니다 . 그런 다음 awk첫 번째 인수 따옴표를 넣에 xauth add있기 때문에 xauth의 입력 및 출력 형식은 대칭이 아니다.
Lucas

설명 주셔서 감사합니다. 변경 사항을 적용하기 위해 항상 재부팅했습니다. +1
Fr0zenFyr

@trakz : 실제로 127.abc는 숫자에 관계없이 IETF RFC에 따른 모든 로컬 호스트입니다. (대부분의 사람들은 이것을 알지 못하지만 대부분은 모르지만 편집 승인 됨)
Fabby

14

다시 시작하지 않고 :

  1. 호스트 이름 변경 /etc/hostname
  2. /etc/hosts그에 따라 업데이트
  3. sudo sysctl kernel.hostname=mynew.local.host

현재 호스트 이름을 확인하십시오 hostname -f


16.04, sysctl을 가진 sudo: unable to resolve host oldname, sysctl: setting key "kernel.hostname": Read-only file system. 아마도 Proxmox 내부의 CT 때문일 수 있습니다.
Pablo A

14

Cloud-init (Ubuntu 18+) 호스트 이름 지속성

위의 접근 방식 ( hostnamectl, etc/hostname등) 은 호스트 이름 설정을 제어 할 수있는 cloud-init 의 출현으로 즉각적인 호스트 이름 변경을 위해 작동 하지만 다른 많은 것들 중 하나입니다. 따라서 cloud-init가 설치되어 있으면 재부팅 후 고정되지 않습니다. 재부팅 후 변경 사항을 유지하려면 cloud-init 구성 파일 을 편집하고 cloud-init의 호스트 이름 설정 / 업데이트 모듈을 비활성화해야 합니다 .

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

또는 cloud-init를 완전히 비활성화하십시오.

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

1
이 답변을 찬성하십시오. 이것은 나를 위해 잘 작동했습니다. 다른 답변은 cloud-init 채택으로 작동하지 않습니다.
nslntmnx

@nslntmnx는 기본적으로 18.04 데스크탑에만 설치되며 서버 만 설치됩니까? 데스크톱에는이 없습니다 /etc/cloud/cloud.cfg. 패키지 이름은 무엇입니까? 그냥 cloud-init?
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

1
또한 재정의를 비활성화하지 않고 cloud-init로 호스트 이름을 변경하는 방법이 있습니까?
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

1
예, cloud-init를 사용하여 많은 설정을 변경할 수 있습니다. 내 답변의 문서 링크를 참조하십시오. 다음은 호스트 이름을 설정하는 링크입니다. cloudinit.readthedocs.io/en/latest/topics/…
Pierz

7

현재 호스트 이름을 얻으려면

cat /etc/hostname

텍스트 편집기에서 변경할 수 있습니다. 또한 / etc / hosts에서 127.0.0.1에 대해 localhost 이외의 항목을 업데이트해야합니다.


1
또는 명령 행에서 "hostname"명령을 실행하십시오.
elomage

4
  1. /etc/hostname원하는 호스트 이름으로 내용을 바꿉니다 (로 편집 가능 sudo nano /etc/hostname)
  2. 에서 /etc/hosts127.0 옆에있는 항목을 교체. 1 원하는 호스트 이름 0.1 (당신이 편집 할 수 있습니다 sudo nano /etc/hosts)
  3. 실행 sudo service hostname restart; sudo service networking restart

경고 : 기본적으로 cloud-init를 실행하는 Ubuntu 18+ (부팅시 호스트 이름을 제어)는 작동하지 않습니다.
nslntmnx

@nslntmnx 확실합니까? 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.현재 Ubuntu 18이 없으므로 주말까지 테스트 할 수 없습니다.
조지

4

우분투 16.04

이것은없이 다시 시작 하고 터미널을 사용하지 않고.

  • 이동 시스템 설정 -> 세부 .
  • 거기는. 장치 이름 옆 에 텍스트 상자가 있습니다.
  • 텍스트 상자를 편집하고 창을 닫습니다.

터미널을 엽니 다. 스스로 참조하십시오.

(이전 버전의 경우 텍스트 상자를 편집 할 수 없습니다.)


4

원래 포스터의 질문에 대한 고전적인 대답은 일단 편집 한 후에는 ( ) 옵션을 루트로 하여 hostname (1)/etc/hostname실행하여 다시 시작하지 않고 적용 할 수 있다는 것입니다 .-F--file

sudo hostname -F /etc/hostname

호스트 (5) 로 처리 /etc/hostname하고 상기 프로그램은 이제 20여 년 동안 데비안과 파생 상품 같은 왔으며, 패키지는 제공 태그 된 필수요구 , 그리고 IIRC는 init 스크립트는 그대로을 위해 같은 일을 사용했다 수십 년 ( /etc/init/hostname.conf여전히 포함되어 있음), 나는 아무도 이것을 이미 언급하지 않은 방법에 대해 정말로 당황 스럽다고 말해야합니다. :)


경고 : 기본적으로 cloud-init를 실행하는 Ubuntu 18+ (부팅시 호스트 이름을 제어)는 작동하지 않습니다.
nslntmnx

@nslntmnx 음, 뭐? Ubuntu 18은 기본적으로 cloud-init를 가져 오기 위해 어떤 새로운 종속성을 도입 했습니까? 클라우드 맞춤형 이미지를 생각할 수도 있습니다.이 경우 사용자 지정 클라우드 프로비저닝 도구를 실행하는 것은 놀라운 일이 아닙니다.
Josip Rodin

3
sudo hostname your-new-name
sudo /etc/init.d/networking restart

내가 생각하는 일을해야한다


5
나는이 다시 시작 살아남을 것입니다 생각하지 않는다
콜린 앤더슨

경고 : 기본적으로 cloud-init를 실행하는 Ubuntu 18+ (부팅시 호스트 이름을 제어)는 작동하지 않습니다.
nslntmnx

3

나는 대답을 읽었지만 아마도 당신이 이것을 찾고 있다고 생각합니다.

/etc/hostname파일 을 편집 한 후이 두 명령을 실행 하십시오.

$ sudo service hostname restart
$ exec bash

그게 다야. 다시 시작할 필요가 없으며 /etc/hosts파일 의 이름도 변경해야 합니다.


다른 많은 답변과 달리 업데이트되지 않습니다 /etc/hosts(14.04에서 확인했습니다).
IsaacS

경고 : 기본적으로 cloud-init를 실행하는 Ubuntu 18+ (부팅시 호스트 이름을 제어)는 작동하지 않습니다.
nslntmnx

2

우분투 16.04

DigitalOcean Comunity의 답변 을 기반으로 한 솔루션 .

호스트 파일을 편집 하십시오.

$ sudo nano /etc/hosts

교체 oldname을 새 것으로.

127.0.0.1 localhost newname

새 호스트 이름을 설정하십시오.

$ sudo hostnamectl set-hostname newname


경고 : 기본적으로 cloud-init를 실행하는 Ubuntu 18+ (부팅시 호스트 이름을 제어)는 작동하지 않습니다.
nslntmnx
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.