整理一份 sshd_config 说明
[root@shenfeng ssh]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
路径:/etc/ssh/sshd_config
配置后需要重启服务
完整配置如下:
1 # $OpenBSD: sshd_config,v 1.93 2014/01/10 05:59:19 djm Exp $
2
3 # This is the sshd server system-wide configuration file. See
4 # sshd_config(5) for more information.
5
6 # This sshd was compiled with PATH=/usr/local/bin:/usr/bin
7
8 # The strategy used for options in the default sshd_config shipped with
9 # OpenSSH is to specify options with their default value where
10 # possible, but leave them commented. Uncommented options override the
11 # default value.
12
ssh 默认使用 Port 22,也可以使用多个 Port,如果需要使用多个 Port 另起一行 Port 443
即可,然后重启 sshd
13 # If you want to change the port on a SELinux system, you have to tell
14 # SELinux about this change.
15 # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
16 #
17 #Port 22
监听 ip
eg:有两个 IP,分别是 192.168.1.123 及 192.168.2.123,假设只想要让 192.168.1.123 可以监听 sshd ,ListenAddress 192.168.1.100
默认值是监听所有接口的 ssh 请求
18 #ListenAddress 0.0.0.0
19 #ListenAddress ::
20
ssh 的协议版本,如果需要支持旧版: Protocol 2,1
21 # The default requires explicit activation of protocol 1
22 #Protocol 2
23
私钥存放的位置
24 # HostKey for protocol version 1
25 #HostKey /etc/ssh/ssh_host_key
26 # HostKeys for protocol version 2
27 HostKey /etc/ssh/ssh_host_rsa_key
28 #HostKey /etc/ssh/ssh_host_dsa_key
29 HostKey /etc/ssh/ssh_host_ecdsa_key
30 HostKey /etc/ssh/ssh_host_ed25519_key
31
在SSH-1协议下,短命的服务器密钥将以此指令设置的时间为周期(秒),不断重新生成
这个机制可以尽量减小密钥丢失或者黑客攻击造成的损失
设为 0 表示永不重新生成,默认为 3600(秒)
32 # Lifetime and size of ephemeral version 1 server key
33 #KeyRegenerationInterval 1h
指定临时服务器密钥的长度,仅用于SSH-1
34 #ServerKeyBits 1024
35
36 # Ciphers and keying
37 #RekeyLimit default none
38
登录记录的等级
39 # Logging
40 # obsoletes QuietMode and FascistLogging
41 #LogLevel INFO
42
当使用者连接到 ssh server 后 会提示输入密码,在这个时候,在设置值内没有成功连上 ssh server 时候就会自动断线,如果没有单位 默认为 s
43 # Authentication:
44
45 #LoginGraceTime 2m
是否让 sshd 去检查 用户家目录 或 相关档案 的权限
如果使用者将某些重要档案的权限设错 可能会导致一些问题
eg:使用者的~.ssh/
权限设错时 某些特殊情况下会不许用户登入
46 #StrictModes yes
指定每个连接最大允许的认证次数,默认值是 6
如果失败认证的次数超过这个数值的一半,连接将被强制断开,且会生成额外的失败日志消息
47 #MaxAuthTries 6
限制同时登录的数量
48 #MaxSessions 10
49
是否允许使用纯 RSA 公钥认证,仅用于SSH-1
50 #RSAAuthentication yes
是否允许用户自行使用成对的密钥进行登入系统行为 仅针对 version 2
自制的公钥数据就放置于用户家目录下的 .ssh/authorized_keys
51 #PubkeyAuthentication yes
52
53 # The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
54 # but this is overridden so installations will only check .ssh/authorized_keys
55 AuthorizedKeysFile .ssh/authorized_keys
56
57 #AuthorizedPrincipalsFile none
58
是否允许authorized_keys中使用command项
59 #AuthorizedKeysCommand none
限制能够在authorized_keys中使用command项的用户
60 #AuthorizedKeysCommandUser nobody
61
这个选项是专门给 version 1 用的 使用 rhosts 档案在 /etc/hosts.equiv
配合 RSA 演算方式来进行认证
no
62 # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
63 #RhostsRSAAuthentication no
是否允许 host_based 验证,no
64 # similar for protocol version 2
65 #HostbasedAuthentication no
是否忽略家目录内的 ~/.ssh/known_hosts 这个档案所记录的主机内容
no
66 # Change to yes if you don't trust ~/.ssh/known_hosts for
67 # RhostsRSAAuthentication and HostbasedAuthentication
68 #IgnoreUserKnownHosts no
是否取消使用 ~/.ssh/.rhosts 来做为认证 yes
69 # Don't read the user's ~/.rhosts and ~/.shosts files
70 #IgnoreRhosts yes
71
是否允许空密码登录 no
72 # To disable tunneled clear text passwords, change to no here!
73 #PermitEmptyPasswords no
74
允许任何的密码认证,所以,任何 login.conf 规定的认证方式,均可适用
但目前通常使用 PAM 模块帮忙管理认证,因此这个选项可以设定为 no
75 # Change to no to disable s/key passwords
76 #ChallengeResponseAuthentication yes
77 ChallengeResponseAuthentication no
78
Kerberos 是一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证。这个词又指麻省理工学院为这个协议开发的一套计算机软件。软件设计上采用客户端/服务器结构,并且能够进行相互认证,即客户端和服务器端均可对对方进行身份认证。可以用于防止窃听、防止重放攻击、保护数据完整性等场合,是一种应用对称密钥体制进行密钥管理的系统。Kerberos的扩展产品也使用公开密钥加密方法进行认证。
要使用Kerberos认证,服务器需要一个可以校验 KDC identity 的 Kerberos servtab
(三头地狱犬)
79 # Kerberos options
80 #KerberosAuthentication no # 是否允许使用基于 Kerberos的用户认证
81 #KerberosOrLocalPasswd yes # 如果 Kerberos 密码认证失败,那么该密码还将要通过其它的认证机制(比如 /etc/passwd)
82 #KerberosTicketCleanup yes # 是否在用户退出登录后自动销毁用户的 ticket
83 #KerberosGetAFSToken no # 如果使用了 AFS 并且该用户有一个 Kerberos 5 TGT,那么开启该指令后,将会在访问用户的家目录前尝试获取一个 AFS token
84 #KerberosUseKuserok yes
85
86 # GSSAPI options
87 GSSAPIAuthentication yes # 是否允许使用基于 GSSAPI 的用户认证。默认值为”no”。仅用于SSH-2。
88 GSSAPICleanupCredentials no # 是否在用户退出登录后自动销毁用户凭证缓存
89 #GSSAPIStrictAcceptorCheck yes # 是否对接收到的用户凭证严格校验
90 #GSSAPIKeyExchange no # 是否开启密钥交换
91 #GSSAPIEnablek5users no
92
利用 PAM 管理使用者认证,可以记录与管理等
UsePAM yes
&& ChallengeResponseAuthentication no
93 # Set this to 'yes' to enable PAM authentication, account processing,
94 # and session processing. If this is enabled, PAM authentication will
95 # be allowed through the ChallengeResponseAuthentication and
96 # PAM authentication via ChallengeResponseAuthentication may bypass
97 # If you just want the PAM account and session checks to run without
98 # and ChallengeResponseAuthentication to 'no'.
99 # WARNING: 'UsePAM no' is not supported in Red Hat Enterprise Linux and may cause several
100 # problems.
101 UsePAM yes
102
103 #AllowAgentForwarding yes
104 #AllowTcpForwarding yes # 允许TCP转发
105 #GatewayPorts no # 转发路径端口
X11Forwarding 项目 可以让窗口的数据透过 ssh 通道来传送
106 X11Forwarding yes # 是否开启X11转发
107 #X11DisplayOffset 10 # 设置转发的可显示区数字为10
108 #X11UseLocalhost yes # 是否将X11的转发服务器地址保存到loopback地址
109 #PermitTTY yes
登入后是否显示出一些信息 预设是 yes
eg:上次登入的时间、地点等等
即输出 /etc/motd
这个档案的内容
出于安全考虑 可改为 no
110 #PrintMotd yes
显示上次登入的时间
111 #PrintLastLog yes
当成功登入后,服务器会一直传送 TCP 封包给客户端以判断对方是否一直存在联机。
不过,如果联机时中间的路由器暂时停止服务几秒钟,也会让联机中断
在这种情况下,任何一端死掉后,SSH可以立刻知道,而不会有僵尸程序的发生
但如果你的网络或路由器常常不稳定,那么可以设定为 no
112 #TCPKeepAlive yes
是否在交互式登录时启用login
113 #UseLogin no
是否让 sshd 通过创建非特权子进程处理接入请求的方法来进行权限分离 默认值是 yes
认证成功后,将以该认证用户的身份创建另一个子进程。
这样做的目的是为了防止通过有缺陷的子进程提升权限,从而使系统更加安全
eg:sshd 启动在 port 22 ,因此启动的程序是属于 root 的身份。那么当 student 登入后,这个设定值会让 sshd 产生一个属于 sutdent 的 sshd 程序来使用,对系统较安全
114 UsePrivilegeSeparation sandbox # Default for new installations.
115 #PermitUserEnvironment no
指定何时开始使用压缩数据模式进行传输,选项 yes
no
delayed(登录后将数据压缩)
116 #Compression delayed
117 #ClientAliveInterval 0 # 设置空闲登录的最大时长
118 #ClientAliveCountMax 3 # 在没收到任何数据的时候,最多向3个客户端进行keepalive检测
显示补丁级别
119 #ShowPatchLevel no
放置 sshd 这个 PID 的档案,默认值
120 #PidFile /var/run/sshd.pid
同时允许几个尚未登入的联机画面
当连上 SSH 但是尚未输入密码时 这个时候就是 联机画面
在这个联机画面中,为了保护主机,所以需要设定最大值,预设最多十个联机画面,而已经建立联机的不计算在这十个当中
121 #MaxStartups 10:30:100
允许tun设备转发
122 #PermitTunnel no
是否允许切换目录
123 #ChrootDirectory none
配置附加版本
124 #VersionAddendum none
125
不设置欢迎词
126 # no default banner path
127 #Banner none
128
接受本地相关的环境变量类型
指定客户端发送的哪些环境变量将会被传递到会话环境中
129 # Accept locale-related environment variables
130 AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
131 AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
132 AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
133 AcceptEnv XMODIFIERS
134
是否开启sftp服务
135 # override default of no subsystems
136 Subsystem sftp /usr/libexec/openssh/sftp-server
137
限制只允许某个用户登录
138 # Example of overriding settings on a per-user basis
139 #Match User anoncvs
是否开启X11转发
140 # X11Forwarding no
允许TCP转发
141 # AllowTcpForwarding no
142 # PermitTTY no
限制命令
143 # ForceCommand cvs server
一般来说,为了要判断客户端来源是正常合法的,会使用 DNS 去反查客户端的主机名
不过如果是在内网互连,设定为 no 会让联机达成速度更快
144 UseDNS no
145 AddressFamily inet
登入设定,是否允许 root 用户登录以任何认证方式登录
yes
# 允许 root用户 以任何认证方式登录(用户名密码认证,公钥认证)
no
# 不允许 root用户 以任何认证方式登录
without-password
# 只允许 root用户 public key 认证方式登录
146 PermitRootLogin yes
Linux Daemon(守护进程)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务。Linux系统的大多数服务器就是通过守护进程实现的。常见的守护进程包括系统日志进程syslogd、 web服务器httpd、邮件服务器sendmail和数据库服务器mysqld等。
守护进程一般在系统启动时开始运行,除非强行终止,否则直到系统关机都保持运行。守护进程经常以超级用户(root)权限运行,因为它们要使用特殊的端口(1-1024)或访问某些特殊的资源。
一个守护进程的父进程是init进程,因为它真正的父进程在fork出子进程后就先于子进程exit退出了,所以它是一个由init继承的孤儿进程。守护进程是非交互式程序,没有控制终端,所以任何输出,无论是向标准输出设备stdout还是标准出错设备stderr的输出都需要特殊处理。
守护进程的名称通常以d结尾,比如sshd、xinetd、crond等
有关登录的文件信息 和 daemon
当使用 SSH 登入系统的时候,SSH 会记录信息
预设是以 AUTH 来设定的,即是 /var/log/secure
147 SyslogFacility AUTHPRIV
是否可以使用密码登录
148 PasswordAuthentication yes
不定期更新 不合适的地方 还请指点~ 感激不尽