ssh

#添加用户

useradd uesrname

#设置用户密码

passwd username

 

允许/禁止root登录
vi /etc/ssh/sshd_config

#是否允许root登录

PermitRootLogin yes/no

 

#是否允许不输入密码登录
PermitEmptyPasswords yes

 

#设置允许远程登录的用户

AllowUsers uesrname username1

 

[修改文件权限,700表示为用户设置读、写、执行的权限(开头的 7),而不给组和其他用户的权限(后面的两个 0)]
$ chmod u+w /etc/sudoers
$ vi /etc/sudoers
$ chmod u-w /etc/sudoers


保存公钥/私钥,在服务器上执行以下命令:
$ mkdir ~/.ssh
$ touch ~/.ssh/authorized_keys

#权限设置(RHEL/CENTOS系统必需)
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys

ssh-rsa TMiZRfW0cENRnGRgQPR1dCDv4GJwpcQi... ... username

 

配置说明:

AcceptEnv

 只支持SSHv2协议

 指定客户端发送的哪些环境变量将会被传递到会话环境中。具体的细节可以参考 ssh_config5 中的 SendEnv 配置指令。

该关健字的值是空格分隔的变量名列表(其中可以使用’*'和’?'作为通配符),也可以使用多个AcceptEnv达到同样的目的。需要注意的是,有些环境变量可能会被用于绕过禁止用户使用的环境变量。由于这个原因,该指令应当小心使用默认值:是不传递任何环境变量

 

AddressFamily 

指定sshd8)应当使用哪种地址族,取值范围:”any”(默认)、”inet”(仅IPv4)、”inet6″(仅IPv6

 

AllowGroups 

这个指令后面跟着一串用空格分隔的组名列表(其中可以使用”*”和”?”通配符),默认允许所有组登录。如果使用了这个指令,那么将仅允许这些组中的成员登录,而拒绝其它所有组。这里的”组”是指”主组”(primary group),也就是/etc/passwd文件中指定的组。

这里只允许使用组的名字而不允许使用GID。相关的 allow/deny 指令按照下列顺序处理:DenyUsers --> AllowUsers --> DenyGroups-->AllowGroups

 

AllowTcpForwarding

是否允许TCP转发,默认值为”yes”。

禁止TCP转发并不能增强安全性,除非禁止了用户对shell的访问,因为用户可以安装他们自己的转发器

 

AllowUsers 

这个指令后面跟着一串用空格分隔的用户名列表(其中可以使用”*”和”?”通配符)。默认允许所有用户登录。

如果使用了这个指令,那么将仅允许这些用户登录,而拒绝其它所有用户。

如果指定了 USER@HOST 模式的用户,那么 USER  HOST 将同时被检查。

这里只允许使用用户的名字而不允许使用UID。相关的 allow/deny 指令按照下列顺序处理:

DenyUsers -->AllowUsers-->DenyGroups --> AllowGroups

 

AuthorizedKeysFile

存放该用户可以用来登录的 RSA/DSA 公钥。

该指令中可以使用下列根据连接时的实际情况进行展开的符号:%% 表示’%'%h 表示用户的主目录、%u 表示该用户的用户名。经过扩展之后的值必须要么是绝对路径,要么是相对于用户主目录的相对路径。默认值是”.ssh/authorized_keys

 

Banner

 只支持SSHv2协议

 将这个指令指定的文件中的内容在用户进行认证前显示给远程用户。默认什么内容也不显示。”none”表示禁用这个特性

ChallengeResponseAuthentication 

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

 

Ciphers

 只支持SSHv2协议

 指定SSH-2允许使用的加密算法。多个算法之间使用逗号分隔。可以使用的算法如下:

aes128-cbc”, aes192-cbc”, aes256-cbc”, aes128-ctr”, aes192-ctr”, aes256-ctr”, 3des-cbc”, arcfour128″,arcfour256″, arcfour”, blowfish-cbc”, cast128-cbc

默认值是可以使用上述所有算法

 

ClientAliveCountMax

 只支持SSHv2协议

 Sshd8)在未收到任何客户端回应前最多允许发送多少个”alive”消息。默认值是 3 

到达这个上限后,sshd8 将强制断开连接、关闭会话。

需要注意的是,”alive”消息与 TCPKeepAlive 有很大差异。

alive”消息是通过加密连接发送的,因此不会被欺骗;而 TCPKeepAlive 却是可以被欺骗的。

如果ClientAliveInterval被设为15 并且将 ClientAliveCountMax 保持为默认值,那么无应答的客户端大约会在45秒后被强制断开

 

ClientAliveInterval

 只支持SSHv2协议

 设置一个以秒记的时长,如果超过这么长时间没有收到客户端的任何数据,sshd8 将通过安全通道向客户端发送一个”alive”消息,并等候应答。默认值 0 表示不发送”alive”消息

 

Compression

 是否对通信数据进行加密,还是延迟到认证成功之后再对通信数据加密。可用值:”yes” “delayed”(默认), “no”

 

DenyGroups

 这个指令后面跟着一串用空格分隔的组名列表(其中可以使用”*””?”通配符)。默认允许所有组登录。

如果使用了这个指令,那么这些组中的成员将被拒绝登录。

这里的是指主组primary group),也就是/etc/passwd文件中指定的组。

这里只允许使用组的名字而不允许使用GID。相关的 allow/deny 指令按照下列顺序处理:DenyUsers -> AllowUsers -> DenyGroups -> AllowGroups

 

DenyUsers

 这个指令后面跟着一串用空格分隔的用户名列表(其中可以使用”*””?”通配符)。默认允许所有用户登录。

如果使用了这个指令,那么这些用户将被拒绝登录。

如果指定了 USER@HOST 模式的用户,那么 USER  HOST 将同时被检查。

这里只允许使用用户的名字而不允许使用UID。相关的 allow/deny 指令按照下列顺序处理:

DenyUsers -> AllowUsers -> DenyGroups -> AllowGroups

 

ForceCommand 

强制执行这里指定的命令而忽略客户端提供的任何命令。这个命令将使用用户的登录shell执行(shell -c)。

这可以应用于 shell 、命令、子系统的完成,通常用于 Match 块中。

这个命令最初是在客户端通过 SSH_ORIGINAL_COMMAND 环境变量来支持的

 

GatewayPorts

 是否允许远程主机连接本地的转发端口。默认值是”no”

sshd8 默认将远程端口转发绑定到loopback地址。这样将阻止其它远程主机连接到转发端口。

GatewayPorts 指令可以让 sshd 将远程端口转发绑定到非loopback地址,这样就可以允许远程主机连接了。

“no”表示仅允许本地连接,”yes”表示强制将远程端口转发绑定到统配地址(wildcard address),

“clientspecified”表示允许客户端选择将远程端口转发绑定到哪个地址

 

GSSAPIAuthentication

只支持SSHv2协议

是否允许使用基于 GSSAPI 的用户认证。默认值为”no”

 

GSSAPICleanupCredentials

只支持SSHv2协议

是否在用户退出登录后自动销毁用户凭证缓存。默认值是”yes”

 

HostbasedAuthentication

只支持SSHv2协议

这个指令与 RhostsRSAAuthentication 类似,推荐使用默认值”no”不禁止这种不安全的认证方式

 

HostbasedUsesNameFromPacketOnly

 在开启 HostbasedAuthentication 的情况下,

指定服务器在使用 ~/.shosts ~/.rhosts /etc/hosts.equiv 进行远程主机名匹配时,是否进行反向域名查询。

“yes”表示 sshd8 信任客户端提供的主机名而不进行反向查询。默认值是”no”

 

HostKey

 主机私钥文件的位置。如果权限不对,sshd8 可能会拒绝启动。

SSHv1默认是: /etc/ssh/ssh_host_key 

SSHv2默认是:/etc/ssh/ssh_host_rsa_key  /etc/ssh/ssh_host_dsa_key 。一台主机可以拥有多个不同的私钥。”rsa1″仅用于SSH-1”dsa””rsa”仅用于SSH-2

 

IgnoreRhosts

 是否在 RhostsRSAAuthentication  HostbasedAuthentication 过程中忽略 .rhosts  .shosts 文件。不过 /etc/hosts.equiv  /etc/shosts.equiv 仍将被使用。推荐设为默认值”yes”

 

IgnoreUserKnownHosts

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

 

KerberosAuthentication

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

 

KerberosGetAFSToken

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

 

KerberosOrLocalPasswd

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

 

KerberosTicketCleanup

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

 

KeyRegenerationInterval

只支持SSHv1协议

SSH-1协议下,短命的服务器密钥将以此指令设置的时间为周期(秒),不断重新生成。

这个机制可以尽量减小密钥丢失或者黑客攻击造成的损失。

设为 0 表示永不重新生成,默认为 3600(秒)

 

 

此条目发表在linux分类目录,贴了标签。将固定链接加入收藏夹。