linux ssh_config和sshd_config配置文件

 

现在远程管理linux系统基本上都要使用到ssh,原因很简单:telnet、FTP等传输方式是‍以明文传送用户认证信息,本质上是不安全的,存在被网络窃听的危险。SSH(Secure Shell)目前较可靠,是专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题,透过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。

 

 

ssh_config和sshd_config都是ssh服务器的配置文件,二者区别在于,前者是针对客户端的配置文件,后者则是针对服务端的配置文件。两个配置文件都允许你通过设置不同的选项来改变客户端程序的运行方式。下面列出来的是两个配置文件中最重要的一些关键词,每一行为“关键词&值”的形式,其中“关键词”是忽略大小写的。

‍‍1、编辑 /etc/ssh/ssh_config 文件

 

 

下面对上述选项参数逐进行解释:

# Site-wide defaults for some commonly used options.

 

带“#”表示该句为注释不起作,该句不属于配置文件原文,意在说明下面选项均为系统初始默认的选项。说明一下,实际配置文件中也有很多选项前面加有“#”注释,虽然表示不起作用,其实是说明此为系统默认的初始化设置。

Host *

 

"Host"只对匹配后面字串的计算机有效,“*”表示所有的计算机。从该项格式前置一些可以看出,这是一个类似于全局的选项,表示下面缩进的选项都适用于该设置,可以指定某计算机替换*号使下面选项只针对该算机器生效。

ForwardAgent no

 

"ForwardAgent"设置连接是否经过验证代理(如果存在)转发给远程计算机。

ForwardX11 no

 

"ForwardX11"设置X11连接是否被自动重定向到安全的通道和显示集(DISPLAYset)。

RhostsRSAAuthentication no

 

"RhostsRSAAuthentication"设置是否使用用RSA算法的基于rhosts的安全验证。

RSAAuthentication yes

 

"RSAAuthentication"设置是否使用RSA算法进行安全验证。

PasswordAuthentication yes

 

"PasswordAuthentication"设置是否使用口令验证。

BatchMode no

 

"BatchMode":批处理模式,一般设为"no";如果设为"yes",交互式输入口令的提示将被禁止,这个选项对脚本文件和批处理任务十分有用。

CheckHostIP yes

 

"CheckHostIP"设置ssh是否查看连接到服务器的主机的IP地址以防止DNS欺骗。建议设置为"yes"。

StrictHostKeyChecking no

 

"StrictHostKeyChecking"如果设为"yes",ssh将不会自动把计算机的密匙加入"$HOME/.ssh/known_hosts"文件,且一旦计算机的密匙发生了变化,就拒绝连接。

IdentityFile ~/.ssh/identity

 

"IdentityFile"设置读取用户的RSA安全验证标识。

Port 22

 

"Port"设置连接到远程主机的端口,ssh默认端口为22。

EscapeChar ~

 

“EscapeChar”设置escape字符。

 

2、编辑 /etc/ssh/sshd_config 文件:‍

 

linux ssh_config和sshd_config配置文件_第1张图片

 

 

 

 

 

下面逐行说明上面的选项设置:

Port 22

#设置ssh监听的端口号,默认22端口

ListenAddress ::

ListenAddress 0.0.0.0

#指定监听的地址,默认监听所有;

Protocol 2,1

#指定支持的SSH协议的版本号。'1'和'2'表示仅仅支持SSH-1和SSH-2协议。"2,1"表示同时支持SSH-1和SSH-2协议。

HostKey /etc/ssh/ssh_host_rsa_key

HostKey /etc/ssh/ssh_host_dsa_key

HostKey /etc/ssh/ssh_host_ecdsa_key

HostKey /etc/ssh/ssh_host_ed25519_key

#HostKey是主机私钥文件的存放位置;

#SSH-1默认是/etc/ssh/ssh_host_key。SSH-2默认是/etc/ssh/ssh_host_rsa_key和/etc/ssh/ssh_host_dsa_key。一台主机可以拥有多个不同的私钥。"rsa1"仅用于SSH-1,"dsa"和"rsa"仅用于SSH-2。

UsePrivilegeSeparation yes

#是否通过创建非特权子进程处理接入请求的方法来进行权限分离。默认值是"yes"。认证成功后,将以该认证用户的身份创另一个子进程。这样做的目的是为了防止通过有缺陷的子进程提升权限,从而使系统更加安全。

KeyRegenerationInterval 3600

#在SSH-1协议下,短命的服务器密钥将以此指令设置的时间为周期(秒),不断重新生成;这个机制可以尽量减小密钥丢失或者黑客攻击造成的损失。设为0表示永不重新生成为3600(秒)。

ServerKeyBits 1024

#指定服务器密钥的位数

SyslogFacility AUTH

#指定将日志消息通过哪个日志子系统(facility)发送。有效值是:DAEMON, USER, AUTH(默认), LOCAL0,LOCAL1, LOCAL2, LOCAL3,LOCAL4, LOCAL5, LOCAL6, LOCAL7,LogLevel INFO指定日志等级(详细程度)。可用值如下:QUIET, FATAL, ERROR, INFO (默认), VERBOSE,DEBUG,DEBUG1, DEBUG2, DEBUG3,DEBUG与DEBUG1等价;DEBUG2和DEBUG3则分别指定了更详细、更罗嗦的日志输出。比DEBUG更详细的日志可能会泄漏用户敏感信息,因此反对使用。

LoginGraceTime 120

#限制用户必须在指定的时限(单位秒)内认证成功,0表示无限制。默认值是

120秒;如果用户不能成功登录,在用户切断连接之前服务器需要等待120秒。

PermitRootLogin yes

#是否允许root登录。可用值如下:"yes"(默认) 表示允许。"no"表示禁止。"without-password"表示禁止使用密码认证登录。"forced-commands-only"表示只有在指定了command选项的情况下才允许使用公钥认证登录,同时其它认证方法全部被禁止。这个值常用于做远程备份之类的事情。

StrictModes yes 

#指定是否要求sshd(8)在接受连接请求前对用户主目录和相关的配置文件进行宿主和权限检查。强烈建议使用默认值"yes"来预防可能出现的低级错误。

RSAAuthentication yes

#是否允许使用纯RSA公钥认证。仅用于SSH-1。默认值是"yes"。

PubkeyAuthentication yes

#是否允许公钥认证。仅可以用于SSH-2。默认值为"yes"。

IgnoreRhosts yes

#是否取消使用 ~/.ssh/.rhosts 来做为认证。推荐设为yes。

RhostsRSAAuthentication no

#这个选项是专门给version1用的,使用rhosts档案在/etc/hosts.equiv配合RSA演算方式来进行认证!推荐no。

HostbasedAuthentication no

#这个与上面的项目类似,不过是给version2使用的

IgnoreUserKnownHostsno

#是否在 RhostsRSAAuthentication或HostbasedAuthentication过程中忽略用户的~/.ssh/known_hosts文件。默认值是"no"。为了提高安全性,可以设为"yes"。

PermitEmptyPasswords no

#是否允许密码为空的用户远程登录。默认为"no"。

ChallengeResponseAuthentication no

#是否允许质疑-应答(challenge-response)认证。默认值是"yes",所有login.conf中允许的认证方式都被支持。

PasswordAuthentication yes

#是否允许使用基于密码的认证。默认为"yes"。

KerberosAuthentication no

#是否要求用户为 PasswordAuthentication 提供的密码必须通过KerberosKDC认证,也就是是否使用Kerberos认证。使用Kerberos认证,服务器需要一个可以校验KDCidentity的Kerberos servtab。默认值是"no"。

KerberosGetAFSToken no

#如果使用了AFS并且该用户有一个Kerberos 5 TGT,那么开启该指令后,将会在访问用户的家目录前尝试获取一个AFS token。默认为"no"。KerberosOrLocalPasswd yes 

#如果Kerberos密码认证失败,那么该密码还将要通过其它的 认证机制(比如/etc/passwd)。默认值为"yes"。

KerberosTicketCleanup yes

#是否在用户退出登录后自动销毁用户的ticket。默认"yes"。

GSSAPIAuthentication no

#是否允许使用基于GSSAPI的用户认证。默认值为"no"。仅用于SSH-2。

GSSAPICleanupCredentials yes 

#是否在用户退出登录后自动销毁用户凭证缓存。默认值是"yes"。仅用于SSH-2。

X11Forwarding no

#是否允许进行X11转发。默认值是"no",设为"yes"表示允许。如果允许X11转发并且sshd代理的显示区被配置为在含有通配符的地址(X11UseLocalhost)上监听。那么将可能有额外的信息被泄漏。由于使用X11转发的可能带来的风险,此指令默认值为"no"。需要注意的是,禁止X11转发并不能禁止用户转发X11通信,因为用户可以安装他们自己的转发器。如果启用了 UseLogin ,那么X11转发将被自动禁止。

X11DisplayOffset 10

#指定X11转发的第一个可用的显示区(display)数字。默认值

是10。这个可以用于防止sshd占用了真实的X11服务器显示区,从而发生混淆。

PrintMotd no

#登入后是否显示出一些信息呢?例如上次登入的时间、地点等等,预设是yes,但是,如果为了安全,可以考虑改为no!

PrintLastLog yes 

#指定是否显示最后一位用户的登录时间。默认值是"yes"

TCPKeepAlive yes 

#指定系统是否向客户端发送TCP keepalive 消息。默认值是"yes"。这种消息可以检测到死连接、连接不当关闭、客户端崩溃等异常。可以设为"no"关闭这个特性。

UseLogin no

#是否在交互式会话的登录过程中使用 login。默认值是"no"。如果开启此指令,那么X11Forwarding将会被禁止,因为login不知道如何处理xauth cookies。需要注意的是,login是禁止用于远程执行命令的。如果指定了UsePrivilegeSeparation,那么它将在认证完成后被禁用。

MaxStartups 10

#最大允许保持多少个未认证的连接。默认值是10。到达限制后,将不再接受新连接,除非先前的连接认证成功或超出LoginGraceTime的限制。

MaxAuthTries 6

#指定每个连接最大允许的认证次数。默认值是6。如果失败认证的次数超

#过这个数值的一半,连接将被强制断开,且会生成额外的失败日志消息。

UseDNS no

#指定是否应该对远程主机名进行反向解析,以检查此主机名是否与其IP

#地址真实对应。

Banner /etc/issue.net

#将这个指令指定的文件中的内容在用户进行认证前显示给远程用户。这个特性仅能用于SSH-2,默认什么内容也不显示。"none"表示禁用这个特性。

Subsystem sftp /usr/lib/openssh/sftp-server 

#配置一个外部子系统(例如,一个文件传输守护进程)。仅用于SSH-2协议。值是一个子系统的名字和对应的命令行(含选项和参数)。

UsePAM yes

#是否使用PAM模块认证

你可能感兴趣的:(安全)