1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WindowsのSSH接続でPermission Denied (publickey)エラーのときの対処

Posted at

はじめに

Windowsのサーバに、Windowsのクライアントから、鍵認証sshで接続しています。
ところが最近、チームのメンバーから

奴:なぜかとつぜん、接続できなくなっちゃった。なんにもしてないのにぃ…、接続できないとお仕事できないよぅ…ピエン
俺:なんもしてないのに壊れるわけないやんけ…

エラーの追求

とりあえずpowershellで接続してエラーメッセージを確認します。-vオプションを重ね掛けしてデバッグメッセージも確認します。

ssh <hostname> -l <username> -p <port> -i <privatekeypath> -v -v -v

passphraseを入力した後、以下のようなメッセージが出て拒絶されます

debug3: send packet: type 50
debug2: we sent as publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
<USER>@<HOST>:Permission denied (publickey)

通常はtype 52のパケットを受け取って、認証がうまく行くはずですが、type 51を受け取っています。
ともかくpublickeyのアクセス権限周りが怪しそうなので色々考えます。
ちなみにlinuxやmacだとchmodで権限変えられますが、icaclsで変更できます。
が、私は「エクスプローラが使えるのであればそっちの方がラクじゃん…」とおもってしまうぐらいITリテラシーの低い人なので察してください。

原因

よくよく確認したら、サーバ側の~/.ssh/のアクセス権限がいつの間にか変更されていました。
具体的には、『当該ユーザ以外のユーザも、~/.ssh/にアクセスできる状態』になってしまっていました。

きっと我思うに…

  1. 誰かがそのユーザの何かしらのドキュメントをエクスプローラで引っこ抜こうとした
  2. よう知らんけど管理者権限ユーザとか何かでログインして、C:\Users\<USERNAME>にアクセスしようとして、
  3. 知らんうちにディレクトリのアクセス権限を書き変えてしまって、
  4. それが子ディレクトリにも権限が継承されてしまって、
  5. 結果、~/.ssh/の権限も書き変わってしまったがために、
  6. Permission denied (publickey)の原因になった

のではないかと推測します。

復旧と対策

  1. ~/.ssh/をエクスプローラのプロパティで開き
  2. 「セキュリティタブ」から「詳細設定」を開いて
  3. 権限の継承を無効化し
  4. 不要なユーザの権限を削除する

おわりに

なんもしてなくないやんけ!いいかげんにしろ!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?