2010-11-20 23 views
52

質問としてタイトルを入力してください。 これはなぜですか、私はsshコマンドを使用しました: ssh -i mykey.pem [email protected] しかし、私はそのエラーを取得し、Googleで何も見つかりません。私は間違って何をしていますか?EC2サーバーへのSSHingエラーが表示されるrootユーザーではなくec2ユーザーのユーザーとしてログインしてください

+1

エラーメッセージが間違っていると混乱しました。「ec2-user」ではなく「user」としてログインしようとしました。そのミスを理解したら、うまくいった。 – offby1

+0

私はec2_userとしてログインしようとすると、passwdを要求します。もちろん、私は持っていません - 私はAMIについて何も知らないので、 – amphibient

答えて

73

あなたはec2-userとしてログイン:

ssh -i key.pem [email protected] 

を...そして、あなたはコマンドを実行するsudoを使用している場合は、代わりにこれを試してみてください。たとえば、/etc/hostsファイルを編集するには、rootが所有し、root権限が必要です(sudo nano /etc/hosts)。

それともrootユーザーになるsudo suを実行します。

+1

これはAmazon docsで書かれていますか?そこに情報を見つけることができませんでした。 – jayarjo

+1

http://ec2-downloads.s3.amazonaws.com/AmazonLinuxAMIUserGuide.pdf Till

+0

私はec2ユーザーとしてsudo suを実行すると、パスワードを尋ねます。私は自分でパスワードを設定していません。おそらくsudoersファイルと関係がありますか? –

7

私はそれだけで、別のユーザ名でログインするかを尋ねると思います。あなたはec2-userと呼ばれるユーザーを持っていますか?クラウスが提案されているよう

ssh -i mykey.pem [email protected] 
+0

私はそれをしたら、私はユーザー権限を持っていません – Tom

+0

@Tom suと入力してrootアカウントに変更する –

+0

このステップを自動化し、スクリプトからroot特権コマンドを実行する場合はどうなりますか? – OutputLogic

60

は、デフォルトではrootユーザーがログインを許可されていませんが、他の人によって示されるように、あなたはec2-userを使用することができます。

あなたがrootに切り替えるec2-userでログインし、SSHの設定を変更すると。

sudo su - 

編集SSHデーモンの設定ファイル/etc/ssh/sshd_config、例えば:あなたが実行し、rootユーザーになるために

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 sshd_config 
man sshd 
+11

コンソールを開いたままにすることを推奨する+1: – KaKa

+0

これはトリックです。 – user435216

+0

それは私が期待している答えです。ありがとう –

0

編集は、/ etc/ssh/sshd_config、そしてこれが設定されていることを確認します:あなたはmanページを読むことができます参考

PasswordAuthenticationをはい

次にSSHリロード:

systemctl reload sshd.service

ec2-user以外のユーザーとしてログインします。

10

のAmazon EC2上のHadoopクラスタを設定するとき、私は同様の問題に遭遇しました。

私のヘッドノードは、各ワーカー/スレーブノードへのroot sshアクセス権を持っている必要があります。ファイルに各スレーブノードのIPアドレス、プライベートアドレス、エイリアス名を追加して接続のエイリアスを作成しました。 (私はalias-nameが、私は、各ノード(headまたは例えばn1)を呼んでwhereコマンドecho -e "`hostname -i`\t`hostname -f`\talias-name"を実行して、そのデータを取得する。そして、私はすべてのノードの/etc/hostsファイル内の各ノードのためにその出力を置く。

問題私が遭遇してきましたいくつかの研究を行った後、私はそれを修正する方法を考え出したのでPlease login as the use "ec2-user" rather than the user "root".

は、まず:私の頭のノードで私の最初のスレーブノードにsshをしながら、私はSSHのN1を入力すると、私は同じエラーメッセージを取得することです。:

  • あなたのサーバーにssh。非ルート(ec2ユ​​ーザー)アクセスはここでは問題ありません。
  • 次に、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に入力して に移動します(この方法では、 バックトラックしたい場合は何かを削除する必要があります)。

  • 終了viエディタは、今、あなたは、そのエラーメッセージがポップアップすることなく、ルートにログインすることができるはずです。

    また、クラスタ設定にエイリアスを使用している場合は、各ノードで同じ手順を繰り返します。 ec2ユーザーを使用する場合は、最初にsshを実行し、手順に従います。 IPアドレス、プライベートアドレス、エイリアス名の情報を/etc/hostsファイルに追加した後、エイリアス名(例:ssh n1)を使用して各ノードのルートにsshできるはずです。

    私は、その後のチュートリアルはここにある:https://www.youtube.com/watch?v=xrxQXfE7t9A

    しかし、それはrootログインの問題を議論するdidntの。

    希望に役立ちます!それは私のために働いた。

    *私は懸念しているセキュリティを取っていたことを覚えておいてください。これは単なる実践的な/ devの設定です。

  • +0

    ありがとう:)私は、ポート80を私のローカルマシンに転送するためにrootとしてログインする必要がありました。これはec2ユーザーとしては行えません。 – necromancer

    +0

    第2ステップはトリックです。これは受け入れられた答えでなければなりません! – stonyau

    +0

    これは実用的なaws ec2の答えです。これはありがとう! –

    関連する問題