-/*
-
-servconf.h
+/* $OpenBSD: servconf.h,v 1.65 2003/09/01 18:15:50 markus Exp $ */
-Author: Tatu Ylonen <ylo@cs.hut.fi>
+/*
+ * Author: Tatu Ylonen <ylo@cs.hut.fi>
+ * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
+ * All rights reserved
+ * Definitions for server configuration data and for the functions reading it.
+ *
+ * As far as I am concerned, the code I have written for this software
+ * can be used freely for any purpose. Any derived versions of this
+ * software must be clearly marked as such, and if the derived work is
+ * incompatible with the protocol description in the RFC file, it must be
+ * called by a name other than "ssh" or "Secure Shell".
+ */
-Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
- All rights reserved
+#ifndef SERVCONF_H
+#define SERVCONF_H
-Created: Mon Aug 21 15:35:03 1995 ylo
+#define MAX_PORTS 256 /* Max # ports. */
-Definitions for server configuration data and for the functions reading it.
+#define MAX_ALLOW_USERS 256 /* Max # users on allow list. */
+#define MAX_DENY_USERS 256 /* Max # users on deny list. */
+#define MAX_ALLOW_GROUPS 256 /* Max # groups on allow list. */
+#define MAX_DENY_GROUPS 256 /* Max # groups on deny list. */
+#define MAX_SUBSYSTEMS 256 /* Max # subsystems. */
+#define MAX_HOSTKEYS 256 /* Max # hostkeys. */
-*/
+/* permit_root_login */
+#define PERMIT_NOT_SET -1
+#define PERMIT_NO 0
+#define PERMIT_FORCED_ONLY 1
+#define PERMIT_NO_PASSWD 2
+#define PERMIT_YES 3
-/* RCSID("$Id$"); */
-#ifndef SERVCONF_H
-#define SERVCONF_H
+typedef struct {
+ u_int num_ports;
+ u_int ports_from_cmdline;
+ u_short ports[MAX_PORTS]; /* Port number to listen on. */
+ char *listen_addr; /* Address on which the server listens. */
+ struct addrinfo *listen_addrs; /* Addresses on which the server listens. */
+ char *host_key_files[MAX_HOSTKEYS]; /* Files containing host keys. */
+ int num_host_key_files; /* Number of files for host keys. */
+ char *pid_file; /* Where to put our pid */
+ int server_key_bits;/* Size of the server key. */
+ int login_grace_time; /* Disconnect if no auth in this time
+ * (sec). */
+ int key_regeneration_time; /* Server key lifetime (seconds). */
+ int permit_root_login; /* PERMIT_*, see above */
+ int ignore_rhosts; /* Ignore .rhosts and .shosts. */
+ int ignore_user_known_hosts; /* Ignore ~/.ssh/known_hosts
+ * for RhostsRsaAuth */
+ int print_motd; /* If true, print /etc/motd. */
+ int print_lastlog; /* If true, print lastlog */
+ int x11_forwarding; /* If true, permit inet (spoofing) X11 fwd. */
+ int x11_display_offset; /* What DISPLAY number to start
+ * searching at */
+ int x11_use_localhost; /* If true, use localhost for fake X11 server. */
+ char *xauth_location; /* Location of xauth program */
+ int strict_modes; /* If true, require string home dir modes. */
+ int keepalives; /* If true, set SO_KEEPALIVE. */
+ char *ciphers; /* Supported SSH2 ciphers. */
+ char *macs; /* Supported SSH2 macs. */
+ int protocol; /* Supported protocol versions. */
+ int gateway_ports; /* If true, allow remote connects to forwarded ports. */
+ SyslogFacility log_facility; /* Facility for system logging. */
+ LogLevel log_level; /* Level for system logging. */
+ int rhosts_rsa_authentication; /* If true, permit rhosts RSA
+ * authentication. */
+ int hostbased_authentication; /* If true, permit ssh2 hostbased auth */
+ int hostbased_uses_name_from_packet_only; /* experimental */
+ int rsa_authentication; /* If true, permit RSA authentication. */
+ int pubkey_authentication; /* If true, permit ssh2 pubkey authentication. */
+ int kerberos_authentication; /* If true, permit Kerberos
+ * authentication. */
+ int kerberos_or_local_passwd; /* If true, permit kerberos
+ * and any other password
+ * authentication mechanism,
+ * such as SecurID or
+ * /etc/passwd */
+ int kerberos_ticket_cleanup; /* If true, destroy ticket
+ * file on logout. */
+ int gss_authentication; /* If true, permit GSSAPI authentication */
+ int gss_cleanup_creds; /* If true, destroy cred cache on logout */
+ int password_authentication; /* If true, permit password
+ * authentication. */
+ int kbd_interactive_authentication; /* If true, permit */
+ int challenge_response_authentication;
+ int permit_empty_passwd; /* If false, do not permit empty
+ * passwords. */
+ int permit_user_env; /* If true, read ~/.ssh/environment */
+ int use_login; /* If true, login(1) is used */
+ int compression; /* If true, compression is allowed */
+ int allow_tcp_forwarding;
+ u_int num_allow_users;
+ char *allow_users[MAX_ALLOW_USERS];
+ u_int num_deny_users;
+ char *deny_users[MAX_DENY_USERS];
+ u_int num_allow_groups;
+ char *allow_groups[MAX_ALLOW_GROUPS];
+ u_int num_deny_groups;
+ char *deny_groups[MAX_DENY_GROUPS];
-#define MAX_ALLOW_USERS 256 /* Max # users on allow list. */
-#define MAX_DENY_USERS 256 /* Max # users on deny list. */
-#define MAX_ALLOW_GROUPS 256 /* Max # groups on allow list. */
-#define MAX_DENY_GROUPS 256 /* Max # groups on deny list. */
+ u_int num_subsystems;
+ char *subsystem_name[MAX_SUBSYSTEMS];
+ char *subsystem_command[MAX_SUBSYSTEMS];
-typedef struct
-{
- int port; /* Port number to listen on. */
- struct in_addr listen_addr; /* Address on which the server listens. */
- char *host_key_file; /* File containing host key. */
- int server_key_bits; /* Size of the server key. */
- int login_grace_time; /* Disconnect if no auth in this time (sec). */
- int key_regeneration_time; /* Server key lifetime (seconds). */
- int permit_root_login; /* If true, permit root login. */
- int ignore_rhosts; /* Ignore .rhosts and .shosts. */
- int quiet_mode; /* If true, don't log anything but fatals. */
- int fascist_logging; /* Perform very verbose logging. */
- int print_motd; /* If true, print /etc/motd. */
- int check_mail; /* If true, check for new mail. */
- int x11_forwarding; /* If true, permit inet (spoofing) X11 fwd. */
- int x11_display_offset; /* What DISPLAY number to start searching at */
- int strict_modes; /* If true, require string home dir modes. */
- int keepalives; /* If true, set SO_KEEPALIVE. */
- SyslogFacility log_facility; /* Facility for system logging. */
- int rhosts_authentication; /* If true, permit rhosts authentication. */
- int rhosts_rsa_authentication;/* If true, permit rhosts RSA authentication.*/
- int rsa_authentication; /* If true, permit RSA authentication. */
-#ifdef KRB4
- int kerberos_authentication; /* If true, permit Kerberos authentication. */
- int kerberos_or_local_passwd; /* If true, permit kerberos and any other
- password authentication mechanism, such
- as SecurID or /etc/passwd */
- int kerberos_ticket_cleanup; /* If true, destroy ticket file on logout. */
-#endif
-#ifdef AFS
- int kerberos_tgt_passing; /* If true, permit Kerberos tgt passing. */
- int afs_token_passing; /* If true, permit AFS token passing. */
-#endif
- int password_authentication; /* If true, permit password authentication. */
-#ifdef SKEY
- int skey_authentication; /* If true, permit s/key authentication. */
-#endif
- int permit_empty_passwd; /* If false, do not permit empty passwords. */
- int use_login; /* If true, login(1) is used */
- unsigned int num_allow_users;
- char *allow_users[MAX_ALLOW_USERS];
- unsigned int num_deny_users;
- char *deny_users[MAX_DENY_USERS];
- unsigned int num_allow_groups;
- char *allow_groups[MAX_ALLOW_GROUPS];
- unsigned int num_deny_groups;
- char *deny_groups[MAX_DENY_GROUPS];
-} ServerOptions;
+ int max_startups_begin;
+ int max_startups_rate;
+ int max_startups;
+ char *banner; /* SSH-2 banner message */
+ int use_dns;
+ int client_alive_interval; /*
+ * poke the client this often to
+ * see if it's still there
+ */
+ int client_alive_count_max; /*
+ * If the client is unresponsive
+ * for this many intervals above,
+ * disconnect the session
+ */
-/* Initializes the server options to special values that indicate that they
- have not yet been set. */
-void initialize_server_options(ServerOptions *options);
+ char *authorized_keys_file; /* File containing public keys */
+ char *authorized_keys_file2;
+ int use_pam; /* Enable auth via PAM */
+} ServerOptions;
-/* Reads the server configuration file. This only sets the values for those
- options that have the special value indicating they have not been set. */
-void read_server_config(ServerOptions *options, const char *filename);
+void initialize_server_options(ServerOptions *);
+void read_server_config(ServerOptions *, const char *);
+void fill_default_server_options(ServerOptions *);
+int process_server_config_line(ServerOptions *, char *, const char *, int);
-/* Sets values for those values that have not yet been set. */
-void fill_default_server_options(ServerOptions *options);
-#endif /* SERVCONF_H */
+#endif /* SERVCONF_H */