SSH协议提供两种用户认证方式:
基于口令的安全认证
与telnet类似,提供正确的用户口令后可以远程登录服务器
基于密钥的安全认证
使用公钥和私钥对的方式对用户进行认证
对称密钥:服务器和客户端使用同样的密钥加密解密
加密和解密的速度很快。
非对称密钥:
一般用于身份验证,安全性高,但加密解密速度慢
1.双方交换公钥
2.随机生成对称密钥,然后用对方的公钥加密后发给对方
3,对方用私钥解密得到对称密钥
4,以后对方所传输的所有数据均使用这个对称密钥加密和解密
openssh 是ssh协议的免费实现版本。他的进程是sshd。配置文件放在/etc/ssh中,服务器配置文件是/etc/ssh/ssd_config 客户机配置文件是/etc/ssh/ssh_config
客户机登录ssh服务器后,会在客户机的家目录生成.ssh目录,其中know_hosts保存服务器的公钥。
在ssh客户端生成用户的公钥和私钥对
使用ssh-keygen命令生成密钥对:$ssh-keygen -t rsa(rsa是著名的非对称密钥算法)
公钥和私钥文件
ssh-keygen命令将在.ssh目录中生成公钥和私钥文件
id_rsa是私钥文件,内容需要保密
id_rsa.pub是公钥文件,可以发布到ssh服务器中。
复制公钥文件:
将客户端中的用户公钥文件复制到ssh服务器中([staid@staid ~]$ scp /home/staid/.ssh/id_rsa.pub root@192.168.0.2:/root):
将公钥内容追加到authorized_keys文件(没有authorized_keys的话,创建authorized_keys文件):
authorized_keys文件保存在ssh服务器中用户目录的.ssh子目录中
authorized_keys用于保存所有允许以当前用户身份登录的ssh客户端用户的公钥内容
使用>>重定向符将用户公钥追加到authorized_keys文件中
cat id_rsa.pub>>~/.ssh/authorized_keys
ssh 192.168.1.2 的意思是用当前用户的名字登录服务器。
TCP Wrappers(包裹起来):只要应用基于tcp协议的,用户访问tcp应用的话,先经过TCP Wrappers过滤一遍。
设置只有两个文件:/etc/hosts.deny 和/etc/hosts.allow
守护进程就是tcpd,
包:tcp_wrappers
此处白名单优先于黑名单,就是说白名单也有,黑名单也有,那么就是白名单生效
文件格式:<服务程序列表>:<客户端地址列表>[:动作]
文件中每行为一个设置记录
服务程序列表字段的表示:
ALL代表所有的服务程序
单个服务的名称 ,例如:in.telnetd代表telnet服务器进程(因为他属于超级管理程序的后台服务器部分,所以得用in.的样子,而不是独立进程),vsftpd代表vsftpd服务器程序
多个服务程序名称可以组成列表,中间用逗号隔开。例如:in.telnetd,vsftpd
客户机地址列表:字段的表示:
ALL代表所有的客户机地址
LOCAL代表本机地址
KNOW代表可解析的域名
UNKNOW代表不可解析的域名
以句点.可是的域名代表该域名下的所有主机,例如:.test.com代表test.com域下的所有主机
对某个子网中的所有主机使用 子网/掩码 的形式表示
对于网络中的某个主机可直接用ip地址表示
动作用allow代表允许,deny是拒绝。
本文转自guoli0813 51CTO博客,原文链接:http://blog.51cto.com/guoli0813/359680,如需转载请自行联系原作者