●一种安全通道协议
●对通信数据进行了加密处理,用于远程管理
查看提供sshd服务的openssh软件是否安装:
[root@localhost ~]# rpm -q openssh
openssh-7.4p1-16.el7.x86_64
●服务名称:sshd
●服务端主程序:/usr/sbin/sshd
●服务端配置文件:/etc/ssh/sshd_config
注意:
服务端配置文件:sshd_config
客户端配置文件:ssh_config
在/etc/ssh/sshd_config配置文件中
●Port 22 ##端口号 (默认端口号:22 不建议修改)
●Protocol 2 ##协议版本是2
●ListenAddress 0.0.0.0 ##监听IP地址(0.0.0.0是监听所有IP地址)
●UseDNS no ##禁用反向解析
●LoginGraceTime 2m ##会话超时时间 2m(2分钟),不然会一直占用资源
●PermitRootLogin no ##禁用root用户 ,还要开启pam认证模块,避免其他用户登录进去后再切到root
当禁用root用户后会Permission denied:权限拒绝
但是可以通过其他用户先进去,再切换到root用户,(借助pam认证模块不让用户使用su命令)
●MaxAuthTries:6 ##最大验证尝试次数(输错次数)6 ;默认只可以连接3次,但是可以通过输入以下命令增加连接次数
ssh -o NumberOfPasswordPrompts=8(连接次数)[email protected]
●PermitEmptyPasswords:no ##禁止空密码登录
●AllowUsers test01 [email protected] (文件里没有,需自己添加)
允许用户 test01(从任意终端登录) ;admin(后面加了@,只能从固定终端登录)
白名单:仅允许某些用户,拒绝所有人(用在安全性场合高)
黑名单:仅拒绝某些用户,允许所有人(用在安全性场合低)
●MaxSessions 10 最大允许10个终端连接ssh
密钥对方式登录
●密码验证:核对用户名、密码是否匹配
●密钥对验证:核对客户的私钥、服务端公钥是否匹配(客户端留私钥,公钥给服务器)
PasswordAuthentication yes ##启用密码验证
PubkeyAuthentication yes ##启用公钥验证
AuthorizedKeysFile .ssh/authorized_keys ##指定公钥库位置(在家目录下隐藏目录 .ssh中)
注意:使用密钥对登录方式前得先保证/etc/ssh/sshd_config中以上三项已开启
先在在客户机中创建密钥对
●ssh-keygen命令
●可用的加密算法:RSA、ECDSA或DSA
ssh-keygen -t ecdsa
第一种方式:
(1)将公钥文件上传至服务器
●任何方式均可(FTP、Email、SCP、HTTP等)
scp ~/.ssh/id_ecdsa.pub [email protected]:/tmp
(2)在服务器中导入公钥文本
●将公钥文本添加至目标用户的公钥库
●默认公钥库位置:~/.ssh/authorized_keys
mkdir /home/lisi/.ssh
cat /tmp/id_ecdsa.pub >>/home/test01/.ssh/authorized_keys
第二种方式: (常用)
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
验证密码后,会将公钥自动添加到目标主机test01宿主目录下的 .ssh/authorized_keys文件结尾
●验证用户:服务端的用户test01
●验证密码:客户端的用户caiwu的私钥短语
ssh [email protected]
补充知识:
下次登录实现免密登录:(要在本地)
ssh-agent bash ##代理bash终端
ssh-add ##添加免密登录的密码
ssh user@host 更换端口选项:-p (默认是22)
例如:
ssh [email protected]
格式1:scp user@host:file1 file2 ##把对方文件拷贝过来
格式2:scp file1 user@host:file2 ##把自己的文件推给对方
目录复制加 -r
sftp user@host
get:下载文件
put:上传文件
bye:退出
●方式1:通过tcpd程序对其他服务程序进行包装
●方式2:由其他服务程序调用libwrap.so.*链接库
●/etc/hosts.allow
●/etc/hosts.deny
●策略格式:服务程序列表:客户端地址列表(sshd:客户端地址)
●服务程序列表
多个服务以逗号分隔,ALL表示所有服务
●客户端地址列表
多个地址以逗号分割,ALL表示所有地址
允许使用通配符?和*
网段地址,如192.168.4.或者192.168.4.0/255.255.255.0
区域地址,如 .benet.com
1.先检查hosts.allow,找到匹配则允许访问
2.再检查hosts.deny,找到则拒绝访问
3.若两个文件中均无匹配策略,则默认允许访问
使用案例:
白名单:
在/etc/hosts.allow中写允许访问的sshd:192.168.100.*,20.0.0.50
再在/etc/hosts.deny中写sshd:ALL
黑名单:
在/etc/hosts.allow中空白
再在/etc/hosts.deny中写黑名单