sshd - secure shell daemon sshd.sunssh



  • System Administration Commands					      sshd(1M)
    
    
    
    NAME
           sshd - secure shell daemon
    
    SYNOPSIS
           sshd [-deiqtD46]	[-b bits] [-f config_file]
    	    [-g	login_grace_time] [-h host_key_file]
    	    [-h	PKCS#11	URI]
    	    [-p	port] [-V client_protocol_id]
    
    
    DESCRIPTION
           The  sshd  (Secure  Shell  daemon)  is  the  daemon program for ssh(1).
           Together	these programs replace rlogin  and  rsh,  and  provide	secure
           encrypted  communications  between two untrusted	hosts over an insecure
           network.	The programs are intended to be	as easy	to install and use  as
           possible.
    
    
           sshd  is	the daemon that	listens	for connections	from clients. It forks
           a new daemon for	each incoming connection. The  forked  daemons	handle
           key  exchange,  encryption, authentication, command execution, and data
           exchange.
    
    
           This implementation of sshd supports SSH	protocol version 2 only.
    
       SSH Protocol	Version	1
           This protocol version is	no longer supported in the daemon program.  It
           is supported only in the	client.	See ssh(1) manual page for more	infor-
           mation.
    
       SSH Protocol	Version	2
           Each host has a host-specific DSA/RSA key used to  identify  the	 host.
           Forward	security  is  provided through a Diffie-Hellman	key agreement.
           This key	agreement results in a shared session key.  The	 rest  of  the
           session	  is   encrypted   using   a   symmetric   cipher,   currently
           128/192/256-bit AES CBC	or  CTR,  128/256-bit  ARCFOUR,	 Blowfish,  or
           3DES..  The  client  selects the	encryption algorithm to	use from those
           offered by the server.  Additionally,  session  integrity  is  provided
           through	a  cryptographic message authentication	code (hmac-sha1, hmac-
           sha2-256, hmac-sha2-256-96, hmac-sha2-512, hmac-sha2-512-96,  or	 hmac-
           md5).
    
    
           Protocol	 version  2  provides  a  public key based user	authentication
           method (PubKeyAuthentication) GSS-API based user	 authentication,  con-
           ventional  password authentication, and a generic prompt/reply protocol
           for password-based authentication.
    
       Command Execution and Data Forwarding
           If the client successfully authenticates	itself,	a dialog for preparing
           the session is entered. At this time the	client can request things like
           allocating a pseudo-tty,	forwarding X11 connections, forwarding	TCP/IP
           connections, or forwarding the authentication agent connection over the
           secure channel.
    
    
           Finally,	the client either requests a shell or execution	of a  command.
           The  sides  then	enter session mode. In this mode, either side may send
           data at any time, and such data is forwarded to/from the	shell or  com-
           mand on the server side,	and the	user terminal on the client side.
    
    
           When  the  user program terminates and all forwarded X11	and other con-
           nections	have been closed, the server sends command exit	status to  the
           client, and both	sides exit.
    
    
           sshd  can be configured using command-line options or the configuration
           file  /etc/ssh/ssh_config,  described  in  ssh_config(4).  Command-line
           options override	values specified in the	configuration file.
    
    
           sshd  rereads  its configuration	file when it receives a	hangup signal,
           SIGHUP, by executing itself with	the name it was	started	as,  that  is,
           /usr/lib/ssh/sshd.
    
       Host	Access Control
           The  sshd daemon	uses TCP Wrappers to restrict access to	hosts. It uses
           the service name	of sshd	for hosts_access(). For	 more  information  on
           TCP Wrappers see	tcpd(1M) and hosts_access(3) man pages,	which are part
           of the SUNWsfman	package	(they are not SunOS man	pages).	 TCP  wrappers
           binaries,  including  libwrap,  are in security/tcp-wrapper, a required
           package for service/network/ssh,	the package containing sshd.
    
    OPTIONS
           The options for sshd are	as follows:
    
           -b bits
    
    	   Specifies the number	of bits	in the	server	key  (the  default  is
    	   768).
    
    
           -d
    
    	   Debug  mode.	 The  server  sends verbose debug output to the	system
    	   log,	and does not put itself	in the	background.  The  server  also
    	   will	 not fork and will only	process	one connection.	This option is
    	   only	intended for debugging for the	server.	 Multiple  -d  options
    	   increase the	debugging level. Maximum is 3.
    
    
           -e
    
    	   When	 this  option is specified, sshd will send the output to stan-
    	   dard	error instead of to the	system log.
    
    
           -f configuration_file
    
    	   Specifies the name  of  the	configuration  file.  The  default  is
    	   /etc/ssh/sshd_config. sshd refuses to start if there	is no configu-
    	   ration file.
    
    
           -g login_grace_time
    
    	   Gives the grace time	for clients to	authenticate  themselves  (the
    	   default  is	300  seconds). If the client fails to authenticate the
    	   user	within this number of  seconds,	 the  server  disconnects  and
    	   exits. A value of zero indicates no limit.
    
    
           -h host_key_file
    
    	   Specifies a file from which a host key is read. This	option must be
    	   given if sshd is not	run as root (as	the normal host	key files  are
    	   normally   not  readable  by	 anyone	 but  root).  The  default  is
    	   /etc/ssh/ssh_host_key    for	   protocol	version	    1,	   and
    	   /etc/ssh/ssh_host_rsa_key  and /etc/ssh/ssh_host_dsa_key for	proto-
    	   col version 2. It is	possible to have multiple host key  files  for
    	   the different protocol versions and host key	algorithms.
    
    
           -h PKCS#11 URI
    
    	   Instead  of	working	 with a	host key file, work with a certificate
    	   and a private key stored in the PKCS#11 token. See also Using X.509
    	   Certificates	section	below.
    
    
           -i
    
    	   Specifies  that  sshd is being run from inetd. sshd is normally not
    	   run from inetd because it needs to generate the server  key	before
    	   it  can  respond  to	the client, and	this may take tens of seconds.
    	   Clients would have to wait too long	if  the	 key  was  regenerated
    	   every  time.	However, with small key	sizes (for example, 512) using
    	   sshd	from inetd may be reasonable.
    
    
           -o option
    
    	   Can be used to specify options in the format	used in	the configura-
    	   tion	 file.	This  is useful	for specifying options for which there
    	   are no separate command-line	flags.
    
    
           -p port
    
    	   Specifies the port on which the server listens for connections (the
    	   default is 22).
    
    
           -q
    
    	   Quiet  mode.	Nothing	is sent	to the system log. Normally the	begin-
    	   ning, authentication, and termination of each connection is logged.
    
    
           -t
    
    	   Test	mode. Check only the validity of the  configuration  file  and
    	   the	sanity	of the keys. This is useful for	updating sshd reliably
    	   as configuration options might change.
    
    
           -D
    
    	   When	this option is specified sshd does not	detach	and  does  not
    	   become a daemon. This allows	easy monitoring	of sshd.
    
    
           -4
    
    	   Forces sshd to use IPv4 addresses only.
    
    
           -6
    
    	   Forces sshd to use IPv6 addresses only.
    
    
    EXTENDED DESCRIPTION
       authorized_keys File	Format
           The $HOME/.ssh/authorized_keys file lists the public keys that are per-
           mitted for public key authentication (PubkeyAuthentication) in protocol
           version	2.  The	AuthorizedKeysFile configuration option	can be used to
           specify an alternative file.
    
    
           Each line of the	file contains one key (empty lines and lines  starting
           with a hash mark	[#] are	ignored	as comments).
    
    
           For  each RSA key for protocol version 1, the file consists of the fol-
           lowing space-separated fields:
    
    	 options  bits	exponent  modulus  comment
    
    
    
    
           For the public key for protocol version 2, the  file  consists  of  the
           following space-separated fields:
    
    	 options key-type base64-encoding-key comment
    
    
    
    
           For protocol version 2, key-type	is one of ssh-rsa or ssh-dsa.
    
    
           The  options  field  is optional; its presence is determined by whether
           the line	starts with a number. (The  options field never	starts with  a
           number.)	 The  bits, exponent, and modulus fields give the RSA key; the
           comment field is	a convenient place for you to identify the key.
    
    
           Lines in	this file are usually several hundred bytes long  (because  of
           the  size  of  the  key modulus). You will find it very inconvenient to
           type them in; instead, copy the public key file and edit	it.
    
    
           Permissions of this file	must be	set so that it is not world  or	 group
           writable. See the StrictModes option of sshd_config(4).
    
    
           The  options  (if present) consist of comma-separated option specifica-
           tions. No spaces	are permitted, except within double quotes.  The  fol-
           lowing option specifications are	supported:
    
           from="pattern-list"
    
    	   Specifies  that,  in	 addition  to  public  key authentication, the
    	   canonical name of the remote	host must be present in	the comma-sep-
    	   arated  list	of patterns (`*' and `?' serve as wildcards). The list
    	   can also contain negated patterns by	prefixing  the	patterns  with
    	   `!'.	 If the	canonical host name matches a negated pattern, the key
    	   is not accepted.
    
    	   The purpose of this option is to give you the option	of  increasing
    	   security:  public  key  authentication by itself does not trust the
    	   network or name servers or anything but the key. However, if	 some-
    	   one	manages	 to  steal the key, possession of the key would	permit
    	   the intruder	to log in from anywhere	 in  the  world.  This	option
    	   makes  using	 a stolen key more difficult, because name servers and
    	   routers would have to be compromised, in addition to	just the key.
    
    
           command="command"
    
    	   Specifies that the command is executed whenever this	 key  is  used
    	   for	authentication.	 The  command supplied by the user (if any) is
    	   ignored. The	command	is run on a pty	if the client requests a  pty;
    	   otherwise  it  is  run  without a tty. If an	8-bit clean channel is
    	   required, one must not request a pty	or should specify no-pty.  You
    	   can include a quote in the command by escaping it with a backslash.
    	   This	option might be	useful to restrict certain  public  keys  from
    	   performing  a  specific operation. An example is a key that permits
    	   remote backups but nothing else. Note that the client  can  specify
    	   TCP/IP  and/or X11 forwarding unless	they are explicitly prohibited
    	   from	doing so. Also note that this option applies  to  shell,  com-
    	   mand, or subsystem execution.
    
    
           environment="NAME=value"
    
    	   Specifies that the string NAME=value	is to be added to the environ-
    	   ment	when logging in	using this key.	Environment variables set this
    	   way	override other default environment values. Multiple options of
    	   this	type are permitted.  Environment  processing  is  disabled  by
    	   default and is controlled via the PermitUserEnvironment option.
    
    
           no-port-forwarding
    
    	   Forbids TCP/IP forwarding when this key is used for authentication.
    	   Any port forward requests by	the client will	return an error.  This
    	   might be used, for example, in connection with the command option.
    
    
           no-X11-forwarding
    
    	   Forbids  X11	 forwarding  when this key is used for authentication.
    	   Any X11 forward requests by the client will return an error.
    
    
           no-agent-forwarding
    
    	   Forbids authentication agent	forwarding when	this key is  used  for
    	   authentication.
    
    
           no-pty
    
    	   Prevents tty	allocation (a request to allocate a pty	will fail).
    
    
           permitopen="host:port"
    
    	   Limit local ssh -L port forwarding such that	it can connect only to
    	   the specified host and port.	IPv6 addresses can be  specified  with
    	   an  alternative  syntax:  host/port.	You can	invoke multiple	permi-
    	   topen options, with each instance separated by a comma. No  pattern
    	   matching is performed on the	specified hostnames. They must be lit-
    	   eral	domains	or addresses.
    
    
       ssh_known_hosts File	Format
           The /etc/ssh/ssh_known_hosts and	$HOME/.ssh/known_hosts	files  contain
           host  public  keys  for all known hosts.	The global file	should be pre-
           pared by	the administrator (optional), and the per-user file  is	 main-
           tained  automatically:  whenever	the user connects from an unknown host
           its key is added	to the per-user	file.
    
    
           For the RSA key for protocol version 1, these files consist of the fol-
           lowing space-separated fields:
    
    	 hostnames  bits  exponent  modulus  comment
    
    
    
    
           For  the	 public	key for	protocol version 2, these files	consist	of the
           following space-separated fields:
    
    	 hostnames key-type base64-encoding-key	comment
    
    
    
    
           For protocol version 2, key-type	is one of ssh-rsa or ssh-dsa.
    
    
           Hostnames is a comma-separated list of patterns (* and ?	act  as	 wild-
           cards); each pattern in turn is matched against the canonical host name
           (when authenticating a client) or against the user-supplied name	 (when
           authenticating  a server). A pattern can	also be	preceded by ! to indi-
           cate negation: if the host name matches a negated pattern,  it  is  not
           accepted	(by that line) even if it matched another pattern on the line.
    
    
           Alternately, hostnames can be stored in a hashed	form, which hides host
           names and addresses should the file's  contents	be  disclosed.	Hashed
           hostnames  start	 with  a  vertical  bar	(|) character. Only one	hashed
           hostname	can appear on a	single line and	none of	the above negation  or
           wildcard	operators may be applied.
    
    
           Bits,  exponent,	 and modulus are taken directly	from the RSA host key;
           they can	be obtained, for example, from	/etc/ssh/ssh_host_rsa_key.pub.
           The optional comment field continues to the end of the line, and	is not
           used.
    
    
           Lines starting with a hash mark (#) and empty lines are ignored as com-
           ments.
    
    
           When  performing	host authentication, authentication is accepted	if any
           matching	line has the proper key. It is thus permissible	(but not  rec-
           ommended)  to  have  several  lines or different	host keys for the same
           names. This will	inevitably happen when short forms of host names  from
           different  domains  are	put in the file. It is possible	that the files
           contain conflicting information;	authentication is  accepted  if	 valid
           information can be found	from either file.
    
    
           The lines in these files	are typically hundreds of characters long. You
           should definitely not type in the host keys by hand.  Rather,  generate
           them  by	a script or by taking /etc/ssh/ssh_host_rsa_key.pub and	adding
           the host	names at the front.
    
    ENVIRONMENT VARIABLES
           sshd sets the following environment variables for commands executed  by
           ssh users:
    
           DISPLAY
    
    	   Indicates  the  location of the X11 server. It is automatically set
    	   by sshd to point to a value of the form hostname:n, where  hostname
    	   indicates  the  host	 where	the  shell  runs,  and n is an integer
    	   greater than	or equal to 1. ssh uses	this special value to  forward
    	   X11	connections over the secure channel. Unless you	have important
    	   reasons to do otherwise, you	should not set DISPLAY explicitly,  as
    	   that	 will  render the X11 connection insecure and will require you
    	   to manually copy any	required authorization cookies.
    
    
           HOME
    
    	   Set to the path of the user's home directory.
    
    
           LANG, LC_ALL, LC_COLLATE, LC_CTYPE, LC_MESSAGES,	LC_MONETARY,
           LC_NUMERIC, LC_TIME
    
    	   A  locale setting. The locale defaults to that of sshd (usually the
    	   system-wide default locale),	or is negotiated  between  the	client
    	   and server during initial key exchange (as per RFC 4253).
    
    	   Following  initial key exchange, each of the	variables can be over-
    	   riden in the	following sequence:
    
    	       1.     If a locale setting is set in a client's environment and
    		      that client supports "Environment	Variable Passing" (see
    		      RFC 4254), then the setting will be passed over  to  the
    		      server side.
    
    	       2.     If  the  public  key  authentication  method was used to
    		      authenticate the server  and  the	 PermitUserEnvironment
    		      variable	in  sshd_config(4) is set to yes on the	server
    		      side, then the setting can be changed through the	use of
    		      the  environment	option	in  the	 client's  Authorized-
    		      KeysFile file.
    
    	       3.     The setting can be changed in the	client's  ~/.ssh/envi-
    		      ronment file on the server.
    	   See	PermitUserEnvironment  in sshd_config(4) as to when the	Autho-
    	   rizedKeysFile and ~/.ssh/environment	files are processed  and  used
    	   for setting the user	environment.
    
    
           LOGNAME
    
    	   Synonym  for	USER. Set for compatibility with systems that use this
    	   variable.
    
    
           MAIL
    
    	   Set to point	to the user's mailbox.
    
    
           SSH_AUTH_SOCK
    
    	   Indicates the path of a unix-domain socket used to communicate with
    	   the agent.
    
    
           SSH_CONNECTION
    
    	   Identifies  the client and server ends of the connection. The vari-
    	   able	contains  four	space-separated	 values:  client  IP  address,
    	   client port number, server IP address and server port number.
    
    
           SSH_CLIENT
    
    	   Identifies  the client end of the connection. The variable contains
    	   three space-separated values: client	IP address, client  port  num-
    	   ber,	and server port	number.
    
    
           SSH_TTY
    
    	   Set to the name of the tty (path to the device) associated with the
    	   current shell or command. If	the current session has	no  tty,  this
    	   variable is not set.
    
    
           TZ
    
    	   Indicates   the   present   timezone,   if	TIMEZONE   is  set  in
    	   /etc/default/login or if TZ was set when the	daemon was started.
    
    
           HZ
    
    	   If set in /etc/default/login, the daemon sets it to the same	value.
    
    
           SHELL
    
    	   The user's shell, if	ALTSHELL=YES in	/etc/default/login.
    
    
           PATH
    
    	   Set	to  the	 value	of  PATH   or	SUPATH	 (see	login(1))   in
    	   /etc/default/login, or, if not set, to /usr/bin:/bin.
    
    
           USER
    
    	   Set to the name of the user logging in.
    
    
    
           Additionally,  sshd  reads $HOME/.ssh/environment and adds lines	of the
           format VARNAME=value to the environment.
    
    EXAMPLES
           In the following	examples, certain lines	might wrap due to line	length
           limits  in  your	 display. You should nevertheless consider the wrapped
           line as a single	line.
    
           Example 1 authorized_key	File Entries
    
    
           The following are examples of authorized_key file entries for  protocol
           1:
    
    
    	 1024 33 12121...312314325 [email protected]
    
    	 from="*.niksula.hut.fi,!pc.niksula.hut.fi" 1024 35 23...2334 ylo@niksula
    
    	 command="dump /home",no-pty,no-port-forwarding	1024 33	23...2323 backup.hut.fi
    
    
    
           Example 2 authorized_key	File Entries for Protocol 2
    
    
           The  following are examples of authorized_key file entries for protocol
           2:
    
    
    	 ssh-rsa AAAAB3NzaC1y.....EU88ovYKg4GfclWGCFYTuw8= [email protected]
    	 from="*.niksula.hut.fi" ssh-rsa AAAAB3NzaC...uw8= ylo@niksula
    	 command="dump /home",no-pty,no-port-forwarding	ssh-rsa	AA..8= backup.hut.fi
    
    
    
           Example 3 ssh_known_hosts File Entries for Protocol 1
    
    
           The following are examples of ssh_known_hosts file entries for protocol
           1:
    
    
    	 closenet,closenet.hut.fi,...,130.233.208.41 1024 37 159...93 closenet.hut.fi
    
    
    
           Example 4 ssh_known_hosts File Entries for Protocol 2
    
    
           The following are examples of ssh_known_hosts file entries for protocol
           2:
    
    
    	 closenet,closenet.hut.fi,...,130.233.208.41 ssh-rsa AA..8= closenet.hut.fi
    
    
    
           Example 5 Using X.509 Public Key	Authentication
    
    
           The following example of	user authentication should help	you understand
           how  the	X.509 public key authentication	works. Steps to	use X.509 cer-
           tificates/keys for host authentication are very similar.	Note  that  we
           use the same token (softtoken) for both the TA certificate and the user
           certificate, which would	not normally be	the case.
    
    
    
           Create a	self-signed trusted anchor certificate and a user  certificate
           signed  by the trusted anchor private key. Configure the	SSH daemon for
           certificate validation, and run the SSH client with the	user  certifi-
           cate generated in the previous step as its user identity.
    
    
    
           Replace user name "PUT-YOUR-USERNAME-HERE" with an existing (your) user
           name on the server side.
    
    
    	 # Generate a trusted anchor certificate/key pair in the
    	 # default token (softtoken).
    	 pktool	gencert	keystore=pkcs11	label=authority	\
    	     subject="CN=authority" serial=0x01
    
    	 # Export the trusted anchor certificate (and, after that,
    	 # put it to /etc/ssh/cert directory).
    	 pktool	export keystore=pkcs11 outfile=ta.cert objtype=cert
    	     label=authority outformat=pem
    
    	 # Generate a user certificate signed by the trusted anchor
    	 # private key and then	import the certificate into the
    	 # token.
    	 pktool	gencsr keystore=pkcs11 label=user \
    	     outcsr=user.csr subject="CN=<PUT-YOUR-USERNAME-HERE>"
    	 pktool	signcsr	keystore=pkcs11	signkey=authority \
    	     csr=user.csr serial=0x02 issuer="CN=authority" \
    	      outcert=user.cert
    	 pktool	import keystore=pkcs11 infile=user.cert	label=user
    
    	 # Create a new	policy file.
    	 kmfcfg	create dbfile=/etc/ssh/policy.xml policy=ssh \
    	     ta-name=search mapper-name=cn
    
    	 # Start the SSH daemon	in a debug mode	to test	the
    	 # configuration. Use a	different port so that you do not
    	 # clash with the already running daemon.
    	 /usr/lib/ssh/sshd -p 2222 -ddd	    -o TrustedAnchorKeystore=/etc/ssh/cert     -o KMFPolicyDatabase=/etc/ssh/policy.xml	    -o KMFPolicyName=ssh
    
    	 # Run the client in a debug mode to test the configuration
    	 # (will ask for a PIN for the token, use the 'pinfile'
    	 # attribute if	you do not want	to set PIN for each
    	 # invocation).
    	 # Note	that the space and the hash-sign in the	PKCS#11	URI are
    	 # percent-encoded. Percent-encoding is	in particular important	when
    	 # used	from config file. Otherwise the	'#' would be mistaken for a
    	 # comment and token name matching would fail!
    	 ssh -p	2222 -vvv -o \
    	     IdentityFile=\
    	     "pkcs11:object=user;token=Sun%20Software%20PKCS%2311%20softtoken" \
    	     <PUT-YOUR-USERNAME-HERE>@localhost
    
    
    
    
           Before you use the softtoken you	should set its PIN  by	means  of  the
           setpin subcommand. See pktool(1)	for more information.
    
    
    EXIT STATUS
           The following exit values are returned:
    
           0	    Successful completion.
    
    
           >0	    An error occurred.
    
    
    FILES
           /etc/default/login
    
    	   Contains  defaults  for several sshd_config parameters, environment
    	   variables, and other	environmental factors.
    
    	   The following parameters affect environment variables (see login(1)
    	   and descriptions of these variables,	above):
    
    	       o      TIMEZONE
    
    	       o      HZ
    
    	       o      ALTSHELL
    
    	       o      PATH
    
    	       o      SUPATH
    	   The	following  /etc/default/login parameters supply	default	values
    	   for corresponding sshd_config(4) parameters:
    
    	       o      CONSOLE (see PermitRootLogin in sshd_config(4))
    
    	       o      PASSREQ (see PermitEmptyPasswords	in sshd_config(4))
    
    	       o      TIMEOUT (see LoginGraceTime in sshd_config(4))
    	   The following /etc/default/login parameters:
    
    	       o      UMASK
    
    	       o      ULIMIT
    	   ...set the umask(2) and  file  size	limit  of,  respectively,  the
    	   shells and commands spawned by sshd.
    
    	   Finally,  two  /etc/default/login  parameters  affect  the  maximum
    	   allowed  login  attempts  per-connection  using  interactive	  user
    	   authentication  methods  (for example, keyboard-interactive but not
    	   publickey), as per login(1):
    
    	       o      RETRIES
    
    	       o      SYSLOG_FAILED_LOGINS
    
    
           /etc/ssh/sshd_config
    
    	   Contains configuration data for sshd. This file should be  writable
    	   by  root only, but it is recommended	(though	not necessary) that it
    	   be world-readable.
    
    
           /etc/ssh/ssh_host_key
           /etc/ssh/ssh_host_dsa_key
           /etc/ssh/ssh_host_rsa_key
    
    	   Contains the	private	part of	the host key. This file	should only be
    	   owned by root, readable only	by root, and not accessible to others.
    	   sshd	does not start if this file is group/world-accessible.
    
    
           /etc/ssh/ssh_host_key.pub
           /etc/ssh/ssh_host_dsa_key.pub
           /etc/ssh/ssh_host_rsa_key.pub
    
    	   Contains the	public part of the  host  key.	This  file  should  be
    	   world-readable but writable only by root. Its contents should match
    	   the private part. This file is not used for encryption; it is  pro-
    	   vided  only	for the	convenience of the user	so its contents	can be
    	   copied to known hosts files.	These files are	created	using ssh-key-
    	   gen(1).
    
    
           /var/run/sshd.pid
    
    	   Contains  the  process ID of	the sshd listening for connections. If
    	   there are several daemons running concurrently for different	ports,
    	   this	 contains the pid of the one started last. The content of this
    	   file	is not sensitive; it can be world-readable. You	 can  use  the
    	   PidFile  keyword  in	 sshd_config  to  specify  a  file  other than
    	   /var/run/sshd.pid. See sshd_config(4).
    
    
           /etc/ssh/ssh_known_hosts	and $HOME/.ssh/known_hosts
    
    	   These files are consulted when using	rhosts with  public  key  host
    	   authentication to check the public key of the host. The key must be
    	   listed in one of these files	to be accepted.	The  client  uses  the
    	   same	files to verify	that the remote	host is	the one	it intended to
    	   connect. These files	should be writable only	by root	or the	owner.
    	   /etc/ssh/ssh_known_hosts	should	  be	world-readable,	   and
    	   $HOME/.ssh/known_hosts can but need not be world-readable.
    
    
           /etc/nologin
    
    	   If this file	exists,	sshd refuses to	let anyone except root,	 users
    	   assigned  the  'root'  role,	 and  users  assigned the solaris.sys-
    	   tem.maintenance authorization log in. The contents of the file  are
    	   displayed  to  anyone  trying  to log in. The file should be	world-
    	   readable.
    
    
           $HOME/.ssh/authorized_keys
    
    	   Lists the public keys (RSA or DSA) that can be used to log into the
    	   user's  account. This file must be readable by root.	This might, on
    	   some	machines, imply	that it	is world-readable if the  user's  home
    	   directory  resides  on an NFS volume. It is recommended that	it not
    	   be accessible by others. The	 format	 of  this  file	 is  described
    	   above.  Users  will	place  the  contents  of  their	 identity.pub,
    	   id_dsa.pub and/or id_rsa.pub	files into this	file, as described  in
    	   ssh-keygen(1).
    
    
           $HOME/.rhosts
    
    	   This	 file  contains	host-username pairs, separated by a space, one
    	   per line. The given user on the corresponding host is permitted  to
    	   log in without password. The	same file is used by rlogind and rshd.
    	   The file must be writable only by the user; it is recommended  that
    	   it  not  be	accessible  by others. It is also possible to use net-
    	   groups in the file. Either host or user name	may  be	 of  the  form
    	   +@groupname to specify all hosts or all users in the	group.
    
    
           $HOME/.shosts
    
    	   For	ssh,  this  file  is exactly the same as for .rhosts. However,
    	   this	file is	not used by rlogin and rshd,  so  using	 this  permits
    	   access using	SSH only.
    
    
           /etc/hosts.equiv
    
    	   This	 file  is  used	during .rhosts authentication. In its simplest
    	   form, this file contains host names,	one per	line. Users  on	 these
    	   hosts  are  permitted  to  log in without a password, provided they
    	   have	the same user name on both machines. The host name can also be
    	   followed  by	a user name; such users	are permitted to log in	as any
    	   user	on  this  machine  (except  root).  Additionally,  the	syntax
    	   +@group  can	 be  used  to specify netgroups. Negated entries start
    	   with	a hyphen (-).
    
    	   If the client host/user is successfully matched in this file, login
    	   is  automatically  permitted,  provided  the	client and server user
    	   names are the same. Additionally, successful	RSA  host  authentica-
    	   tion	is normally required. This file	must be	writable only by root;
    	   it is recommended that it be	world-readable.
    
    	   Warning: It is almost never a  good	idea  to  use  user  names  in
    	   hosts.equiv.	Beware that it really means that the named user(s) can
    	   log in as anybody, which  includes  bin,  daemon,  adm,  and	 other
    	   accounts  that own critical binaries	and directories. For practical
    	   purposes, using a user name grants the user root  access.  Probably
    	   the	only  valid  use  for  user names is in	negative entries. This
    	   warning also	applies	to rsh/rlogin.
    
    
           /etc/ssh/moduli
    
    	   A private file.
    
    
           /etc/ssh/shosts.equiv
    
    	   This	file is	processed exactly as /etc/hosts.equiv.	However,  this
    	   file	 might	be  useful  in	environments  that  want  to  run both
    	   rsh/rlogin and ssh.
    
    
           $HOME/.ssh/environment
    
    	   This	file is	read into the environment at login (if it exists).  It
    	   can	contain	 only  empty lines, comment lines (that	start with #),
    	   and assignment lines	of the form name=value.	 The  file  should  be
    	   writable  only by the user; it need not be readable by anyone else.
    	   Environment processing is disabled by default and is	controlled  by
    	   means of the	PermitUserEnvironment option.
    
    
           $HOME/.ssh/rc
    
    	   If this file	exists,	it is run with /bin/sh after reading the envi-
    	   ronment files but before starting the user's	shell or  command.  If
    	   X11	spoofing is in use, this will receive the proto	cookie pair in
    	   standard input (and DISPLAY in environment).	This must  call	 xauth
    	   in that case.
    
    	   The	primary	 purpose of $HOME/.ssh/rc is to	run any	initialization
    	   routines that might be needed  before  the  user's  home  directory
    	   becomes accessible; AFS is a	particular example of such an environ-
    	   ment. If this file exists, it is run	with /bin/sh after reading the
    	   environment files, but before starting the user's shell or command.
    	   It must not produce any output  on  stdout;	stderr	must  be  used
    	   instead.  If	 X11  forwarding  is in	use, it	will receive the proto
    	   cookie pair in its standard input and DISPLAY in  its  environment.
    	   The script must call	xauth because sshd will	not run	xauth automat-
    	   ically to add X11 cookies.
    
    	   This	file will probably contain some	initialization	code  followed
    	   by something	similar	to:
    
    	     if	read proto cookie && [ -n "$DISPLAY" ]
    	     then
    	       if [ `echo $DISPLAY | cut -c1-10`  =  'localhost:' ]
    	       then
    		 # X11UseLocalhost=yes
    		 echo add unix:`echo $DISPLAY |
    		 cut -c11-` $proto $cookie
    	       else
    		 # X11UseLocalhost=no
    		 echo add $DISPLAY $proto $cookie
    	       fi | xauth -q -
    	     fi
    
    
    	   If  this  file  does	 not exist, /etc/ssh/sshrc is run, and if that
    	   does	not exist, xauth is used to store  the	cookie.	 $HOME/.ssh/rc
    	   should  be  writable	 only by the user, and need not	be readable by
    	   anyone else.
    
    
           /etc/ssh/sshrc
    
    	   Similar to $HOME/.ssh/rc. This can be used to specify  machine-spe-
    	   cific  login-time  initializations  globally.  This	file should be
    	   writable only by root, and should be	world-readable.
    
    
    SECURITY
           sshd supports the use of	several	user authentication mechanisms:	a pub-
           lic  key	 system	 where	keys are associated with users (through	users'
           authorized_keys files), a public	key system where keys  are  associated
           with hosts (see the HostbasedAuthentication configuration parameter), a
           GSS-API based method (see the GssAuthentication and GssKeyEx configura-
           tion  parameters) and three initial authentication methods: none, pass-
           word, and a generic prompt/reply	protocol, keyboard-interactive.
    
    
           sshd negotiates the use of the GSS-API with clients only	if  it	has  a
           GSS-API	acceptor  credential  for the "host" service. This means that,
           for GSS-API based authentication, the server must  have	a  Kerberos  V
           keytab entry (see below)	or the equivalent for any other	GSS-API	mecha-
           nism that might be installed.
    
    
           In order	for Kerberos authentication to work,  a	 host/<FQDN>  Kerberos
           principal  must	exist  for each	Fully Qualified	Domain Name associated
           with the	in.sshd	server.	Each of	these host/<FQDN> principals must have
           a keytab	entry in the /etc/krb5/krb5.keytab file	on the in.sshd server.
           An example principal might be:
    
    
           host/bigmachine.eng.example.com
    
    
           See kadmin(1M) or gkadmin(1M) for instructions on adding	a principal to
           a krb5.keytab file. See Securing	Systems	and Attached Devices in	Oracle
           Solaris 11.3 for	a discussion of	Kerberos authentication.
    
    
           GSS-API authorization is	covered	in gss_auth_rules(5).
    
    
           sshd uses pam(3PAM) for the three  initial  authentication  methods  as
           well  as	 for account management, session management, and password man-
           agement for all authentication methods.
    
    
           Specifically, sshd calls	pam_authenticate() for the "none,"  "password"
           and  "keyboard-interactive" SSHv2 userauth types. Other SSHv2 authenti-
           cation methods  do  not	call  pam_authenticate().  pam_acct_mgmt()  is
           called for each authentication method that succeeds.
    
    
           pam_setcred()  and  pam_open_session()  are  called when	authentication
           succeeds	and pam_close_session()	is called when connections are closed.
    
    
           pam_open_session() and pam_close_session() are also called  when	 SSHv2
           channels	with ptys are opened and closed.
    
    
           Each SSHv2 userauth type	has its	own PAM	service	name:
    
    
    
    
           +-----------------------------+-----------------------------+
           |      SSHv2 Userauth	     |	    PAM	Service	Name	   |
           +-----------------------------+-----------------------------+
           |none			     |sshd-none			   |
           +-----------------------------+-----------------------------+
           |password		     |sshd-password		   |
           +-----------------------------+-----------------------------+
           |keyboard-interactive	     |sshd-kbdint		   |
           +-----------------------------+-----------------------------+
           |pubkey			     |sshd-pubkey		   |
           +-----------------------------+-----------------------------+
           |hostbased		     |sshd-hostbased		   |
           +-----------------------------+-----------------------------+
           |gssapi-with-mic		     |sshd-gssapi		   |
           +-----------------------------+-----------------------------+
           |gssapi-keyex		     |sshd-gssapi		   |
           +-----------------------------+-----------------------------+
    
    
           If  pam_acct_mgmt()  returns  PAM_NEW_AUTHTOK_REQD (indicating that the
           user's authentication tokens have expired), then	sshd forces the	use of
           "keyboard-interactive"  userauth,  if  version  2 of the	protocol is in
           use. The	"keyboard-interactive" userauth	will call  pam_chauthtok()  if
           pam_acct_mgmt() once again returns PAM_NEW_AUTHTOK_REQD.	By this	means,
           administrators are able to  control  what  authentication  methods  are
           allowed for SSHv2 on a per-user basis.
    
       Setting up Host-based Authentication
           To  establish host-based	authentication,	you must perform the following
           steps:
    
    	   o	  Configure the	client.
    
    	   o	  Configure the	server.
    
    	   o	  Publish known	hosts.
    
    	   o	  Make	appropriate  entries  in   /etc/ssh/shosts.equiv   and
    		  ~/.shosts.
    
    
           These steps are expanded	in the following paragraphs.
    
    	   o	  On a client machine, in the system-wide client configuration
    		  file,	/etc/ssh/ssh_config, you must have the entry:
    
    		    HostbasedAuthentication yes
    
    		  See ssh_config(4) and	ssh-keysign(1M).
    
    	   o	  On the server, in the	system-wide server configuration file,
    		  /etc/ssh/sshd_config,	you must have the entry:
    
    		    HostbasedAuthentication yes
    
    		  If  per-user .shost files are	to be allowed (see last	step),
    		  in the same file, you	must have:
    
    		    IgnoreRhosts no
    
    		  See sshd_config(4) for a description of these	keywords.
    
    	   o	  To publish known  hosts,  you	 must  have  entries  for  the
    		  clients  from	which users will be allowed host-based authen-
    		  tication. Make these entries in either or both of  the  sys-
    		  tem-wide  file  (/etc/ssh/ssh_known_hosts)  or  the per-user
    		  file (~/.ssh/known_hosts).
    
    	   o	  Note that sshd uses .shosts, not .rhosts. If	you  want  the
    		  functionality	 provided  by  .rhosts,	but do not want	to use
    		  rlogin or rsh	because	of their  security  shortcomings,  you
    		  can  use  .shosts in conjunction with	sshd. To use this fea-
    		  ture,	make appropriate entries in /etc/ssh/shosts.equiv  and
    		  ~/.shosts, in	the format specified in	rhosts(4).
    
    		  For  the  vast  majority of network environments, .shosts is
    		  preferred over .rhosts.
    
       Using X.509 Certificates as Host Keys and User Identities
           SSH commands can	work with X.509v3 certificates when used as host  keys
           and/or  user  identities.  When used this way, PKCS#11 URIs can be used
           instead of plain	filenames to locate keys and certificates. Host	 keys,
           user  identities,  and  their corresponding certificates	used for X.509
           public key authentication can be	stored only  in	 PKCS#11  tokens.  The
           only PKCS#11 URI	attributes used	by SSH are object, token, and pinfile.
           If no hardware keystore is available, the  PKCS#11  softtoken  keystore
           can be used.
    
    
           For  certificate	 validation  (a	server that authenticates a user, or a
           client that authenticates a server), the	KMF policy needs a certificate
           mapper.	Mappers	are not	set in the default policy file.	See TrustedAn-
           chorKeystore, KMFPolicyDatabase,	and KMFPolicyName options in sshd_con-
           fig(4), and see libkmf(3LIB) for	more information.
    
    
           Self-signed  certificates  can only be used as host keys, never as user
           identities. If a	self-signed certificate	is used	or if a	host  certifi-
           cate  cannot  be	validated on the client	side due to a missing relevant
           trusted anchor certificate, the SSH client offers to store the  key  in
           the  known_host	database, as is	currently done with plain public keys.
           Only the	public key is extracted	from the certificate and stored	in the
           database, thus maintaining the current format. The reason for accepting
           such a certificate on the client	side is	 that  the  initial  host  Key
           Exchange	 is not	restartable. Given this, if a server uses certificates
           as its only host	key(s),	a client that is unable	to validate  the  cer-
           tificate	would otherwise	be denied from logging in.
    
    
           See the EXAMPLES	section	for guidance on	how to use the X.509 authenti-
           cation.
    
       Configuring sshd to Run OpenSSL in FIPS-140 Mode
           To configure sshd to run	OpenSSL	in FIPS-140 mode,  the	variable  Use-
           FIPS140 is set to yes.
    
    
           SunSSH  can  still  delegate  cryptographic  operations	for  user/host
           authentication to other parts of	Solaris	that might  or	might  not  be
           FIPS-140	certified. The default value of	the UseOpenSSLEngine option is
           no; the setting of UseOpenSSLEngine to yes does not have	an  effect  in
           FIPS mode.
    
    ATTRIBUTES
           See attributes(5) for descriptions of the following attributes:
    
    
    
    
           +-----------------------------+-----------------------------+
           |      ATTRIBUTE	TYPE	     |	    ATTRIBUTE VALUE	   |
           +-----------------------------+-----------------------------+
           |Availability		     |service/network/ssh	   |
           +-----------------------------+-----------------------------+
           |Interface Stability	     |Committed			   |
           +-----------------------------+-----------------------------+
    
    
           The interface stability of /etc/ssh/moduli is Private.
    
    SEE ALSO
           kmfcfg(1),   login(1),  pktool(1),  scp(1),  ssh(1),  ssh-add(1),  ssh-
           agent(1),  ssh-keygen(1),  svcs(1),  gkadmin(1M),   kadmin(1M),	 sftp-
           server(1M),   ssh-keysign(1M),	svcadm(1M),  libkmf(3LIB),  pam(3PAM),
           rhosts(4),      ssh_config(4),	   sshd_config(4),	attributes(5),
           gss_auth_rules(5),   kerberos(5),   pam_roles(5),  pkcs11_softtoken(5),
           smf(5)
    
    
           See the discussion of the .k5login file in krb5_auth_rules(5).
    
    
           Securing	Systems	and Attached Devices in	Oracle Solaris 11.3
    
    NOTES
           The sshd	service	is managed by the service management facility, smf(5),
           under the service identifier:
    
    	 svc:/network/ssh:default
    
    
    
    
           Administrative actions on this service, such as enabling, disabling, or
           requesting restart, can be performed using  svcadm(1M).	The  service's
           status can be queried using the svcs(1) command.
    
    
           sshd always sets	PAM_RHOST and sets PAM_AUSER in	the case of host-based
           userauth. This behavior allows for remote logins	to roles  using	 host-
           based authentication. See pam_roles(5).
    
    
    
    SunOS 5.11			  22 Nov 2013			      sshd(1M)
    

Log in to reply
 

© Lightnetics 2024