ฉันจะเปลี่ยนชื่อคอมพิวเตอร์ได้อย่างไร


327

เมื่อฉันเชื่อมต่อกับเซิร์ฟเวอร์ของฉัน (เซิร์ฟเวอร์ Ubuntu 10.10) ฉันจะได้รับสิ่งนี้:

name@server-name.belkin ~>

ฉันจะลบ ".belkin" ได้อย่างไร


1
ลองแก้ไข / etc / hosts gksudo gedit / etc / hosts และแทนที่ server-name.belkin ด้วยชื่ออะไรก็ตามที่คุณต้องการ
LFC_fan

2
คุณต้องการเปลี่ยนชื่อเซิร์ฟเวอร์จริงหรือแค่แสดงในพรอมต์?
Dave Jennings

2
การลงคะแนนเพื่อเปิดอีกครั้งเนื่องจากเป็น superset (อนุญาตการรีสตาร์ท)
Ciro Santilli 新疆改造中心法轮功六四事件

วิธีการที่ไม่นี้คำถามที่ได้รับการปิดในความโปรดปรานของใครถามนานกว่าหนึ่งปีภายหลังได้หรือไม่
วอร์เรน

@warren ฉันทามติในปัจจุบันคือปิดด้วย "คุณภาพ": meta.stackexchange.com/questions/147643//เนื่องจาก "คุณภาพ" ไม่สามารถวัดได้ฉันเพิ่งจะโหวตขึ้น ;-) มีแนวโน้มว่าคำถามใดจะเข้ามาที่คำหลักที่ดีที่สุดของ Google สำหรับ newbie
Ciro Santilli 事件改造中心法轮功六四事件

คำตอบ:


420

คุณต้องแก้ไขชื่อคอมพิวเตอร์ในสองไฟล์:

/etc/hostname 

และ

/etc/hosts

ทั้งสองอย่างนี้จะต้องมีสิทธิ์การเข้าถึงระดับผู้ดูแล

gksu gedit /path/to/file

แทนที่ชื่อคอมพิวเตอร์ที่มีอยู่ด้วยชื่อใหม่ของคุณ เมื่อวิ่งเสร็จ

sudo service hostname start

ชื่อจะถูกเปลี่ยนด้วยหากคุณรีสตาร์ทคอมพิวเตอร์

ดูสิ่งนี้ด้วย:


43
หลังจากนั้นเพียงsudo service hostname restartและชื่อโฮสต์มีการเปลี่ยนแปลงโดยไม่ต้องรีบูตเครื่อง
Anthony O.

6
ใน Ubuntu 14.04 ไม่มีบริการ 'ชื่อโฮสต์' ฉันจะทำอะไรได้บ้างเพื่อหลีกเลี่ยงการรีบูต
Arpad Horvath

8
sudo service hostname restartไม่ทำงานบนการติดตั้งเริ่มต้นของเซิร์ฟเวอร์ ubuntu 14.04 บน AWS ฉันต้องทำการรีสตาร์ทเซิร์ฟเวอร์เต็ม
gerrytan

9
ในวันที่ 14.04 ฉันวิ่งออกไป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 สิ่งที่ต้องทำ: วิธีการตรวจสอบว่ามีการติดตั้งมันติดตั้งโดยค่าเริ่มต้นในภาพเดสก์ทอปหรือเพียงแค่เซิร์ฟเวอร์?

หากคุณต้องการให้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: ไม่สามารถแก้ไขโฮสต์ xxxxx"
WoodyDRN

70

มันค่อนข้างง่าย:

  1. แก้ไข/etc/hostnameทำการเปลี่ยนชื่อบันทึกไฟล์

  2. คุณควรทำการเปลี่ยนแปลงเดียวกันใน/etc/hostsไฟล์

  3. วิ่ง sudo service hostname start

ตราบใดที่คุณไม่มีการตั้งค่าแอปพลิเคชันขึ้นอยู่กับชื่อโฮสต์ 'เก่า' คุณควรจะเป็น ;-)


31
คำเตือน: หากคุณทำเช่นนี้โดยไม่เปลี่ยน / etc / hosts ดังนั้นคุณจะไม่สามารถใช้ sudo ได้เพราะชื่อโฮสต์ของคุณจะไม่สามารถค้นหาได้
João Pinto

คุณถูกต้องเกี่ยวกับการแก้ไข / etc / hosts ฉันลืมมัน (เพิ่งเพิ่มไปยังคำตอบของฉัน) แม้ว่า sudo ดูเหมือนว่าจะทำงานได้ดีสำหรับฉันโดยไม่ต้องเปลี่ยนมัน (ฉันได้รีสตาร์ทเครื่องและยังใช้งานได้)
Pavlos G.

1
ก็ ok คุณสามารถทำสิ่งที่เป็นอยู่ในขณะนี้ให้บริการที่มีการจัดการจากhostname upstartมันจะทำสิ่งเดียวกันทุกประการเริ่มบริการใหม่
Pavlos G.

2
หมายเหตุ: สิ่งนี้จะไม่ทำงานสำหรับ Ubuntu 14.x เนื่องจากhostnameไม่ได้อยู่ในinit.d
RápliAndrás

2
คำเตือน: จะไม่ทำงานกับ Ubuntu 18+ ซึ่งใช้งาน cloud-init ตามค่าเริ่มต้นซึ่งควบคุมชื่อโฮสต์เมื่อบูต
nslntmnx

24

มันปลอดภัยที่จะทำคุณเพียงแค่ต้องแน่ใจว่าคุณแก้ไขทั้งไฟล์การกำหนดค่าชื่อโฮสต์ระบบ (/ etc / ชื่อโฮสต์) และไฟล์การแก้ไขชื่อโฮสต์ชื่อ (/ etc / โฮสต์) จากเทอร์มินัลดำเนินการต่อไปนี้:

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

2
sudo service hostname restartคุณสามารถหลีกเลี่ยงการปิดด้วย
Wtower

3
@Wtower ไม่ทำงานกับ 14.04 :(
dotslash

คำเตือน: จะไม่ทำงานกับ Ubuntu 18+ ซึ่งใช้งาน cloud-init ตามค่าเริ่มต้นซึ่งควบคุมชื่อโฮสต์เมื่อบูต
nslntmnx

18

นอกจากการแก้ไข / etc / hosts และ / etc / hostname แล้วบริการต่าง ๆ อาจมีปัญหากับการเปลี่ยนแปลงเช่นกัน Mysql และ postfix ได้รับการติดตั้งเป็นค่าเริ่มต้นใน Ubuntu postfix ที่เสียจะไม่ส่งผลกระทบต่อผู้ใช้ Ubuntu ส่วนใหญ่เนื่องจากเป็นเซิร์ฟเวอร์อีเมลพื้นหลังที่ไม่ได้ใช้งานบ่อยนัก

postfix:

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

การกำหนดค่าเริ่มต้นสำหรับ mysql ไม่ได้ใช้ชื่อโฮสต์ดังนั้นมันจะทำงานได้ดีตามที่เป็นอยู่ หากคุณปรับแต่งแล้วให้แก้ไขไฟล์ใน / etc / mysql / และเริ่มบริการใหม่

คุณอาจต้องการแก้ไข / etc / motd (ข้อความประจำวัน) ซึ่งแสดงบนเทอร์มินัลเสมือนและการล็อกอินระยะไกล คนนั้นจะไม่ทำอันตรายอะไรเลย

บริการอื่น ๆ ที่คุณอาจติดตั้งซึ่งจำเป็นต้องมีการแก้ไขคือ apache, bind9 เป็นต้นในแต่ละกรณีให้ค้นหาและแก้ไขชื่อโฮสต์ในการกำหนดค่าและเริ่มบริการใหม่


14

ชื่อโฮสต์ระบุคอมพิวเตอร์ของคุณบนเครือข่ายท้องถิ่น (และอาจจะบนอินเทอร์เน็ตเช่นกัน) ดังนั้นมันจึงไม่ได้เป็นความคิดที่ดีที่จะเปลี่ยนมันถ้าคุณรู้ว่าสิ่งที่คุณทำ

แต่คุณสามารถเปลี่ยน shell prompt ไม่ให้แสดง.belkin(ส่วนชื่อโดเมน):

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

ดูหน้าbash manและเฉพาะส่วนในการขอข้อมูลเพิ่มเติม


14

อีกวิธีที่ดีกว่าและปลอดภัยในการเปลี่ยนชื่อโฮสต์

ติดตั้ง ailurus

  • เพิ่ม PPA และอัพเดตที่เก็บของคุณ

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

  • ติดตั้ง ailurus

    sudo apt-get install ailurus

  • หลังจากติดตั้งแล้วจะพบได้ในแอปพลิเคชัน >> เครื่องมือระบบ >> Ailurus
    ข้อความแสดงแทน

5
ทำไมคะแนนโหวตถึงเป็นลบ? ควรจะดีกว่าการกำหนดค่าบางอย่างด้วยเครื่องมือเฉพาะกว่าโคลนรอบ ๆ บรรทัดคำสั่งและแบ่งสิ่งต่าง ๆ ในกระบวนการ
endolith

38
การติดตั้งซอฟต์แวร์ขนาดใหญ่เช่นนี้เพียงเพื่อเปลี่ยนชื่อโฮสต์เป็นบิตของ overkill
Nemo

9
ฉันยอมรับว่านี่เป็น overkill - โดยเฉพาะอย่างยิ่งเนื่องจากซอฟต์แวร์ไม่พร้อมใช้งานในที่เก็บ แต่จะต้องติดตั้งจาก PPA ...
Marcel Stimberg

@ karthick87 อาจกล่าวถึงคำตอบของคุณว่านี่เป็นซอฟต์แวร์ชิ้นใหญ่ (พร้อมตัวเลือกการกำหนดค่าอื่น ๆ )? - โดยส่วนตัวฉันเห็นด้วยกับ endolith ว่าเครื่องมือที่มีจุดเปลี่ยนง่าย ๆ เดียวนั้นดีกว่าการใช้งานบรรทัดคำสั่งจำนวนมาก (ฉันใช้ Ubuntu Tweak ซึ่งปัจจุบันมีให้บริการจาก PPA)
david.libremone

ฉันคิดว่าคุณสามารถทำลายสิ่งต่าง ๆ ได้มากขึ้น (และง่ายขึ้น) โดยใช้เครื่องมือนี้แทนที่จะเพียงแค่แทนที่คำในไฟล์สองสามไฟล์ มันเปิดเผยหลายสิ่งเกินไปสำหรับคุณ
gerlos

9

หากคุณไม่ต้องการเล่นกับโปรแกรมแก้ไขข้อความUbuntu Tweak (คว้าตัวเด็บจากเว็บไซต์ของพวกเขา) มีสิ่งนั้นเป็นหนึ่งในสิ่งเล็ก ๆ น้อย ๆ ที่คุณสามารถเล่นได้ (รวมถึงการปรับแต่งเล็กน้อยอื่น ๆ ที่คุณอาจต้องการทำ ไม่ต้องการเล่นกับเทอร์มินัลและไฟล์เอง)


จากความอยากรู้มีเหตุผลใดที่ทำให้ Ubuntu Tweak ไม่ได้อยู่ใน repos ซอฟต์แวร์หรือไม่
Olivier Lalonde

พวกเขาไม่เคยเพิ่ม / ไม่ได้รับการยอมรับ คุณสามารถเพิ่ม repo ของพวกเขาไปยังรายการของคุณได้ทันทีหลังจากเริ่มปรับแต่งหรือผ่านรายการเทอร์มินัล / repo
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

อย่างไรก็ตามสิ่งนี้ไม่ได้แก้ไขไฟล์โฮสต์ของคุณซึ่งคุณต้องทำเพื่อให้แน่ใจว่าคอมพิวเตอร์ของคุณรู้จักตัวเอง

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

หากคุณต้องการกระบวนการติดตั้ง GUI ช่วยติดตั้ง Ubuntu-Tweak การใช้งานอื่น ๆ ของแอพนี้คือความสามารถในการเปลี่ยนชื่อคอมพิวเตอร์ผ่านแท็บ "รายละเอียดคอมพิวเตอร์" -> "ชื่อโฮสต์"


3

การตั้งค่าระบบ -> รายละเอียด -> 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.