远程连接
ssh(tcp/22端口,密文传输)
telnet(tcp/23端口,明文传输)
SSH (Secure Shell)
是一种安全通道协议
对通信数据进行了加密处理,用于远程管理
OpenSSH (一般Linux系统自动安装,乌邦图除外)
服务名称:sshd
服务端主程序:/usr/sbin/sshd
服务端配置文件:/etc/ssh/sshd config客户端配置文件:/etc/ssh/ssh_config
服务端重要配置
port | #监听端口 |
ListenAddress | #监听地址为任意网段,也可以指定OpenSSH服务器的具体IP |
LoginGraceTime 2m | #登录验证时间为 2 分钟 |
MaxAuthTries 6 | #最大重试次数为 6 |
PermintRootLogin no | #禁止 root 用户登录 |
PermitEmptyPasswords no | #禁止空密码用户登录 |
UseDNS no | #禁用 DNS 反向解析,以加快远程连接速度 |
AllowUsers | #只允许某些用户登录,多个用户以空格分隔 |
DenyUsers | #禁止某些用户登录,用法于AllowUsers 类似 |
(AllowUsers ,DenyUsers 注意不要同时使用) |
SSH客户端应用的使用
1)ssh 远程登录
ssh [-p 端口] 用户名@目标主机IP
ssh [-p 端口] 用户名@目标主机IP 命令 #临时登录目标主机执行命令后退出
2)scp 远程复制
scp [-P 端口] [-r] 本机文件/目录路径 ... 用户名@目标主机IP:绝对路径 #将本地的文件/目录复制到目标主机
scp [-P 端口] [-r] 用户名@目标主机IP:绝对路径 本机路径 #将目标主机的文件/目录复制到本机
3)sftp 文件传输
sftp [-P 端口] 用户名@目标主机IP
> get put cd ls
SSH的验证方式
1)密码验证:使用账号和密码进行验证
PasswordAuthentication yes
2)密钥对验证:使用客户端创建的密钥对进行验证
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys #服务端的公钥文件默认保存路径
ssh密钥对的创建和使用:
1)确保服务端开启了ssh密钥对验证
/etc/ssh/sshd_config --> PubkeyAuthentication yes
2)在客户端创建密钥对
ssh-keygen [-t rsa/dsa/ecdsa]
#生成的密钥对默认存放在当前用户家目录的 .ssh/ 目录中,私钥是留给自己使用的,公钥(XXX.pub)是给服务端使用的
3)上传公钥至服务端
ssh-copy-id [-i 公钥文件] 用户名@目标主机IP
#公钥信息会自动保存到服务端的 ~/.ssh/authorized_keys 文件里
4)客户端 ssh 远程登录,使用密钥对的密码进行验证
注:密钥对在客户端是谁创建的,只能谁使用;密钥对上传给服务端的哪个用户,那么就只能使用那个用户去登录
ssh密钥对免交互登录:
1)使用空密码的密钥对
ssh-keygen 一路回车,不设置密码
ssh-copy-id
2)创建ssh会话代理(只能在当前会话中有效)
ssh-agent bash
ssh-add
一键操作的命令:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
sshpass -p 'abc1234' ssh-copy-id -o StrictHostKeyChecking=no root@192.168.80.20
TCP Wrappers 为支持TCP Wrappers的服务程序提供访问控制的功能,要么允许访问,要么拒绝访问
判断是否支持TCP Wrappers:
执行命令 ldd $(which 程序名称) | grep libwrap 查看是否有 libwrap.so.0 => /lib64/libwrap.so.0
访问策略原则:
先看 /etc/hosts.allow 是否有匹配的策略,有则直接允许访问
再看 /etc/hosts.deny 是否有匹配的策略,有则拒绝访问
如果以上两个文件都没有匹配的策略,则默认允许访问
策略格式:
<程序列表>:<客户端地址列表>
sshd,vsftpd:192.168.80.13,192.168.80.14
ALL:ALL
sshd:192.168.80.*
sshd:192.168.80.0/255.255.255.128