EC2 인스턴스에 대해 기억하기 쉬운 호스트 이름을 설정할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/603351

  •  03-07-2019
  •  | 
  •  

문제

저는 EC2에서 두 개의 표준 Fedora 인스턴스를 실행하고 있습니다.Amazon에서 할당한 인스턴스의 공개 호스트 이름이 너무 이상하고 기억하기 어렵다고 생각합니다.짧은 것(빨간색/파란색/녹색 등)으로 변경하고 싶습니다.

이 작업을 수행하면 어떤 단점이 있습니까?재부팅 후에도 지속되도록 어떻게 설정합니까?

감사해요.

도움이 되었습니까?

해결책

시작하기 전에 달리기를 시도하십시오 hostname 그리고 hostname --fqdn 그리고 응답이 무엇인지 기록하십시오.

편집 할 수 있습니다 /etc/hostname 재부팅 후 주위에 붙어있는 호스트 이름을 설정합니다. 사용하여 호스트 이름을 "다시로드"할 수 있습니다. hostname -F /etc/hostname 해당 값을 호스트 이름으로 읽습니다. 로그 아웃 및 로그인 후 BASH 프롬프트가 변경됩니다.

경고 / 참고:
예, Bash 프롬프트의 호스트 이름을보다 유용한 것으로 설정하는 것이 좋습니다. ip-123-123-123-123 그러나 나는 EC2 인스턴스의 호스트 이름을 표준 방식으로 설정하는 데 실제로 많은 것들이 있다고 생각하기 때문에 (적어도 지금은) 내 떠나기로 결정했습니다. 편집 후 /etc/hostname 그리고 호스트 이름을 변경합니다 webserver 호스트 이름이 해결되지 않기 때문에 많은 서비스가 실패하는 것처럼 보이며 Apache는 시작하지 않을 것입니다. 다음은 편집했습니다 /etc/hosts 그리고 추가

127.0.0.1 webserver

두 번째 줄로. 그런 다음 Apache는 시작했지만 FQDN을 찾을 수 없다고 불평했습니다. 나는 그 달리기를 확인했다 hostname --fqdn 더 이상 작동하지 않습니다.

다음에 나는 상담했다 man hostname 그리고 당신이 설정할 수있는 동안 배웠습니다 hostname 그게 보인다 FQDN DNS 조회를 통해 반환되는 것입니다.

FQDN

이 명령으로 fqdn (hostname - -fqdn에 의해 반환) 또는 dns 도메인 이름 (dnsdomainname에 의해 반환)을 변경할 수 없습니다. 시스템의 FQDN은 Resolver (3)가 호스트 이름을 반환하는 이름입니다.

기술적으로 : FQDN은 getAddrinfo (3) 이름이 GethostName (2)에 의해 반환 된 호스트 이름에 대해 반환합니다. DNS 도메인 이름은 첫 번째 점 다음 부분입니다.

따라서 구성 (일반적으로 /etc/host.conf)에 따라 변경되는 방법에 따라 다릅니다. 일반적으로 (호스트 파일이 DNS 또는 NIS 전에 구문 분석되는 경우) /etc /hosts에서 변경할 수 있습니다.

시스템을 설정 / 바보를 FQDN을 반환하도록 설정할 수 있다고 생각합니다. ip-123-123-123-123.ec2.internal 호스트 이름은 webserver 그러나이 시점에서 그것은 가치있는 것보다 더 많은 어려움처럼 보이기 시작했고, 더 좋은 bash 프롬프트를 사용하면 도로에서 많은 소프트웨어와 구성 문제가 발생할 수 있으므로 포기하기로 결정했습니다.

나는 또한 많은 Amazon EC2 인스턴스가 클라우드 인트:

Cloud-Init는 클라우드 인스턴스의 초기 초기화를 처리하는 우분투 패키지입니다. 우분투 클라우드 이미지와 EC2에서 사용 가능한 공식 우분투 이미지에 설치되어 있습니다.

구성하는 것 중 일부는 다음과 같습니다.

  • 기본 로케일 설정
  • 호스트 이름 설정
  • SSH 개인 키를 생성합니다
  • 사용자의 .ssh/orportized_keys에 SSH 키 추가로 로그인 할 수 있습니다.
  • 임시 마운트 포인트 설정

Cloud-Init의 동작은 사용자 데이터를 통해 구성 할 수 있습니다. 인스턴스 출시 시간에 사용자가 사용자 데이터를 제공 할 수 있습니다. 이것은 ec2-run-instances에 대한 -user-data 또는 -user-data-file 인수를 통해 이루어집니다.

나는 또한 이것을 발견했다 호스트 이름이 Cloud-Init로 구성되는 방법에 대해 이야기합니다.

EBS 인스턴스에서는 종료 및 나중에 시작이 다른 IP 주소로 끝납니다.

사용자가 원래 값에서 /etc /hostname을 수정하지 않은 경우 (메타 데이터의 '로컬-호스 이름'에 의해 시드 됨) Cloud-Init는 다시 호스트 이름을 설정하고 /etc /etc /hostname을 설정합니다.

사용자가 /etc /hostname을 수정 한 경우 사용자 관리 상태로 유지됩니다.

또한 /etc/cloud/cloud.cfg에 'preserve_hostname'값이 True 값으로 설정된 경우/etc/hostname은 도달하지 않습니다.

흥미로운 테이크 아웃은 호스트 이름을 변경하지 않으면 Cloud-Init 패키지가 최신 상태를 유지한다는 것입니다.

다른 사람이 해결 방법을 가지고 있거나 언급 된 일부 문제를 해결하고 호스트 이름을 변경하여 EC2 인스턴스에서 아무것도 깨뜨릴 수 없다는 것을 안심시킬 수 있다면 기꺼이들을 것입니다.

다른 팁

또 다른 방법은 단순히 편집하는 것입니다 ~/.bashrc 그리고 Prepend PS1 기계의 별명으로.

편집 : 아마도 AWS Linux AMI (예제)의 기계 전체, 예를 들어 더 정확하게 (예 : 콘솔에 붙여 넣거나 임의의 설치에 추가) : :

cat << EOF | sudo tee /etc/profile.d/ps1.sh
if [ "$PS1" ]; then
  PS1="[\u@myinst1:\l \t \! \W]\\$ "
fi
EOF

편집하다 /etc/sysconfig/network 루트로.

바꾸다

HOSTNAME=localhost.localdomain

~와 함께

HOSTNAME=hostname.DOMAIN_NAME

그런 다음 재부팅하거나 실행하십시오 /etc/init.d/network restart그런 다음 서버는 이름을 FQDN으로보고해야합니다.

에서 이 지역:

실행중인 시스템에서 호스트 이름을 변경하십시오

모든 Linux 시스템에서는 명령으로 호스트 이름을 변경할 수 있습니다. hostname (놀란?)… 여기에 명령 줄 호스트 이름의 빠른 사용법이 있습니다.

$> hostname

매개 변수가 없으면 시스템의 현재 호스트 이름을 출력합니다.

$> hostname --fqd

시스템의 자격을 갖춘 도메인 이름 (또는 FQDN)을 출력합니다.

$> hostname NEW_NAME

시스템의 호스트 이름을 설정합니다 NEW_NAME.

편집 할 수도 있습니다 /etc/hostname (적어도 우분투에서).

AWS로 재부팅 한 후에도 유지되도록 명령을 추가하십시오. /etc/rc.local 따라서 기계가 시작되면 실행됩니다.

방법도 있습니다 user_data를 통해 호스트 이름을 동적으로 설정하십시오 :

USER_DATA=`/usr/bin/curl -s http://169.254.169.254/latest/user-data`
HOSTNAME=`echo $USER_DATA`
IPV4=`/usr/bin/curl -s http://169.254.169.254/latest/meta-data/public-ipv4`
hostname $HOSTNAME
echo $HOSTNAME > /etc/hostname

시스템 호스트 이름을 공개 DNS 이름으로 변경하려면

공개 DNS 이름이 등록 된 경우이 절차를 따르십시오.

  1. 열기 /etc/sysconfig/network 좋아하는 텍스트 편집기의 구성 파일 및 HostName 항목을 변경하여 완전히 자격있는 도메인 이름 (예 : WebServer.mydomain.com)을 반영합니다.

    HOSTNAME=webserver.mydomain.com
    
  2. 인스턴스를 재부팅하여 새 호스트 이름을 선택하십시오.

    [ec2-user ~]$ sudo reboot
    
  3. 인스턴스에 로그인하여 호스트 이름이 업데이트되었는지 확인하십시오. 프롬프트에는 새 호스트 이름이 표시되어야하며 (첫 번째 ".") 호스트 이름 명령에는 완전히 적합한 도메인 이름이 표시되어야합니다.

    [ec2-user@webserver ~]$ hostname
    webserver.mydomain.com
    

공개 DNS 이름없이 시스템 호스트 이름을 변경하려면

  1. 열기 /etc/sysconfig/network 좋아하는 텍스트 편집기의 구성 파일 및 원하는 시스템 호스트 이름 (예 : Webserver)을 반영하도록 호스트 이름 항목을 변경하십시오.

    HOSTNAME=webserver.localdomain
    
  2. 열기 /etc/hosts 좋아하는 텍스트 편집기에 파일을 파일하고 127.0.1.1 (DHCP 시스템) 또는 ETH0의 주소 (정적 IP 시스템)로 시작하여 아래 예제와 일치하여 자신의 호스트 이름을 대체합니다. (127.0.0.1은 로컬 호스트 라인으로 남겨 져야합니다.)

    127.0.0.1   localhost localhost.localdomain
    127.0.1.1   webserver.example.com webserver
    
  3. 인스턴스를 재부팅하여 새 호스트 이름을 선택하십시오.

    [ec2-user ~]$ sudo reboot
    
  4. 인스턴스에 로그인하여 호스트 이름이 업데이트되었는지 확인하십시오. 프롬프트에는 새 호스트 이름이 표시되어야하며 (첫 번째 ".") 호스트 이름 명령에는 완전히 적합한 도메인 이름이 표시되어야합니다.

    [ec2-user@webserver ~]$ hostname
    webserver.localdomain
    

참고 : 호스트 이름에 영향을 미치지 않고 쉘 프롬프트를 변경할 수도 있습니다. 인용하다 이 AWS 문서.

물론, 자신의 도메인이있는 경우 (Amazon Hostname을 가리 키도록 CNAME를 설정) 그렇게 할 수 있습니다. 그렇지 않으면, 당신은 그들이 당신에게주는 것 (또는 그 중 하나를 설정하면 탄성 IP)에 갇혀 있습니다.

/etc/rc.local 솔루션은 기본 호스트 이름을 위해 저에게 효과가 있었지만 FQDN을 제공하지는 않습니다.

내 Linux Ami (다른 인스턴스의 스냅 샷)에서. 위의 공식 중 어느 것도 작동하지 않았습니다. 그런 다음 파일 : /etc/init.d/modifyhostname에서 호스트 이름 필드를 간단히 변경하고 정상적인 재부팅을했습니다.

호스트 이름을 설정하려면 여러 가지 작업을 수행해야합니다.

  1. hostname newname - 호스트 이름을 설정하지만 휘발성입니다
  2. /etc /hostname 편집 - 다음 재부팅의 호스트 이름을 설정합니다.
  3. /etc /hosts 편집 - Sudo가 불만을 제기하지 않도록

나는 이것들을 스크립트에 넣고 요점으로 업로드했습니다.https://gist.github.com/mnebuerquo/5443532036af8b48995547e2817dba85

DNS 공급자를 혼란스럽게 하고 싶지 않다면 인스턴스에 별칭을 사용할 수 있습니다.Amazon이 EC2 인스턴스에 대한 별칭을 제공할 방법을 제공하지 않았다는 사실에 정말 놀랐습니다. AWS 관리 콘솔, 하지만 그 동안에는 무료 RightScale 별칭 기능을 원하는 경우 서비스를 이용하세요. Amazon 인스턴스 ID를 기억하는 것보다 훨씬 쉽습니다.

sudo hostname *yourdesiredhostnamehere*

sudo /etc/init.d/networking restart

그런 다음 호스트 이름이 변경됩니다. 내 서버에서 Apache 및 Postfix와 같은 다른 모든 서비스가 작동합니다. 서버는 Ubuntu 12.04 LT입니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top