web-dev-qa-db-ja.com

経由でEC2サーバーにSSH接続するとエラーが発生するrootユーザーではなくec2-userユーザーとしてログインしてください

タイトルとしての質問。これはなぜですか、私はsshコマンドを使用しました。私は何を間違えていますか?

54
Tom

Klausが提案したようにec2-userとしてログインします:

ssh -i key.pem ec2-user@Host

...そして、Sudoを使用してコマンドを実行します。たとえば、rootが所有し、root権限が必要な/etc/hostsファイルを編集するには:Sudo nano /etc/hosts

または、Sudo suを実行してrootユーザーになります。

77
Till

デフォルトでは、rootユーザーはログインできませんが、他のユーザーが示すようにec2-userを使用できます。

ec2-userでログインしたら、rootに切り替えてSSH設定を変更します。

実行するrootユーザーになるには:

Sudo su -

SSHデーモン構成ファイル/etc/ssh/sshd_configを編集します。 viを使用して、PermitRootLoginエントリを次のものに置き換えます。

PermitRootLogin without-password

次を実行して、SSHデーモン構成をリロードします。

/etc/init.d/sshd reload

秘密鍵でログインするとコマンドが実行されるため、メッセージPlease login as the ec2-user user rather than root user.が表示されます。そのコマンドを削除するには、~/.ssh/authorized_keysファイルを編集し、commandオプションを削除します。行はキータイプ(たとえば、ssh-rsa)で始まる必要があります。

(*)自己責任で行ってください。設定を変更した後にログインできない場合に備えて、常にコンソールを開いたままにしておくことをお勧めします。

参考のために、manページを読むことができます:

man sshd_config
man sshd
64
Juan Hernandez

Amazon ec2でhadoopクラスターをセットアップするときに、同様の問題が発生しました。

ヘッドノードには、各ワーカー/スレーブノードへのルートsshアクセスが必要です。各スレーブノードのIPアドレス、プライベートアドレス、およびエイリアス名を/etc/hosts/ファイルに追加して、接続のエイリアスを作成しました。 (コマンドecho -e "`hostname -i`\t`hostname -f`\talias-name"を実行してそのデータを取得します。ここで、alias-nameは各ノードと呼ばれるものです(たとえば[headまたはn1)。すべてのノードの/etc/hostsファイル内のノード。

私が遭遇した問題は、ヘッドノードで最初のスレーブノードにsshするためにssh n1を入力すると、同じエラーメッセージが表示されることです。Please login as the use "ec2-user" rather than the user "root".ですから、調査を行った後、修正方法を見つけました。それ。

最初:

  • サーバーにsshします。ここでは、非ルート(ec2-user)アクセスは問題ありません。
  • 次に、su -をルートに移動します。ここでvi /etc/ssh/sshd_configと_PermitRootLogin yes行のコメントを外します。
  • Viエディターを終了します。
  • service sshd stop、次にservice sshd startと入力して、sshデーモンを再起動します。

秒:

  • さて、ここで私が掘らなければならなかった部分は、
  • vi /root/.ssh/authorized_keysを実行します
  • ssh-rsa.までのすべてをコメントアウトします#...の前に、ファイルのコンテンツの先頭にno-port-forwardingを置き、ssh-rsaでEnterキーを押して次へ移動します行(この方法では、バックトラックしたい場合に何かを削除する必要はありません)。
  • viエディターを終了します

これで、エラーメッセージが表示されることなく、rootにログインできるはずです。

また、クラスター設定にエイリアスを使用している場合;各ノードで同じ手順を繰り返します。最初にec2-userを使用してsshし、次に手順に従います。 IPアドレス、プライベートアドレス、およびエイリアス名情報を/etc/hostsファイルに追加すると、ssh n1などのエイリアス名を使用して各ノードのルートにsshできるようになります。

私が従ったチュートリアルはこちらです: https://www.youtube.com/watch?v=xrxQXfE7t9A

ただし、rootログインの問題については説明しませんでした。

お役に立てば幸いです!それは私のために働いた。

*私はセキュリティを懸念していることに留意してください。これは単に練習/開発セットアップです。

11
brno792

別のユーザー名でログインするよう求めているだけだと思います。 ec2-userというユーザーがいますか?もしそうなら、代わりにこれを試してください:

ssh -i mykey.pem [email protected]

解決しました!ルートキーファイルとユーザーキーファイルを比較してみてください)

diff /root/.ssh/authorized_keys /home/user/.ssh/authorized_keys

...そして見る

1

Windows PuTTYクライアントを介して「root」としてEC2インスタンスにアクセスしようとしたときに、同じ問題に直面しました。これが問題の解決方法です。

  1. SSH構成ファイルにアクセスして編集し、rootログインおよびpassword認証を許可します。

    • Ec2-userとしてログイン(デフォルトでは許可されています)
    • 以下のコマンドを入力してssh configを開きます

      Sudo vi /etc/ssh/sshd_config

    • Viを使用してSSH構成ファイルを以下のように編集します viエディターの使用方法

      PermitRootLogin yes(存在する場合は懇願で#を削除)

      PasswordAuthentication yes

  2. SSHを再起動します

    Sudo /etc/init.d/sshd restart

  3. ルートパスワードの変更/設定

    Sudo passwd root

    新しいパスワードを入力して再入力します(少なくとも8文字)

  4. 現在のセッションを終了してPuTTYを閉じます

    exit

  5. ルートとして再度ログインし、以前に設定したパスワードを入力してください。
1
Akhil MK

/ etc/ssh/sshd_configを編集し、これが設定されていることを確認します。

PasswordAuthenticationはい

次に、SSHをリロードします。

systemctl reload sshd.service

Ec2-user以外のユーザーとしてログインできるようになりました。

0
Mike Bobbitt