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?

net-sshにおいてED25519を使ったキーで認証するときの注意点

0
Posted at

環境

Ubuntu20.4
Ruby2.7

はじめに

SSHの認証で利用していた鍵をRSAからED25519に変更して作り直したところ、Rubyで利用しているnet-sshのgemでエラーが発生したためそのトラブルシューティング記事です。

内容

エラー内容は次の通りです。

err.rb
OpenSSH keys only supported if ED25519 is available (NotImplementedError)
net-ssh requires the following gems for ed25519 support:
 * ed25519 (>= 1.2, < 2.0)
 * bcrypt_pbkdf (>= 1.0, < 2.0)
See https://github.com/net-ssh/net-ssh/issues/565 for more information
Gem::MissingSpecError : "Could not find 'ed25519' (~> 1.2) among 70 total gem(s)
Checked in 'GEM_PATH=/root/.gem/ruby/2.7.0:/var/lib/gems/2.7.0:/usr/lib/ruby/gems/2.7.0:/usr/share/rubygems-integration/2.7.0:/usr/share/rubygems-integration/all:/usr/lib/x86_64-linux-gnu/rubygems-integration/2.7.0', execute `gem env` for more information"

net-sshを使ってSSH接続する場合、RSAを使って作成したキーで認証する分には普通に通るのだが、ED25519を使って作成したキーで認証を行う場合、別途、ed25519とbcrypt_pbkdfというgemの依存関係が浮上してきます。

ed25519とbcrypt_pbkdfは、net-sshをgem installでインストールしただけでは標準では入ってきません。

RSAがまだ一般的でED25519の方はまだ市民権を得ていないからなのでしょうか。セキュリティのことを考えると、RSAを使っているようであれば、早いことED25519に切り替えた方がいいことは確かです。

次のようにed25519とbcrypt_pbkdfをそれぞれインストールします。エラーメッセージの中にバージョンの指定が記載されていたため、言われた通りのバージョンでインストールしました。

指定されたバージョンの範囲以内であればどのバージョンでもいいと思いますが、一応、一番大きいマイナーバージョンでインストールしました。

cmd.sh
$gem install ed25519 -v '1.2.4'
$gem install bcrypt_pbkdf -v '1.0.0'

インストールされたことを確認します。

cmd.sh
$gem list | grep -E '^ed|^bcry'
bcrypt_pbkdf (1.0.0)
ed25519 (1.2.4)

この後、Rubyのプログラムを流したら、エラーは回避されました。

補足

この記事を書いた時点のnet-sshの最新バージョンは7.3.0です。7.3.0版のnet-sshをインストールしても標準でed2559、bcrypt_pbkdfが一緒にインストールされるようなことはありません。いずれ、ED25519が市民権を得た日にはRuntime依存関係として一緒にインストールされる日もくるかなと想定しております。

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?