SSH (Secure Shell)协议
●是一种安全通道协议。
●对通信数据进行了加密处理,用于远程管理。
OpenSSH
●服务名称:sshd
●服务端主程序: /usr/sbin/sshd
●服务端配置文件:/etc/ssh/sshd_config
服务器监听选项
●端口号,协议版本,监听IP地址
●禁用反向解析
例如:
vi /etc/ssh/sshd_config
…
PORT 22 //端口号
ListenAddress 172.16.16.22 //监听IP地址
Protocol 2 //协议版本
UseDNS no //禁用反向解析
用户控制登录
●禁用root用户,空密码用户
●限制登录验证时间,重试次数
AllowUser(白名单),DenyUsers(黑名单)不能同时用
例如:AllowUsers jerry admin(远程登录用户名字)@192.168.100.101(远程用户ip)
例如:DenyUsers jerry admin(远程登录用户名字)@192.168.100.101 (远程用户ip)
数字签名
发送方:
- 对原始数据执行HASH算法得到摘要值。
- 发送方用自己私钥加密摘要值。
- 将加密的摘要值与原始数据发送给接收方。
- 数字签名保证数据完整性,身份验证和不可否认。
公钥加密
- 发送方使用接收方的公钥加密数据。
- 接收方使用自己的私钥解密数据。
- 数据加密能保证所发送数据的机密性。
构建密钥对验证的SSH体系
1.在客服机中创建密钥对
ssh-keygen命令
可使用的加密算法:RSA,ECDSA或DSA
例如:# ssh-keygen -t ecdsa
2.上传公钥到服务器
如何方式均可(FTP,Email,SCP.HTTP…)
例如:scp ~/.ssh/id_ecdsa.pub root@172.16.16.22:/tmp
3.在服务器导入公钥文本
将公钥文本添加至目标用户的公钥库
默认公钥位置:~/.ssh/authorized_keys
#mkdir /home/lisi/.ssh/
#cat /tmp/id_ecdsa.pub >> /home/lisi/.ssh/authorized_keys
#tail -1 /home/lisi/.ssh/authrized_key
4.客户端使用密钥对验证登录
验证用户:服务端的用户lisi
验证密码:客户端的用户zhangshan的私钥短语
例如:
ssh lisi@172.16.16.22
whoami
注:第2步和第3步可以采用另一种方法
ssh-copy -id -i 公钥文件 user@host
验证密码后,会将公钥自动添加目标主机user宿主目录下的.ssh/authorized_keys文件结果
ssh-copy-id ~/.ssh/id_rsa.pub lisi@172.16.16.22
免密登录
1.生成密钥
ssh-keygen
2.上传公钥到服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.100.101
3.测试免密登录
ssh root@192.168.100.101