У меня есть следующий код, чтобы проверить, работает ли SSH-соединение с данным хостом.
func IsSSHConnectionWorking(Host Host) bool {
cmd :=
fmt.Sprintf("ssh -o \"PasswordAuthentication no\" -i %s -p %s %s@%s", Host.IdentityFile, Host.Port, Host.User, Host.IP)
fmt.Printf("Connecting to %s with %s", Host.IP, cmd)
output, err := exec.Command("bash", "-c", cmd).Output()
if err != nil {
log.Println(err)
log.Printf("Failed to connect to Host: %s\n Error: %s", Host.IP, output)
return false
}
return true
}
Я заметил, что если параметр неверен, ошибка, возвращаемая обратно в программуравен exit status 255
, а вывод пуст.
Выполнение проблемной команды на самом CLI вернет user@host: Permission denied (publickey,password).
Есть ли способ перехватить это?