CentOS 7のクラウドイメージにssh経由でrootログイン

CentOS コミュニティはCentOS のクラウドイメージを公式に配布していますが、デフォルトではrootでログインできず、クラウド上でVM作成時にsshキーを登録し、centosユーザでログインする必要があります。rootのパスワードは非公開なので、centosユーザでログイン後、sudo を使ってパスワードを自分で設定すればよいのですが、これだけではssh経由ではログインできません。

ssh経由でrootログインするには以下の設定が必要になります。

1. /root/.ssh/authorized_keysの設定を変更する

authorized_keys には、

no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command="echo 'Please login as the user \"centos\" rather than the user \"root\".';echo;sleep 10" ssh-rsa AAAAB ・・・ (以下略)

という設定があるので、先頭からssh-rsaの前までの文字列を削除し、以下のようにします。

ssh-rsa AAAAB ・・・ (以下略)

これで、rootログイン時にcentosユーザでログインしろという警告が消えます。

2. sshサーバの設定を変更する

sshサーバの設定(/etc/ssh/sshd_config)でrootログインが許可されていないので、これを有効にします。

PermitRootLogin yes  # rootログインを許可する設定
PasswordAuthentication yes  # パスワードログインも許可する場合はこれを設定する

あとは、sshdを再起動すれば、rootでログインできるはずです。

# systemctl restart sshd

なお、インスタンス起動時に、centosユーザと同様sshの公開キーはrootユーザにも設定されているので、パスワードなしでログインできるはずです。

3. その他設定

インスタンスのスナップショットをとって、スナップショットからインスタンスを起動すると、1 の設定をまた実施する必要がでてきます。これは、cloudinit というツールがCentOS7のイメージにインストールされており、新しいインスタンス起動時に再度無効化されてしまうのが原因です。

同じテスト環境をスナップショットから複数起動したい場合など、この動作は結構不便なので、設定を無効化する方法を紹介します。

設定は、/etc/cloud/cloud.cfgのdisable_rootを以下のように変更します。

disable_root: 0

この設定をした後に、インスタンスのスナップショットをとれば、スナップショットから新たに起動したインスタンスにすぐにrootログインできます。

なお、これら設定はセキュリティが落ちるため、第三者がアクセスできる環境で使う場合はご注意ください。

タイトルとURLをコピーしました