## SSL和SSH协议

加密类型

  • 对称加密
  • 加密与解密使用相同的秘钥,如:DES、3DES、AES等
  • 优点:算法公开、加密速度快,效率高
  • 缺点:秘钥分发较为复杂,管理困难,不能够实现数字签名
  • 非对称加密
  • 加、解密时使用成对的公钥(publickey)与私钥(privatekey)来完成,公钥是公开的,私钥由用户自行保存,公钥由私钥生成,无法由公钥逆向推导出私钥,如:RSA、DSA、Elgamal等
  • 发送发使用接收方的公钥加密,接受方需要使用自己的私钥进行解密,保证数据的私密性
  • 发送方使用自身私钥加密后再使用接收方公钥加密,接受者使用自身私钥解密后再使用发送方的公钥进行二次解密,具有不可抵赖性
  • 优点:算法强度复杂,安全性高,秘钥分配简单,便于管理,能够实现数字签名
  • 缺点:加解密计算量大,速度慢
  • 常用于会话钥(对称加密秘钥)分发
  • 单向加密
  • 对数据进行hash,提取特征码,具有不可逆的特点,如:MD5、SHA等
  • 发送方在发送数据时对数据进行hash,提取特征码,与明文一同发送,接受方接受后对明文信息进行相同hash提取特征码,与接收到的特征码比对,进行数据完整性与一致性校验

SLL

  • Secure Sockets Layer:安全的套接字层
  • SSL 是指安全套接字层,确保互联网连接安全,利用数据加密保护网络中传输的数据,防止信息被截取和窃听。为Netscape(网景)所研发
  • 工作在应用层与传输层之间,为基于TCP等可靠连接的应用层协议提供安全性保障
  • 主要功能
  • 身份验证
  • 使用颁发的数字签名证书对通信双方身份进行验证,其中客户端身份验证为可选
  • 消息完整性验证
  • 使用MAC算法进行消息完整性验证
  • 数据的保密性
  • 使用对称加密算法对传输的数据进行加密
  • openssl
  • 开源的ssl协议
  • 组件包括:
  • openssl:命令行工具
  • libcrypto:密码算法库
  • libssl:ssl协议库
    注:cnetos7默认安装了openssl
  • openssl的使用
  • openssl version #查看openssl版本
  • openssl enc #对称加密方式进行加、解密
  • -e #加密
  • -d #解密,未指定时表示加密
  • -ciphername #指定对称算法,-des3、-ase128、-cast、-blowfish等
  • -a|-base64 #指定使用base64编码格式
  • -salt #插入随机数作为加密内容
  • -in FILENAME #指定要加密的文件位置
  • -out FILENAME #指定加密后的文件存放位置
  • 加密
  • 解密
  • openssl dgst -ciphername FILENAME #单向加密,提取特征码,不可逆
  • -ciphername #指定单向加密算法,如md5,sha1sum
  • openssl genrsa -ciphername -out FILENAME NUM#生成秘钥
  • -ciphername #指定私钥 文件的加密方式
  • -out #指定 生成的私钥文件
  • NUM #长度,默认512
  • 生成私钥
  • openssl rsa -in FILE1 [-out FILE2 | -pubout] #基于私钥提取公钥
  • -pubout #输出显示
  • -in #指定基于的秘钥文件
  • -out #指定公钥输出文件
  • 生成公钥

SSH

  • ssh 协议: 安全外壳协议 ,Secure Shell的缩写 ,传统的远程登录服务(telnet)采用明文传输数据,易被监听窃取数据和用户口令,ssh采用加密算法将所有传输的数据进行加密与压缩,能够安全、高效的完成数据传输,其主要用于代替telnet实现远程登录,为ftp等服务提供安全的传输通道
  • 安全验证
  • 基于口令的验证
  • 基于秘钥的验证
  • 服务端
  • 安装(Centos7默认安装)
  • yum install openssh-server
  • 配置文件/etc/ssh/sshd_config
#Port 22 #监听端口,默认22
#AddressFamily any #地址类型,any指兼容ipv4与ipv6
#ListenAddress 0.0.0.0 #监听的地址IPV4,0.0.0.0表示本机所有地址
#ListenAddress ::	#监听的地址IPV6,::为ipv6全0的缩写

HostKey /etc/ssh/ssh_Family
HostKey /etc/ssh/ssh_host_ecdsa_key #ecdsa私钥认证
HostKey /etc/ssh/ssh_host_ed25519_key #ed25519私钥认证
# Ciphers and keyingecdsa
#RekeyLimit default none

# Logging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV #ssh登录信息将被记录保存,/etc/log/secure
#LogLevel INFO #日志级别


#LoginGraceTime 2m #登录宽限时间
#PermitRootLogin yes #禁止root登录
#StrictModes yes
#MaxAuthTries 6 #密码最大尝试次数,达到上限将会限制一定时间登录
#MaxSessions 10 #开启的会话最大数量

#PubkeyAuthentication yes

AuthorizedKeysFile	.ssh/key-centos7-1.pub #服务器生成一对公私钥之后,会将公钥放到.ssh/authorizd_keys里面,将私钥发给客户端

#AuthorizedPrincipalsFile none

#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody

#PermitEmptyPasswords no  #是否允许使用空密码
PasswordAuthentication yes #是否使用基于口令的认证

ChallengeResponseAuthentication no #是否允许任何的密码认证

# Kerberos options #Kerberos第三方认证选项
#KerberosAuthentication no #是否启用
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no
#KerberosUseKuserok yes

# GSSAPI options
GSSAPIAuthentication yes
GSSAPICleanupCredentials no
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no
#GSSAPIEnablek5users no

UsePAM yes

#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes #是否支持远程连接图形显示
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#UsePrivilegeSeparation sandbox
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#ShowPatchLevel no
#UseDNS yes  #是否启用dns反向解析,建议no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none

# no default banner path
#Banner none

# Accept locale-related environment variables
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS

# override default of no subsystems
Subsystem	sftp	/usr/libexec/openssh/sftp-server
AllowUsers USERNAME #登录白名单,使用该选项后为指定的用户被拒绝远程登录
  • Linux客户端
  • linux上常使用ssh、scp、sftp实现跨系统远程登录与文件传输(centos7默认安装)
  • 配置文件/etc/ssh/ssh_config
  • 命令格式:ssh [USER@HOST] [COMMAND]
  • 指定COMMAND后不登录,只在远端主机执行命令
  • -l USER #指定登录用户,同USER@,未指定时使用当前主机上的用户进行登录
  • -p #指定端口(默认22)
  • 登录后使用exit退回到本地用户
  • 生成公钥私钥对 公钥可以生成私钥吗_远程登录


  • 生成公钥私钥对 公钥可以生成私钥吗_生成公钥私钥对_02

  • ssh基于秘钥验证登录
  • ssh-keygen -t ras 生成秘钥对
  • -t #指定加密方式

    默认在/root/.ssh下生成秘钥id_rsa与公钥id_rsa.pub
  • ssh-copy-id -i [FILE] USER@HOST将公钥分发至ssh服务器登录用户家目录下
  • -i #指定公钥文件,默认为~/.ssh/id_rsa.pub
  • scp工具
  • 用于实现跨主机间文件上传与下载
  • 命令格式:scp [options] source destion
  • -r #递归复制
  • -p #保留属性((小写)
  • -P #指定端口(大写)
  • 文件上传
  • 文件下载
  • Windows客户端
  • 常用客户端软件:xshell、secureCRT等
  • 连接
  • 指定登录主机ip及端口设定用户名与密码即可远程登录
  • 基于秘钥验证登录(xshell)
  • 使用xshell创建公钥与秘钥
  • 选择使用的加密算法及长度
  • 自动生成秘钥对
  • 输入秘钥文件名及秘钥文件加密密码,可为空
  • 为空时,提示
  • 可x选择将公钥保存为文件或复制出来
  • 完成后进入秘钥管理界面,可以进行秘钥的生成、删除、导入、导出
  • 使用rz命令秘钥保存的登录用户家目录下(需要安装lrzsz)
    rz:文件上传工具,sz:文件下载

  • 也可使用xftp工具(需要安装xftp软件)
  • 或是直接使用xshell登录后复制公钥内容粘贴到登录用户家目录下
  • 修改配置文件
  • 修改xshell登录选项