一、OpenSSH服务器
1.1 SSH (Secure Shell) 协议
- SSH是一种安全通道协议
- SSH对通信数据进行了加密处理,用于远程管理
1.2 OpenSSH
- 服务名称: sshd
- 服务端主程序: /usr/sbin/sshd
- 服务端配置文件: /etc/ssh/sshd_config
- ssh_config和sshd_config都是ssh服务器的配置文件,二者区别在于前者是针对客户端的配置文件,后者则是针对服务端的配置文件
1.3 SSH远程管理
- 主要用来实现字符界面的远程登录、远程复制等功能
- 对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。因此SSH协议具有很好的安全性
- sshd 服务默认使用的是TCP的 22端口
二、远程管理配置
- 打开端口设置,并把端口改为2222并重启服务
- 通过其他主机连接这台主机
#Port 22 ##默认ssh端口,生产环境中建议改成五位数的端口
#AddressFamily any ##地址家族,any表示同时监听ipv4和ipv6地址
#ListenAddress 0.0.0.0 ##监听本机所有ipv4地址
#ListenAddress :: ##监听本机所有ipv6地址
#LogLevel INFO ##日志记录级别,默认为info
#LoginGraceTime 2m ##限定用户认证时间为2min
#PermitRootLogin yes ##是否允许root账户ssh登录,生产环境中建议改成no,使用普通账户su到root
#MaxAuthTries 6 ##指定每个连接最大允许的认证次数。默认值是 6
#MaxSessions 10 ##最大允许保持多少个连接。默认值是 10
#PubkeyAuthentication yes ##是否开启公钥验证
AuthorizedKeysFile .ssh/authorized_keys ##公钥验证文件路径
# HostbasedAuthentication ##指定服务器在使用 ~/.shosts ~/.rhosts /etc/hosts.equiv 进行远程主机名匹配时,是否进行反向域名查询
#IgnoreUserKnownHosts no ##是否在 RhostsRSAAuthentication 或 HostbasedAuthentication 过程中忽略用户的 ~/.ssh/known_hosts 文件
#IgnoreRhosts yes ##是否在 RhostsRSAAuthentication 或 HostbasedAuthentication 过程中忽略 .rhosts 和 .shosts 文件
#PermitEmptyPasswords no ##是否允许空密码
PasswordAuthentication yes ##是否允许密码验证,生产环境中建议改成no,只用密钥登录
ChallengeResponseAuthentication no ##是否允许质疑-应答(challenge-response)认证
#KerberosAuthentication no ##是否使用Kerberos认证
#KerberosOrLocalPasswd yes ##如果 Kerberos 密码认证失败,那么该密码还将要通过其它的认证机制(比如 /etc/passwd)
#KerberosTicketCleanup yes ##是否在用户退出登录后自动销毁用户的 ticket
#KerberosGetAFSToken no ##如果使用了AFS并且该用户有一个 Kerberos 5 TGT,那么开启该指令后,将会在访问用户的家目录前尝试获取一个AFS token
GSSAPIAuthentication yes ##是否允许基于GSSAPI的用户认证
GSSAPICleanupCredentials no ##是否在用户退出登录后自动销毁用户凭证缓存
UsePAM yes ##是否通过PAM验证
#GatewayPorts no ##是否允许远程主机连接本地的转发端口
X11Forwarding yes ##是否允许X11转发
#X11DisplayOffset 10 ##指定sshd(8)X11转发的第一个可用的显示区(display)数字。默认值是10
#X11UseLocalhost yes ##是否应当将X11转发服务器绑定到本地loopback地址
#PrintMotd yes ##指定sshd(8)是否在每一次交互式登录时打印 /etc/motd 文件的内容
#PrintLastLog yes ##指定sshd(8)是否在每一次交互式登录时打印最后一位用户的登录时间
#TCPKeepAlive yes ##指定系统是否向客户端发送 TCP keepalive 消息
#UseLogin no ##是否在交互式会话的登录过程中使用 login(1)
#UsePrivilegeSeparation sandbox ##是否让 sshd(8) 通过创建非特权子进程处理接入请求的方法来进行权限分离
#PermitUserEnvironment no ##指定是否允许sshd(8)处理~/.ssh/environment以及 ~/.ssh/authorized_keys中的 environment= 选项
#Compression delayed ##是否对通信数据进行加密,还是延迟到认证成功之后再对通信数据加密
#ClientAliveInterval 0 ##sshd(8)长时间没有收到客户端的任何数据,不发送"alive"消息
#ClientAliveCountMax 3 ##sshd(8)在未收到任何客户端回应前最多允许发送多个"alive"消息,默认值是 3
#UseDNS no ##是否使用dns反向解析
#PidFile /var/run/sshd.pid ##指定存放SSH守护进程的进程号的路径
#MaxStartups 10:30:100 ##最大允许保持多少个未认证的连接
#PermitTunnel no ##是否允许tun(4)设备转发
#Banner none ##将这个指令指定的文件中的内容在用户进行认证前显示给远程用户,默认什么内容也不显示,"none"表示禁用这个特性
Subsystem sftp /usr/libexec/openssh/sftp-server ##配置一个外部子系统sftp及其路径
#Match User anoncvs ##引入一个条件块。块的结尾标志是另一个 Match 指令或者文件结尾
AllowUsers ##设置白名单,需手动添加
DenyUsers ##设置黑名单,需手动添加
- 远程登陆
- 下行文件/目录(-P指定端口号,除了ssh其余都是大写)
- 上行文件/目录(-P指定端口号,除了ssh其余都是大写)
- 相同位置复制
- sftp(安全的ftp)
- 密钥对的创建
-
TCP Warppers :对支持TCP Warppers的服务程序进行访问控制,要么允许放行,要么拒绝丢弃。
-
查看服务是否属于TCP Warppers
-
实验