51

EC2 でいくつかの標準的な Fedora インスタンスを実行しています。Amazon によって割り当てられたインスタンスのパブリック ホスト名は奇妙で覚えにくいと感じています。それらを短いもの(赤/青/緑/など)に変更したいと思います。

これを行うことに何か欠点はありますか?また、再起動後も持続するように設定するにはどうすればよいですか?

ありがとう。

4

10 に答える 10

89

始める前に、実行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

2行目として。その後、Apache が起動しますが、FQDN が見つからないと不平を言いました。hostname --fqdn動作しなくなったことを確認しました。

次に相談したところman hostname、 を設定することはできますが、DNS ルックアップを介して が返されてhostnameいるように見えることがわかりました。FQDN

FQDN

このコマンドでは、FQDN (hostname --fqdn によって返される) または DNS ドメイン名 (dnsdomainname によって返される) を変更することはできません。システムの FQDN は、resolver(3) がホスト名に対して返す名前です。

技術的には: FQDN は、gethostname(2) によって返されるホスト名に対して getaddrinfo(3) が返す名前です。DNS ドメイン名は、最初のドットの後の部分です。

したがって、どのように変更できるかは、構成 (通常は /etc/host.conf 内) によって異なります。通常 (DNS または NIS の前にホスト ファイルが解析される場合)、/etc/hosts で変更できます。

システムを設定したり、システムをだまして FQDN を返すようにすることは可能かもしれないと思います。たとえば、ip-123-123-123-123.ec2.internalホスト名はそうですwebserverが、この時点で、それは価値があるよりも多くの問題のように見え始めました。 bashプロンプトは、将来的に多くのソフトウェアと構成の問題を引き起こす可能性があるため、あきらめることにしました.

また、多くの amazon ec2 インスタンスがcloud-initと呼ばれるものを使用していることも知りました。

cloud-init は、クラウド インスタンスの早期初期化を処理する Ubuntu パッケージです。これは、Ubuntu クラウド イメージにインストールされ、EC2 で利用可能な公式の Ubuntu イメージにもインストールされます。

それが構成するもののいくつかは次のとおりです。

  • デフォルトのロケールの設定
  • ホスト名の設定
  • ssh 秘密鍵を生成する
  • ユーザーがログインできるように、ssh キーをユーザーの .ssh/authorized_keys に追加する
  • エフェメラル マウント ポイントの設定

cloud-init の動作は、ユーザー データを介して構成できます。ユーザーデータは、インスタンスの起動時にユーザーが与えることができます。これは、ec2-run-instances への --user-data または --user-data-file 引数を介して行われます。

ホスト名がcloud-initでどのように構成されているかについて説明しているこれも見つけました:

EBS インスタンスでは、シャットダウンしてから起動すると、別の IP アドレスで終了していました。

ユーザーが /etc/hostname を元の値 (メタデータの「local-hostname」によってシード) から変更していない場合、cloud-init は再びホスト名を設定し、/etc/hostname を更新します。

ユーザーが /etc/hostname を変更した場合、それはユーザー管理のままになります。

さらに、/etc/cloud/cloud.cfg に True 値に設定された「preserve_hostname」値が含まれている場合、/etc/hostname は変更されません。

興味深い点は、ホスト名を変更しなくても、cloud-init パッケージによってホスト名が最新の状態に保たれることです。

他の誰かが回避策を持っているか、言及された問題のいくつかに対処し、ホスト名を変更したために ec2 インスタンスで何も壊れないことを安心させるのに役立つなら、私はそれを聞いてうれしいです.

于 2012-10-15T16:34:50.600 に答える
13

もう 1 つの方法は、単純に編集してマシンのニックネームを~/.bashrc先頭に追加することです。PS1

編集: おそらくより正確には、マシン全体、たとえば AWS Linux AMI (例) で (これをコンソールに貼り付けるか、任意のインストール .sh に追加します):

cat << EOF | sudo tee /etc/profile.d/ps1.sh
if [ "$PS1" ]; then
  PS1="[\u@myinst1:\l \t \! \W]\\$ "
fi
EOF
于 2012-11-20T20:06:09.983 に答える
12

Edit /etc/sysconfig/network as root.

Replace

HOSTNAME=localhost.localdomain

with

HOSTNAME=hostname.DOMAIN_NAME

Then, either reboot or run /etc/init.d/network restart The server then should report its name as a FQDN.

于 2011-02-28T08:49:53.847 に答える
7

このサイトから:

実行中のシステムでホスト名を変更する

どの Linux システムでも、コマンドを使用してそのホスト名を変更できますhostname(驚いたことに?)... 以下に、コマンド ライン ホスト名の簡単な使用法をいくつか示します。

$> hostname

パラメータを指定しないと、システムの現在のホスト名が出力されます。

$> hostname --fqd

システムの完全修飾ドメイン名 (または FQDN) が出力されます。

$> hostname NEW_NAME

は、システムのホスト名を に設定しNEW_NAMEます。

編集することもできます/etc/hostname(少なくとも Ubuntu では)。

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
于 2012-05-22T08:56:54.067 に答える
1

システムのホスト名をパブリック DNS 名に変更するには

パブリック DNS 名が既に登録されている場合は、この手順に従ってください

  1. 任意のテキスト エディターで構成ファイルを開き、/etc/sysconfig/networkHOSTNAME エントリを変更して、完全修飾ドメイン名 (webserver.mydomain.com など) を反映させます。

    HOSTNAME=webserver.mydomain.com
    
  2. インスタンスを再起動して、新しいホスト名を取得します。

    [ec2-user ~]$ sudo reboot
    
  3. インスタンスにログインし、ホスト名が更新されていることを確認します。プロンプトには新しいホスト名 (最初の「.」まで) が表示され、hostname コマンドには完全修飾ドメイン名が表示されます。

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

パブリック DNS 名なしでシステムのホスト名を変更するには

  1. /etc/sysconfig/network好みのテキスト エディターで構成ファイルを開き、HOSTNAME エントリを変更して、目的のシステム ホスト名 (webserver など) を反映させます。

    HOSTNAME=webserver.localdomain
    
  2. /etc/hostsお気に入りのテキスト エディターでファイルを開き、127.0.1.1 (DHCP システムの場合) または eth0 のアドレス (静的 IP システムの場合) で始まるエントリを追加して、以下の例と一致させ、独自のホスト名に置き換えます。(127.0.0.1 は localhost 行として残す必要があります。)

    127.0.0.1   localhost localhost.localdomain
    127.0.1.1   webserver.example.com webserver
    
  3. インスタンスを再起動して、新しいホスト名を取得します。

    [ec2-user ~]$ sudo reboot
    
  4. インスタンスにログインし、ホスト名が更新されていることを確認します。プロンプトには新しいホスト名 (最初の「.」まで) が表示され、hostname コマンドには完全修飾ドメイン名が表示されます。

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

注: ホスト名に影響を与えずにシェル プロンプトを変更することもできます。この AWS ドキュメントを参照してください。

于 2014-04-01T02:59:11.017 に答える
0

もちろん、独自のドメインがある場合はそれを行うことができます(Amazonホスト名を指すようにCNAMEを設定します)。そうでなければ、あなたは彼らがあなたに与えるもの(またはあなたがそれらの1つを設定した場合はElasticIP)でかなり立ち往生しています。

于 2009-03-02T18:41:15.160 に答える
0

私の Linux AMI (他のインスタンスのスナップショット) では、上記の式はどれも機能しませんでした。次に、ファイルの HOSTNAME フィールドを変更しただけです: /etc/init.d/modifyhostname で、通常の再起動を行いました。

于 2015-01-07T13:09:26.107 に答える
0

/etc/rc.local ソリューションは、基本的なホスト名に対しては機能しましたが、FQDN は提供しません。

于 2010-11-12T05:42:17.793 に答える
-1
sudo hostname *yourdesiredhostnamehere*

sudo /etc/init.d/networking restart

次に、ホスト名が変更されます。私のサーバーでは、apache や postfix などの他のすべてのサービスが動作します。サーバーはUbuntu 12.04 LTSです

于 2013-03-29T17:26:46.400 に答える