diff options
Diffstat (limited to 'auth-options.c')
-rw-r--r-- | auth-options.c | 35 |
1 files changed, 26 insertions, 9 deletions
diff --git a/auth-options.c b/auth-options.c index f3d9c9df8..d4d22d7a5 100644 --- a/auth-options.c +++ b/auth-options.c | |||
@@ -54,9 +54,20 @@ int forced_tun_device = -1; | |||
54 | /* "principals=" option. */ | 54 | /* "principals=" option. */ |
55 | char *authorized_principals = NULL; | 55 | char *authorized_principals = NULL; |
56 | 56 | ||
57 | /* Throttle log messages. */ | ||
58 | int logged_from_hostip = 0; | ||
59 | int logged_cert_hostip = 0; | ||
60 | |||
57 | extern ServerOptions options; | 61 | extern ServerOptions options; |
58 | 62 | ||
59 | void | 63 | void |
64 | auth_start_parse_options(void) | ||
65 | { | ||
66 | logged_from_hostip = 0; | ||
67 | logged_cert_hostip = 0; | ||
68 | } | ||
69 | |||
70 | void | ||
60 | auth_clear_options(void) | 71 | auth_clear_options(void) |
61 | { | 72 | { |
62 | no_agent_forwarding_flag = 0; | 73 | no_agent_forwarding_flag = 0; |
@@ -284,10 +295,13 @@ auth_parse_options(struct passwd *pw, char *opts, char *file, u_long linenum) | |||
284 | /* FALLTHROUGH */ | 295 | /* FALLTHROUGH */ |
285 | case 0: | 296 | case 0: |
286 | free(patterns); | 297 | free(patterns); |
287 | logit("Authentication tried for %.100s with " | 298 | if (!logged_from_hostip) { |
288 | "correct key but not from a permitted " | 299 | logit("Authentication tried for %.100s with " |
289 | "host (host=%.200s, ip=%.200s).", | 300 | "correct key but not from a permitted " |
290 | pw->pw_name, remote_host, remote_ip); | 301 | "host (host=%.200s, ip=%.200s).", |
302 | pw->pw_name, remote_host, remote_ip); | ||
303 | logged_from_hostip = 1; | ||
304 | } | ||
291 | auth_debug_add("Your host '%.200s' is not " | 305 | auth_debug_add("Your host '%.200s' is not " |
292 | "permitted to use this key for login.", | 306 | "permitted to use this key for login.", |
293 | remote_host); | 307 | remote_host); |
@@ -511,11 +525,14 @@ parse_option_list(u_char *optblob, size_t optblob_len, struct passwd *pw, | |||
511 | break; | 525 | break; |
512 | case 0: | 526 | case 0: |
513 | /* no match */ | 527 | /* no match */ |
514 | logit("Authentication tried for %.100s " | 528 | if (!logged_cert_hostip) { |
515 | "with valid certificate but not " | 529 | logit("Authentication tried for %.100s " |
516 | "from a permitted host " | 530 | "with valid certificate but not " |
517 | "(ip=%.200s).", pw->pw_name, | 531 | "from a permitted host " |
518 | remote_ip); | 532 | "(ip=%.200s).", pw->pw_name, |
533 | remote_ip); | ||
534 | logged_cert_hostip = 1; | ||
535 | } | ||
519 | auth_debug_add("Your address '%.200s' " | 536 | auth_debug_add("Your address '%.200s' " |
520 | "is not permitted to use this " | 537 | "is not permitted to use this " |
521 | "certificate for login.", | 538 | "certificate for login.", |