decoding

`raiseUnlessLoaded’: OpenSSH keys only supported if ED25519 is available (NotImplementedError)

Reading Time: < 1 minuteFavoriteLoadingAggiungi ai preferiti

`raiseUnlessLoaded’: OpenSSH keys only supported if ED25519 is available (NotImplementedError) è un errore che può presentarsi quando si esegue il deploy di codice con Capistrano.

Su OSX l’errore completo può essere esattamente o simile al seguente

 

/Library/Ruby/Gems/2.6.0/gems/net-ssh-6.1.0/lib/net/ssh/authentication/ed25519_loader.rb:21:in `raiseUnlessLoaded': 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 64 total gem(s)
Checked in 'GEM_PATH=/Users/wallaceer/.gem/ruby/2.6.0:/Library/Ruby/Gems/2.6.0:/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/gems/2.6.0', execute `gem env` for more information"
(Backtrace restricted to imported tasks)
cap aborted!

Potremmo pensare che l’errore sia generato dalla mancanza di una qualche libreria, ma leggendo attentamente il log, mostrato sopra, ci rendiamo conto che in realtà si tratta di un qualche problema con OpenSSH.

In effetti l’origine dell’errore sta nella mancanza dello scambio chiave ssh tra il nostro client e il server.

Per risolvere dobbiamo aggiungere la nostra chiave ssh al keychain e configurare ssh affinchè utilizzi sempre keychain, in questo modo

1. Aggiungiamo la chiave privata al keychain, che ipotizziamo sia id_rsa

ssh-add -K ~/.ssh/id_rsa
Su OSX ssh-add --apple-use-keychain ~/.ssh/id_rsa

2. Creiamo il file config per ssh in cui inseriremo l’impostazione relativa all’utilizzo, sempre, della chiave

vim ~/.ssh/config

3) Inseriamo nel file config l’impostazione per l’utilizzo, sempre, della chiave

Host *
   UseKeychain yes
   AddKeysToAgent yes
   IdentityFile ~/.ssh/id_rsa