web-dev-qa-db-ja.com

許可が拒否されました(publickey、gssapi-keyex、gssapi-with-mic)

インスタンスを作成したら、gcutilまたはsshを使用してログインできます。インスタンスの下部にリストされているsshリンクからコピー/貼り付けを試みましたが、同じエラーメッセージが表示されました。

44
user2416533

許可拒否エラーは、おそらくSSH秘密鍵認証が失敗したことを示しています。 gcutilが推奨するDebianまたはCentosのイメージから派生したイメージを使用していると仮定すると、おそらく次のいずれかです。

  1. Sshキーチェーンにsshキーがロードされておらず、-iオプションでプライベートsshキーを指定していません。
  2. ログインしようとしているアカウントの.ssh/authorized_keysのエントリと一致するsshキーはありません。
  3. マシンに存在しないアカウントにログインしようとしているか、rootとしてログインしようとしています。 (デフォルトのイメージは、直接ルートログインを無効にします。ほとんどのsshブルートフォース攻撃は、ルートまたは脆弱なパスワードを持つ他の既知のアカウントに対するものです。

インスタンスにどのアカウントとキーがあるかを判断する方法:

メタデータサーバーから 'sshKeys'メタデータエントリを取得し、必要に応じて(sudoersアクセスで)アカウントを作成する標準のCompute Engine CentosおよびDebianイメージで毎分実行されるスクリプトがあります。このスクリプトでは、sshKeysメタデータに「account:\ n」という形式のエントリが必要です。また、単一のアカウントのauthorized_keysに複数のエントリを入れることができます。 (または必要に応じて複数のアカウントを作成します)

イメージの最近のバージョンでは、このスクリプトはマシンのローカルログだけでなく、syslogを介してシリアルポートに出力を送信します。 gcutil getserialportoutputを介してシリアルポート出力の最後の1MBを読み取ることができます。これは、マシンがSSHを介して応答しない場合に便利です。

gcutil sshの仕組み:

gcutil sshは次のことを行います。

  1. $HOME/.ssh/google_compute_engineでキーを探し、ssh-keygenを呼び出して、存在しない場合は作成します。
  2. ${USER}:$(cat $HOME/.ssh/google_compute_engine.pub)のようなエントリのsshKeysのプロジェクトメタデータエントリの現在の内容をチェックします
  3. そのようなエントリが存在しない場合、プロジェクトメタデータにそのエントリを追加し、メタデータの変更が伝播し、VM内のスクリプトが新しいエントリを認識して新しいアカウントを作成するまで最大5分間待機します。
  4. 新しいエントリが配置されると(または、user:keyが既に存在する場合はすぐに)、gcutil sshは、VMに接続するためのいくつかのコマンドライン引数を使用してsshを呼び出します。

これが壊れる可能性のあるいくつかの方法、およびそれらを修正するためにできること:

  1. sshKeysを読み取るスクリプトを削除または変更した場合、コンソールとコマンドラインツールはsshKeysの変更が機能しないことを認識せず、上記の自動マジックの多くが破損する可能性があります。
  2. 生のsshを使用しようとしている場合、.ssh/google_compute_engineキーが見つからない場合があります。これを修正するには、gcutil sshを使用するか、ssh公開キー(.pubで終わる)をコピーして、コンソールのプロジェクトまたはインスタンスのsshKeysエントリに追加します。 (おそらくローカルマシンアカウント名と同じユーザー名を入力する必要もあります。)
  3. gcutil sshを使用したことがない場合、おそらく.ssh/google_compute_engine.pubファイルはありません。上記のように、ssh-keygenを使用して新しいSSH公開/秘密キーペアを作成し、sshKeysに追加するか、gcutil sshを使用してそれらを作成し、sshKeysを管理できます。
  4. 主にコンソールを使用している場合、sshKeysエントリのアカウント名がローカルのユーザー名と一致しない可能性があります。SSHに-l引数を指定する必要がある場合があります。
45
E. Anderson

ホームディレクトリと、接続先のホストのユーザーのホームディレクトリのアクセス許可が700に設定されていることを確認します(他のユーザーが.sshサブディレクトリを参照できないようにするために、ユーザーrwxを所有します)。

次に、〜/ .sshディレクトリーも700(ユーザーrwx)であり、authorized_keysが600(ユーザーrw)であることを確認します。

〜/ .sshディレクトリーの秘密鍵は600または400でなければなりません(ユーザーrwまたはユーザーr)

3
zephya

私はこの問題に長い間直面していました。最後に、それはssh-addの問題でした。 Git sshの資格情報は考慮されませんでした。

次のコマンドが動作する可能性があることを確認してください。

ssh-add
3
Somnath Muluk

同じ問題が発生し、何らかの理由でsshKeysがインスタンス上のユーザーと同期していませんでした。

-ssh_user = anotheruserをgcutilコマンドに追加して、別のユーザーを作成しました。

Gcutilはこのように見えました

gcutil --service_version="v1" --project="project"  --ssh_user=anotheruser ssh  --zone="us-central1-a" "inst1"
2
Reza Shahbazi

作成したばかりのコンピューティングエンジンVMに接続した後、同様のメッセージが表示されました[私のものは "Permission denied(publickey)"]。この投稿を読んだ後、もう一度試してみることにしました。

その時はうまくいった。したがって、2回目に動作する理由として考えられるのは3つです。

  • 2回目に接続すると問題が解決します(sshキーが最初に作成された後)、または
  • 作成された直後にコンピューティングエンジンに接続しようとすると、しばらくすると解決する問題が発生する可能性があります。または
  • この投稿を読むだけで問題は解決します

最後の可能性は低いと思う:)

1
erickCo

Ec2インスタンスをsshに接続しているときにこのエラーが見つかりました。間違ったユーザー名を書いた場合に発生します。

例えば。 Ubuntuではユーザー名としてubuntuを使用する必要があり、他ではec2-userを使用する必要があります。

1
dinesh rajput

この手順に従う必要があります https://cloud.google.com/compute/docs/instances/connecting-to-instance#generatesshkeypair

「許可が拒否されました(公開鍵)」次のコマンドssh -i ~/.ssh/my-ssh-key [USERNAME]@[IP_ADDRESS]を使用して、/ etc/ssh/sshd_configファイルを変更し、AllowUsers [USERNAME]行を追加する必要があります

次に、sshサービスを再起動します

service ssh restart

「ホストキーをロードできませんでした:/ etc/ssh/ssh_Host_ed25519_key」というメッセージが表示された場合、実行:ssh-keygen -A

最後にsshサービスを再起動します。

service ssh restart

0
Pablishe

ここでのコツは、-C(コメント)パラメーターを使用してGCEユーザーIDを指定することです。 Googleはこの変更を2018年の最後に導入したようです。

GCEインスタンスを所有するGoogleユーザーが[email protected](ログインユーザーIDとして使用します)の場合、(たとえば)とキーペアを生成します

ssh-keygen -b521 -t ecdsa -C myname -f mykeypair

Mykeypair.pubをインスタンスの公開キーリストに貼り付けると、キーのユーザーIDとして「myname」が表示されます。

これを設定すると、コマンドラインからssh、scpなどを使用できます。

0
Jonathan

ここからすべてに従いました: https://cloud.google.com/compute/docs/instances/connecting-to-instance#generatesshkeypair

しかし、それでもエラーが発生し、インスタンスメタデータのSSHキーが認識されませんでした。

解決策:sshキーに改行があるかどうかを確認します。 catを使用して公開キーをコピーすると、キーにインラインが追加され、キーが破損しました。改行を手動で確認して修正する必要がありました。

0
Skandy

回答を受け入れていないので、 PuTTY

enter image description here

ユーザー名の変更を許可せずに、ゲートウェイマシンでエラーとしてこの質問の件名を取得しました。

0
Cees Timmerman