@@ -241,17 +241,9 @@ func (d *Driver) Create() error {
241
241
return errors .Wrap (err , "could not read ssh public key" )
242
242
}
243
243
244
- // Try to find a key with the same Fingerprint
245
- pubkey , _ , _ , _ , err := ssh .ParseAuthorizedKey (buf )
246
- if err != nil {
247
- return errors .Wrap (err , "could not parse ssh public key" )
248
- }
249
-
250
- fp := ssh .FingerprintLegacyMD5 (pubkey )
251
-
252
- key , _ , err := d .getClient ().SSHKey .GetByFingerprint (context .Background (), fp )
253
- if err != nil {
254
- log .Debugf ("SSH key not found in Hetzner. Uploading..." )
244
+ key , err := d .getRemoteKeyWithSameFingerprint (buf )
245
+ if key == nil {
246
+ log .Infof ("SSH key not found in Hetzner. Uploading..." )
255
247
256
248
keyopts := hcloud.SSHKeyCreateOpts {
257
249
Name : d .GetMachineName (),
@@ -621,6 +613,21 @@ func (d *Driver) getKey() (*hcloud.SSHKey, error) {
621
613
return stype , nil
622
614
}
623
615
616
+ func (d * Driver ) getRemoteKeyWithSameFingerprint (pubkey_byte []byte ) (* hcloud.SSHKey , error ) {
617
+ pubkey , _ , _ , _ , err := ssh .ParseAuthorizedKey (pubkey_byte )
618
+ if err != nil {
619
+ return nil , errors .Wrap (err , "could not parse ssh public key" )
620
+ }
621
+
622
+ fp := ssh .FingerprintLegacyMD5 (pubkey )
623
+
624
+ remotekey , _ , err := d .getClient ().SSHKey .GetByFingerprint (context .Background (), fp )
625
+ if err != nil {
626
+ return remotekey , errors .Wrap (err , "could not get sshkey by fingerprint" )
627
+ }
628
+ return remotekey , nil
629
+ }
630
+
624
631
func (d * Driver ) getServerHandle () (* hcloud.Server , error ) {
625
632
if d .cachedServer != nil {
626
633
return d .cachedServer , nil
0 commit comments