0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Ubuntu / SSH] Load key "/home/{name}/.ssh/id_rsa": error in libcrypto が発生した時の対策

0
Posted at

概要

いつも使っていた id_rsa ファイルの中身をコピーして、新しく用意したサーバに設置したところ、なぜかそのサーバでだけ ssh アクセスが失敗した。

今まで使っていたサーバやローカルマシンからは、全く同じ ssh 秘密鍵でアクセスできる状況だったので、鍵ファイルには問題はないことがわかっていた。

このような状況で、原因がわからず困っていたが、対処できたので方法を共有する。

エラー発生状況

私の場合は git を使っていてエラーになりました。
実際に発生したエラーは以下のようなもの。

$ git clone git@github.com:siruku6/repo_name.git
Cloning into 'repo_name'...
Load key "/home/ubuntu/.ssh/id_rsa": error in libcrypto
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

対策

手順として、以下の方法を取ります。

1. ファイルの正しさの確認

1-1. ファイル文字数の確認

以下のコマンドを、元のファイルとコピー後のファイル、両方に対して実行します。
結果が同じでなければ、当然おかしいですね。

wc -c ~/.ssh/id_rsa

私の場合は、ここで文字数に差が生じていたので、実はファイルに問題が発生していたことがわかりました。具体的には、問題のあるサーバに設置した id_rsa は「1文字だけ少ない」という状況でした。

1-2. ハッシュ値の確認

以下のコマンドを、元のファイルとコピー後のファイル、両方に対して実行します。
この結果も当然同じでなければ、コピー後のファイルに問題があるということになります。

sha256sum ~/.ssh/id_rsa

文字数が異なる場合は、こちらも異なる値になると思います。

1-3. ファイルの形式を確認

以下のコマンドで確認できます。

file ~/.ssh/id_rsa

1-4. 改行の統一

CRLF とか LF とか、そういうやつです。複数の環境間でコピーとかペーストしたりしていると、改行コードが変わることがあります。これを統一するためのコマンドです。

sed -i 's/\r$//' ~/.ssh/id_rsa

2. 最終チェック

2-1. パーミッションの変更

このコマンドで、秘密鍵として正しいパーミッション (600) を設定しましょう

chmod 600 ~/.ssh/id_rsa

ここまでの確認とパーミッション変更ができていたら、少なくとも、元のうまく使える鍵とコピー後の鍵は同一になっているはずです。

これでも問題が起きるようであれば、 ssh のパッケージや、ネットワークなど、環境側の問題を疑う必要があるかもしれません。(その場合は、エラーメッセージが変わっているかと思いますが)

参考記事

秘密鍵の最後に、改行が無い時に出るエラー

鍵ファイルの最後に、ひとつ改行が必要なようです。
文字数チェックで不一致があった方は、こちらを疑って対処しても良いかもしれません。
詳細は次の記事を確認してください( ˘ω˘)スヤァ...

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?