目录
一.SSH服务
1.1 SSH协议介绍
1.2 SSH优点
1.3 SSH客户端服务端
1.4 SSH原理
1.4.1 公钥首次连接原理
1.4.2 登录
二.OpenSSH服务器
2.1 OpenSHH简介
2.2 SSH服务端
2.3 SSH客户端
2.3.1 scp——远程安全复制
2.3.2 sftp——安全ftp 编辑
三. 免密登录
3.1 客户端生成密钥
SSH (Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。
SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH为建
立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。
远程管理Linux系统基本上都要使用到ssh,因为:telnet、FTP等传输方式是以明文传送用户认证信息,本质上是不安全的。SSH(Secure Shell)目前较可靠,是专为远程登录会话和其他忘了服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题,透过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗
SSH客户端<-——网络——>SSH服务端
数据传输是加密的,可以防止信息泄漏
数据传输是压缩的,可以提高传输速度
客户端:Linux 客户端: ssh, scp, sftp,slogin
Windows 客户端:xshell, MobaXterm,putty, securecrt, ssh secure shell client
服务端:SSH服务端:OpenSSH (开源)
ssh服务端主要包括两个服务功能:ssh远程连接和sftp服务(文件传输功能)
1. 客户端发起链接请求
2..服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
3. 客户端生成密钥对
4. 客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密
5. 客户端发送加密后的值到服务端,服务端用私钥解密,得到Res
6. 服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
7. 最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通 讯都会被加密
每次使用sshd登录到其他主机,双方都会生成一个文件known_hosts把对方主机的公钥在.ssh/known_hosts文件里
多次登录
登录方法1 ssh [远程主机用户名]@[远程服务器主机名或IP地址] -p port(端口号)
当在Linux主机上远程连接另一台Linux 主机时,如果当前所登录的用户是root的,当连接另一台主机时也是用root用户登录时,可以直接使用ssh+IP,端口默认(端口默认为22)即可,如果端口不是默认的情况下,需要使用-p指定端口。
本机是root用户登录,另一台主机也是root用户登录
本机不是root用户登录,另一台主机是root用户登录
登录方法3 ssh -t 中间主机IP ssh 目标主机IP
由于主机C不允许主机A直接连接 但是主机C允许主机B连接,所以可以使用主机A连接主机B,主机B连接主机C,这样主机A就能与主机C相连
服务名称:sshd(服务默认使用的是TCP的22端口)
服务端主程序:/usr/sbin/sshd
服务端配置文件:/etc/ssh/sshd_config
客户端配置文件:/etc/ssh/ssh.config
Centos 7系统默认已安装openssh相关软件包,并将sshd 服务添加为开机自启动。
SSHD作用:SSHD服务使用SSH协议可以用来进行远程控制,或在计算机之间传输文件。
相比较之前的telnet方式传输文件要安全很多,因为telnet使用明文传输,SSH是加密传输。
配置文件:/etc/ssh/sshd_config
将服务端端口号改为27 客户端进行连接
设置白名单
不设置白名单所有用户都可以登录访问,设置了白名单后,只有白名单内的用户登录,其余任何用户都不可以登录
主机 192.168.52.120使用my用户登录192.168.52.200
设置黑名单
ssh服务的最佳实践
建议使用非默认端口22
禁止使用protocol version 1
限制可登录用户
设定空闲会话超时时长
利用防火墙设置ssh访问策略
仅监听特定的IP地址
基于口令认证时,使用强密码策略,比如: tr -dc A-Za-z0-9_< /dev/urandom / head -c 12| xargs
使用基于密钥的认证
禁止使用空密码
禁止root用户直接登录
限制ssh的访问频度和并发在线数
经常分析日志分离
另一台主机
登录连接