sshd配置文件详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sshd配置文件详解相关的知识,希望对你有一定的参考价值。
[[email protected] ~]# cat /etc/ssh/sshd_config
SSH Server 的整体设定========================================================
# $OpenBSD:sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $
# This is the sshd server system-wide configurationfile. See# sshd_config(5) for moreinformation.
# This sshd was compiled withPATH=/usr/local/bin:/bin:/usr/bin
# The strategy used for options in the defaultsshd_config shipped with
# OpenSSH is to specify options with their defaultvalue where
# possible, but leave them commented. Uncommented options change a
# default value.
端口号:
#Port 22
port用来设置sshd监听的端口,为了安全起见,建议更改默认的22端口为5位以上陌生端口
sshd服务器绑定的IP地址:
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress :: 用来设置sshd服务器绑定的IP地址
监听的主机适配卡,举个例子来说,如果您有两个 IP,分别是 10.0.0.61及 172.16.1.61,那么只想要开放172.16.1.61时,就可以设置为:ListenAddress 172.16.1.61,表示只监听来自 172.16.1.61 这个IP 的SSH联机。如果不使用设定的话,则预设所有接口均接受 SSH
sshd版本:
# Disable legacy (protocol version 1) support inthe server for new
# installations. In future the default will changeto require explicit
# activation of protocol 1
Protocol 2
设置协议版本为SSH1或SSH2,SSH1存在漏洞与缺陷,选择SSH2
设置包含计算机私人秘钥的文件:
HostKey用来设置服务器秘钥文件的路径
# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key
设置SSHversion 1使用的私钥
# HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key
设置SSHversion 2 使用的 RSA 私钥
#HostKey /etc/ssh/ssh_host_dsa_key
设置SSHversion 2 使用的 DSA 私钥
定义服务器秘钥的位数:
# Lifetime and size of ephemeral version 1 serverkey
# KeyRegenerationInterval 1h
秘钥再生的间隔时间
#ServerKeyBits 1024
服务器秘钥位
日志:
# Logging
# obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
日志Facility为AUTHPRIV
SyslogFacility用来设定在记录来自sshd的消息的时候,是否给出“facility code”(代码)
#LogLevel INFO
LogLevel用来设定sshd日志消息的级别
安全认证方面的设定==================================================================
# Authentication:
限制用户必须在指定的时限内认证成功,0 表示无限制。默认值是 120 秒。
#LoginGraceTime 2m
LoginGraceTime用来设定如果用户登录失败,在切断连接前服务器需要等待的时间,单位为妙
#PermitRootLogin yes
PermitRootLogin用来设置能不能直接以超级用户ssh登录,root远程登录Linux很危险,建议注销或设置为no
#StrictModes yes
StrictModes用来设置ssh在接收登录请求之前是否检查用户根目录和rhosts文件的权限和所有权,建议开启
建议使用默认值"yes"来预防可能出现的低级错误。
#MaxAuthTries 6
只允许输错几次密码
MaxAuthTries 用来设置最大失败尝试登陆次数为6,合理设置次数,可以防止攻击者穷举登录服务器
#MaxSessions 10
最大支持几个ssh会话
密钥认证:
#RSAAuthentication yes
RSAAuthentication用来设置是否开启RSA密钥验证,只针对SSH1
#PubkeyAuthentication yes
PubkeyAuthentication用来设置是否开启公钥验证,如果使用公钥验证的方式登录时,则设置为yes
#AuthorizedKeysFile .ssh/authorized_keys
AuthorizedKeysFile用来设置公钥验证文件的路径,与PubkeyAuthentication配合使用,默认值是".ssh/authorized_keys"。
#AuthorizedKeysCommand none
#AuthorizedKeysCommandRunAs nobody
主机验证:
# For this to work you will also need host keys in/etc/ssh/ssh_known_hosts
#RhostsRSAAuthentication no
是否使用强可信主机认证(通过检查远程主机名和关联的用户名进行认证)。仅用于SSH-1。
这是通过在RSA认证成功后再检查 ~/.rhosts 或 /etc/hosts.equiv进行认证的。出于安全考虑,建议使用默认值"no"。
# similar for protocol version 2
#HostbasedAuthentication no
这个指令与 RhostsRSAAuthentication 类似,但是仅可以用于SSH-2。
# Change to yes if you don‘t trust~/.ssh/known_hosts for
# RhostsRSAAuthentication andHostbasedAuthentication
#IgnoreUserKnownHosts no
IgnoreUserKnownHosts用来设置ssh在进行RhostsRSAAuthentication安全验证时是否忽略用户的“/$HOME/.ssh/known_hosts”文件
# Don‘t read the user‘s ~/.rhosts and ~/.shostsfiles
#IgnoreRhosts yes
IgnoreRhosts用来设置验证的时候是否使用“~/.rhosts”和“~/.shosts”文件
# To disable tunneled clear text passwords, changeto no here!
要禁用隧道明文密码, 请更改为 "否"!
#PasswordAuthentication yes
PasswordAuthentication用来设置是否开启密码验证机制,如果用密码登录系统,则设置yes
#PermitEmptyPasswords no
PermitEmptyPasswords用来设置是否允许用口令为空的账号登录系统,设置no
PasswordAuthentication yes
是否开启挑战响应身份验证:
# Change to no to disable s/key passwords
设置禁用s/key密码
#ChallengeResponseAuthentication yes
是否允许质疑-应答(challenge-response)认证
ChallengeResponseAuthentication no
Kerberos身份验证:
# Kerberos options
#KerberosAuthentication no
是否要求用户为PasswdAuthentication提供的密码必须通过Kerberos KDC认证,要使用Kerberos认证,服务器必须提供一个可以校验KDC identity的Kerberos servtab。默认值为no
#KerberosOrLocalPasswd yes
如果Kerberos密码认证失败,那么该密码还将要通过其他的的认证机制,如/etc/passwd
在启用此项后,如果无法通过Kerberos验证,则密码的正确性将由本地的机制来决定,如/etc/passwd,默认为yes
#KerberosTicketCleanup yes
设置是否在用户退出登录是自动销毁用户的ticket
#KerberosGetAFSToken no
如果使用AFS并且该用户有一个Kerberos 5TGT,那么开启该指令后,将会在访问用户的家目录前尝试获取一个AFS token,并尝试传送 AFS token 给Server 端,默认为no
#KerberosUseKuserok yes
与 GSSAPI 有关的参数设定,指定是否允许基于GSSAPI的用户认证,仅适用于SSH2:
GSSAPI 是一套类似 Kerberos 5 的通用网络安全系统接口。
如果你拥有一套GSSAPI库,就可以通过 tcp 连接直接建立 cvs 连接,由 GSSAPI 进行安全鉴别。
# GSSAPI options
#GSSAPIAuthentication no
GSSAPIAuthentication 指定是否允许基于GSSAPI的用户认证,默认为no
GSSAPIAuthentication yes
#GSSAPICleanupCredentials yes
GSSAPICleanupCredentials 设置是否在用户退出登录是自动销毁用户的凭证缓存
GSSAPICleanupCredentials yes
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no
SSH服务端的PAM认证:
# Set this to ‘yes‘ to enable PAM authentication,account processing,
# and session processing. If this is enabled, PAMauthentication will
# be allowed through theChallengeResponseAuthentication and
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication viaChallengeResponseAuthentication may bypass
# the setting of "PermitRootLoginwithout-password".
# If you just want the PAM account and sessionchecks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to ‘no‘.
#UsePAM no
设置是否通过PAM验证
UsePAM yes
指定客户端发送的哪些环境变量将会被传递到会话环境中:
# Accept locale-related environment variables
AcceptEnv 指定客户端发送的哪些环境变量将会被传递到会话环境中。
[注意]只有SSH-2协议支持环境变量的传递。指令的值是空格分隔的变量名列表(其中可以使用‘*‘和‘?‘作为通配符)。
也可以使用多个AcceptEnv 达到同样的目的。需要注意的是,有些环境变量可能会被用于绕过禁止用户使用的环境变量。
由于这个原因,该指令应当小心使用。默认是不传递任何环境变量。
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIMELC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONELC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
转发:
#AllowAgentForwarding yes
#AllowTcpForwarding yes
AllowTcpForwarding设置是否允许允许tcp端口转发,保护其他的tcp连接
远程主机连接本地转发端口:
#GatewayPorts no
#X11Forwarding no
GatewayPorts 设置是否允许远程客户端使用本地主机的端口转发功能,出于安全考虑,建议禁止
X11转发允许在SSH客户端上显示应用程序的图形部分,而逻辑程序依然在远程服务器上执行:
X11Forwarding yes
X11Forwarding 用来设置是否允许X11转发
#X11DisplayOffset 10
指定X11 转发的第一个可用的显示区(display)数字。默认值是 10 。
可以用于防止 sshd 占用了真实的 X11 服务器显示区,从而发生混淆
#X11UseLocalhost yes
登陆后的相关设定======================================================================
允许或禁止登陆用户、组:
#PrintMotd yes
PrintMotd用来设置sshd是否在用户登录时显示“/etc/motd”中的信息,可以选在在“/etc/motd”中加入警告的信息
#PrintLastLog yes
PrintLastLog 是否显示上次用户登录信息
#TCPKeepAlive yes
TCPKeepAlive 是否持续发送tcp包,维持连接,设置yes可以防止死连接
一般而言,如果设定这项目的话,那么 SSH Server 会传送 KeepAlive 的讯息给 Client 端,以确保两者的联机正常!
这种消息可以检测到死连接、连接不当关闭、客户端崩溃等异常。在这个情况下,任何一端死掉后, SSH 可以立刻知道,而不会有僵尸程序的发生!
#UseLogin no
UseLogin 设置是否使用ssh服务端的login程序进行登录验证。默认值是"no"。
如果开启此指令,那么X11Forwarding 将会被禁止,因为login不知道如何处理 xauth cookies 。
需要注意的是,在SSH底下本来就不接受 login 这个程序的登入,如果指UsePrivilegeSeparation ,那么它将在认证完成后被禁用
#UsePrivilegeSeparation yes
UsePrivilegeSeparation 设置使用者的权限
ssh服务端通过创建非特权子进程处理接入请求的方法来进行权限分离
#PermitUserEnvironment no
压缩选项yes:
#Compression delayed
连接超时断开连接:
#ClientAliveInterval 0
设置一个以秒记得时长,如果超时这么长时间,没有收到客户端的任何数据,sshd将通过安全通道向客户端发送一个“alive”消息,并等候回答
#ClientAliveCountMax 3
sshd在未收到任何客户端回应前最多允许发送多少个alive消息,到达这个上限后,sshd将强制断开连接,关闭会话。
#ShowPatchLevel no
在连接ssh端口时,是否返回ssh的补丁版本信息
#UseDNS yes
UseDNS是否使对远程主机名进行dns反向解析,以检查此主机名是否与其IP地址真实对应。
#PidFile /var/run/sshd.pid
pid文件存放位置
允许有多少次验证连接请求:
#MaxStartups 10:30:100
MaxStartups 设置同时允许几个尚未登入的联机,当用户连上ssh但并未输入密码即为所谓的联机,
在这个联机中,为了保护主机,所以需要设置最大值,预设为10个,而已经建立联机的不计算入内,
所以一般5个即可,这个设置可以防止恶意对服务器进行连接
#PermitTunnel no
是否允许隧道
#ChrootDirectory none
# no default banner path
#Banner none
登录之前显示在用户屏幕上,后面跟着文件位置
配置一个外部的子系统,仅用于SSH-V2协议,一般这里使用sftp
# override default of no subsystems
Subsystem sftp /usr/libexec/openssh/sftp-server
# Example of overriding settings on a per-userbasis
#Match User anoncvs
# X11Forwardingno
# AllowTcpForwardingno
# ForceCommandcvs server
增加=================================================================================
#AllowUsers<用户名1> <用户名2> <用户名3> ...
##指定允许通过远程访问的用户,多个用户以空格隔开
#AllowGroups<组名1> <组名2> <组名3> ...
##指定允许通过远程访问的组,多个组以空格隔开。当多个用户需要通过ssh登录系统时,可将所有用户加入一个组中。
#DenyUsers<用户名1> <用户名2> <用户名3> ...
##指定禁止通过远程访问的用户,多个用户以空格隔开
#DenyGroups<组名1> <组名2> <组名3> ...
##指定禁止通过远程访问的组,多个组以空格隔开。
以上是关于sshd配置文件详解的主要内容,如果未能解决你的问题,请参考以下文章
SSH服务器端/etc/ssh/sshd_conf配置文件详解