一、ssh概述
- SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。
- SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令。因此SSH协议具有很好的安全性。
远程连接的方式:
ssh(tcp/22端口,密文传输) telnet(tcp/23端口,明文传输)
SSH客户端:Putty、Xshell、CRT、MobaXterm
SSH服务端:OpenSSH
二、ssh相关配置文件
1、基本操作
2、配置文件
3、服务端的重要配置
vim /etc/ssh/sshd_config
Port 22 #监听端口为 22
ListenAddress 0.0.0.0 #监听地址为任意网段,也可以指定OpenSSH服务器的具体IP
LoginGraceTime 2m #登录验证时间为 2 分钟
PermitRootLogin no #禁止 root 用户登录
MaxAuthTries 6 #最大重试次数为 6
PermitEmptyPasswords no #禁止空密码用户登录
UseDNS no #禁用 DNS 反向解析,以加快远程连接速度
AllowUsers zhangsan lisi wangwu@61.23.24.25 #只允许zhangsan、lisi、wangwu用户登录,且其中wangwu用户仅能够从IP地址为61.23.24.25 的主机远程登录
DenyUsers zhangsan #禁止zhangsan用户登录
4、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验证方式
vim /etc/ssh/sshd_config
PasswordAuthentication yes #启用密码验证
PubkeyAuthentication yes #启用密钥对验证
AuthorizedKeysFile .ssh/ authorized_keys #指定公钥库文件
创建使用密钥对验证
1、首先确保服务端开启了ssh密钥对验证 /etc/ssh/sshd_config --> PubkeyAuthentication yes
2、在客户端创建密钥对
ssh-keygen [-t rsa/dsa/ecdsa]
3、上传公钥至服务端
4、客户端 ssh 远程登录,使用密钥对的密码进行验证
注:密钥对在客户端是谁创建的,只能谁使用;密钥对上传给服务端的哪个用户,那么就只能使用那个用户去登录
无交互式密钥登录的种方法
(1)在生成密钥文件时设置私钥密码为空即可完成免交互登录
(2)创建ssh会话代理(只能在当前会话中有效)
5、免交互创建密钥对
免交互上传至服务器 :
四、TCP Wrappers 访问控制
格式:
例如:
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
TCP Wrappers 机制的基本原则: