리눅스 서버의 이름을 바꾸는 것은 단순히 SSH 프롬프트에 표시되는 텍스트를 변경하는 것만이 아닙니다. 변경된 이름은 다음과 같은 용도로도 사용될 수 있습니다. /etc/hostsDNS, 인증서, 모니터링, 백업 또는 플릿 인벤토리.
호스트 이름 이 명령은 시스템 이름을 변경하지만 DNS 영역이나 이전 이름으로 시스템을 식별하는 도구는 수정하지 않습니다. 따라서 변경 전에 이러한 종속성을 확인하고 변경 후 하나씩 점검하는 것이 좋습니다.

서버의 현재 이름과 주소를 기록해 두십시오.
먼저 SSH 세션을 열어 두십시오. 서버가 원격인 경우 호스팅 제공업체에 백업 콘솔이 있는지 확인하십시오. 호스트 이름을 변경해도 일반적으로 SSH는 종료되지 않지만, 오류가 발생하면 SSH가 종료될 수 있습니다. /etc/hostsDNS 또는 자동화로 인해 재연결이 복잡해질 수 있습니다.
호스트 이름 ctl 상태
호스트 이름
호스트 이름 -f
cat /etc/hostname
"$(호스트 이름)"을 호스트에 추가합니다.
ip -br 주소
호스트 이름 커널에서 사용하는 이름을 표시합니다. /etc/hostname systemd로 관리되는 시스템에서 시작 시 로드되는 정적 이름을 포함합니다. 호스트 이름 -f 로컬 확인을 통해 정규화된 이름을 가져오려고 시도합니다. 실패하거나 예상치 못한 결과가 반환되는 경우 즉시 변경하지 말고 먼저 확인하십시오. /etc/hosts 그리고 DNS.
또한 서버에서 실제로 사용하는 주소도 확인하십시오. 가이드에서 확인할 수 있습니다. 리눅스에서의 IP 주소 이를 통해 인터페이스 주소, 사용된 경로 및 NAT에서 제공하는 공용 IP 주소를 구분할 수 있습니다.
글을 쓰기 전에 수정이 필요할 수 있는 두 파일을 저장해 두세요.
sudo cp -a /etc/hostname "/etc/hostname.bak-$(date +%F-%H%M)"
sudo cp -a /etc/hosts "/etc/hosts.bak-$(date +%F-%H%M)"
hostnamectl을 사용하여 호스트 이름을 변경하세요.
짧고 안정적이며 DNS와 호환되는 이름을 선택하세요. 예를 들어 srv-app-02공백, 악센트, 밑줄, 그리고 변경될 가능성이 있는 IP 주소를 나타내는 이름은 피하십시오. 고정 호스트 이름은 DHCP를 통해 수신된 임시 이름보다 우선순위가 높습니다.
sudo hostnamectl set-hostname srv-app-02
호스트 이름 ctl 상태
호스트 이름
cat /etc/hostname
타겟팅 옵션이 없으면 hostnamectl set-hostname 예쁜 이름, 정적 이름, 임시 이름을 업데이트합니다. 서버의 경우 다음과 같은 짧은 이름이 사용됩니다. srv-app-02 시스템의 호스트 이름과 FQDN을 혼합하는 것을 방지합니다. srv-app-02.example.net매뉴얼 페이지 호스트 이름 이 세 가지 수준에 대한 자세한 내용입니다.
명령은 즉시 적용됩니다. 그러나 새 셸이 열릴 때까지 SSH 세션 프롬프트에 이전 이름이 표시될 수 있습니다. 프롬프트를 새로 고치기 위해 서버를 재시작하지 마십시오. 대신 두 번째 세션을 열고 출력을 비교하십시오. 호스트 이름.
로컬 이름 확인에 문제가 생기지 않도록 /etc/hosts 파일을 수정하는 방법
호스트 이름 다시 쓰지 마세요 /etc/hosts파일을 수정하기 전에 이전 이름을 검색하세요.
[:space:]grep -nE '(^|[])srv-app-01([]|$)' /etc/hosts[:space:]
sudoedit /etc/hosts
Debian과 Ubuntu에서 한 줄은 다음과 같습니다. 127.0.1.1 이는 종종 FQDN과 약어를 로컬에서 연결하는 데 사용됩니다.
127.0.0.1 로컬호스트
127.0.1.1 srv-app-02.example.net srv-app-02
안정적인 개인 IP 주소를 가진 서버에서는 해당 주소와 직접적인 연결을 찾을 수 있습니다. 예를 들어, 192.0.2.25 srv-app-02.example.net srv-app-02템플릿을 임의로 복사하지 마십시오. 이미 기기를 지정한 줄만 수정하고 기존 내용은 그대로 두십시오. 로컬호스트 IPv4와 IPv6.
getent hosts srv-app-02
getent hosts srv-app-02.example.net
호스트 이름 -f
getent 쿼리는 구성된 해상도를 참조합니다. /etc/nsswitch.conf따라서 다음과 같은 점을 고려합니다. /etc/hostsDNS 및 환경에 따라 LDAP와 같은 소스를 활용합니다. 이는 단순히 파일을 읽는 것보다 더 정확한 정보를 제공합니다.
정방향 및 역방향 DNS를 각각 업데이트하십시오.
새로운 로컬 이름은 DNS 레코드를 생성하지 않습니다. 해당 영역에서 A 레코드, AAAA 레코드(해당하는 경우) 및 PTR 레코드(관리하는 경우)를 추가하거나 수정하십시오. 전환 과정 동안 기존 레코드를 사용하는 애플리케이션이 있는 경우 해당 레코드를 유지하고, 확인 후 삭제하십시오.
dig +short A srv-app-02.example.net
발굴 +짧은 AAAA srv-app-02.example.net
dig +short -x 192.0.2.25
다른 컴퓨터에서 이러한 테스트를 수행하고, 필요한 경우 여러 리졸버를 사용하십시오. 다음 문서에서 자세한 내용을 확인할 수 있습니다. 리눅스를 파헤쳐라 이 문서에서는 캐시를 임의로 삭제하지 않고 로컬 DNS, 공용 서버 및 권한 있는 서버를 비교하는 방법을 보여줍니다.
DNS 설정이 올바르다고 해서 모든 것이 준비된 것은 아닙니다. TLS 인증서, 이전 FQDN이 포함된 구성 파일, 이름 기반 방화벽 규칙을 확인하십시오. SSH의 경우, 새 이름으로 연결할 때도 서버의 호스트 키를 사용하지만, DNS 서버에 새 논리적 항목을 생성합니다. 알려진_호스트지문을 수락하기 전에 대조해 보세요.
이름 변경 후 SSH, 로그 및 모니터링을 제어하세요
첫 번째 SSH 연결을 닫지 않고 새 FQDN으로 두 번째 SSH 연결을 엽니다. 그런 다음 변경 사항과 관련된 서비스 오류 및 메시지를 확인합니다.
호스트 이름 ctl 상태
systemctl --실패
journalctl -u systemd-hostnamed --since "-15 minutes" --no-pager
journalctl --since "-15 minutes" --no-pager | grep -iE 'hostname|srv-app-01|srv-app-02'
변경 전 작성된 줄에 이전 이름이 남아 있는 것은 정상입니다. 중요한 것은 새 이벤트에서 사용되는 이름입니다. 모든 서비스를 자동으로 재시작하지 마십시오. 먼저 특정 로깅, 백업 또는 모니터링 에이전트와 같이 시작 시 호스트 이름을 명시적으로 선언하는 서비스를 확인하십시오.
모니터링 도구에서 기존 호스트가 오프라인 상태가 되는 동안 새 호스트가 비어 있는 상태로 나타나지 않는지 확인하십시오. 인벤토리, 백업 및 알림에 대해서도 동일한 검사를 수행하십시오. 그렇지 않으면 Linux 측에서 이름 변경이 성공적으로 이루어지더라도 해당 플랫폼에 두 개의 별개 객체가 생성될 수 있습니다.
재부팅 후 이전 호스트 이름이 다시 나타나는 경우
이름이 이전 값으로 되돌아갈 경우, 재시작하기 전에 프로비저닝 계층을 확인하십시오. 호스트 이름클라우드 이미지는 cloud-init을 사용하여 시작 시 호스트 이름을 적용할 수 있습니다.
grep -R "preserve_hostname" /etc/cloud/cloud.cfg /etc/cloud/cloud.cfg.d 2>/dev/null
journalctl -b -u cloud-init --no-pager
cat /etc/hostname
호스트 이름 ctl 상태
호스팅 제어판, Terraform, Ansible 또는 VM을 관리하는 초기화 스크립트도 확인하십시오. 매번 시작할 때마다 문제를 해결하려고 애쓰지 말고, 근본적인 원인을 수정하십시오. 이름이 안정되면 위의 점검을 반복하십시오. getent, 파기SSH, 로그 및 모니터링. 그러면 서버 이름이 실제로 중요한 모든 곳에서 변경되었는지 확인할 수 있습니다.