@@ -612,7 +612,48 @@ func ParseServers(
612612
613613 // IdentityFile
614614 if len (serv .IdentityFiles ) > 0 {
615- (* servers )[i ].IdentityFile = & serv .IdentityFiles [0 ]
615+ iFile , err := core .ExpandPath (serv .IdentityFiles [0 ])
616+ if err != nil {
617+ errConnect := & ErrConnect {
618+ Name : (* servers )[i ].Name ,
619+ User : (* servers )[i ].User ,
620+ Host : (* servers )[i ].Host ,
621+ Port : (* servers )[i ].Port ,
622+ Reason : err .Error (),
623+ }
624+ errConnects = append (errConnects , * errConnect )
625+ continue
626+ }
627+
628+ (* servers )[i ].IdentityFile = & iFile
629+
630+ // TODO: Update PubFile as well
631+ if _ , err := os .Stat (* (* servers )[i ].IdentityFile ); errors .Is (err , os .ErrNotExist ) {
632+ errConnect := & ErrConnect {
633+ Name : (* servers )[i ].Name ,
634+ User : (* servers )[i ].User ,
635+ Host : (* servers )[i ].Host ,
636+ Port : (* servers )[i ].Port ,
637+ Reason : err .Error (),
638+ }
639+ errConnects = append (errConnects , * errConnect )
640+ continue
641+ }
642+
643+ pubFile := * (* servers )[i ].IdentityFile + ".pub"
644+ if _ , err := os .Stat (pubFile ); errors .Is (err , os .ErrNotExist ) {
645+ errConnect := & ErrConnect {
646+ Name : (* servers )[i ].Name ,
647+ User : (* servers )[i ].User ,
648+ Host : (* servers )[i ].Host ,
649+ Port : (* servers )[i ].Port ,
650+ Reason : err .Error (),
651+ }
652+ errConnects = append (errConnects , * errConnect )
653+ continue
654+ } else {
655+ * (* servers )[i ].PubFile = pubFile
656+ }
616657 }
617658
618659 // HostName
0 commit comments