SSH协议

  • 为客户机提供安全的Shell环境,用于远程管理

  • 默认端口:TCP 22

OpenSSH

  • 服务名称:sshd

  • 服务端主程序:/usr/sbin/sshd

  • 客户端主程序:/usr/bin/ssh

  • 服务端配置文件:/etc/ssh/sshd_config

  • 客户端配置文件:/etc/ssh/ssh_config


[root@steven ~]# vi /etc/ssh/sshd_config
……
Port 22                                   #端口号
Protocol 2                                #协议版本
ListenAddress 192.168.1.254               #监听IP地址
UseDNS no                                 #禁用反向解析
PermitRootLogin no                        #禁止ROOT用户登录
PermitEmptyPasswords no                   #禁止空密码用户登录
LoginGraceTime 2m                         #登录时间
MaxAuthTries 6                            #连接次数
PasswordAuthentication  yes               #启用密码验证
PubkeyAuthentication  yes                 #启用密钥对验证
AuthorizedKeysFile  .ssh/authorized_keys  #指定公钥库位置


ssh命令 —— 远程安全登录

  • 格式:ssh user@host

scp命令 —— 远程安全复制

  • 格式1:scp user@host:file1 file2

  • 格式2:scp file1 user@host:file2

sftp命令 —— 安全FTP上下载

  • 格式:sftp user@host


构建密钥对验证的SSH体系

SSH远程访问及控制_SSH


实验案例:构建安全的SSH服务体系

SSH远程访问及控制_远程登录_02

需求描述

  • 允许用户wzadm从任意地址登陆,采用密钥对验证

  • 允许用户jacky从主机192.168.3.110登陆

  • 禁止其他所有用户远程登录

实现思路

  • 同时启用密码验证、密钥对验证

  • 锁定wzadm用户,改以密钥对方式进行验证

  • 使用AllowUser配置,仅允许wzadm、jacky用户登录


这里我用GNS3搭建了路由器充当网关服务器.两台PC分配桥到了VMnet1(192.168.3.0)和VMnet8(218.29.30.0)

正确配置了各主机的网络参数,添加了测试用户jacky,wzadm. redhat 5为internet测试用机.redhat 6为网站服务器

SSH远程访问及控制_远程登录_03


修改sshd_config配置文件中的内容

SSH远程访问及控制_远程登录_04

SSH远程访问及控制_SSH_05监听22端口

SSH远程访问及控制_远程登录_06监听地址

SSH远程访问及控制_SSH_07使用SSH V2协议

SSH远程访问及控制_SSH_08禁用DNS反向解析

SSH远程访问及控制_操作系统_09禁止空密码用户登录

SSH远程访问及控制_Linux_10验证时间2分钟,禁止root用户登录

SSH远程访问及控制_SSH_11最大重试6次

SSH远程访问及控制_SSH_12启用密码验证

SSH远程访问及控制_远程登录_13启用密钥验证,指定公钥库数据文件

SSH远程访问及控制_SSH_14只允许wzadm和jacky用户登录,且jacky用户只能从IP地址192.168.3.110的主机远程登录


构建密钥对验证的SSH体系

1. 在客户机中创建密钥对

  • ssh-keygen命令

  • 可用的加密算法:RSA或DSA

SSH远程访问及控制_Linux_15


2. 将公钥文件上传至服务器

  • 任何方式均可(共享、FTP、Email、SCP、……)

SSH远程访问及控制_操作系统_16


3. 在服务器中导入公钥文本

  • 将公钥文本添加至目标用户的公钥库

  • 默认公钥库位置:~/.ssh/authorized_keys

SSH远程访问及控制_Linux_17


wzadm用户锁定.这样wzadm用户就只能使用密钥验证了

SSH远程访问及控制_Linux_18


jacky用户能从192.168.1.110远程登录网站服务器

SSH远程访问及控制_操作系统_19

SSH远程访问及控制_远程登录_20

SSH远程访问及控制_操作系统_21


jacky用户不能在218.29.30.218的主机上远程登录网站服务器

SSH远程访问及控制_Linux_22


其它用户不能远程登录网站服务器

SSH远程访问及控制_远程登录_23


SSH远程访问及控制_SSH_24

SSH远程访问及控制_Linux_25


wzadm用户远程登录的时候,直接要求使用密钥密码来登录了

SSH远程访问及控制_操作系统_26


其它用户还是无法远程登录

SSH远程访问及控制_SSH_27