Linux:SSH和密钥对
一、SSH远程管理
SSH是一种安全通道协议,用来实现字符界面的远程登录,远程复制等,对通信双方的数据传输进行了加密处理,包括用户登录时输入的用户口令,因此SSH协议具有很好的安全性(系统默认安装,已配置好防火墙和安全控制)
两种配置文件:
1.ssh_config #针对客户端配置文件
2.sshd_config #针对服务端配置文件
1.SSH的组成结构
1.传输层协议(ssh-trans)
服务器认证,保密性、完整性的数据,数据的压缩功能(重要组件)一般运行在TCP/IP的连接上,也可能用于其他可靠的数据流上(主要提供加密技术,密码主机认证,数据完整性、数据压缩、基于主机认证,不能进行用户认证)
2.用户认证协议
向服务器提供客户端用户鉴别的功能,运行在ssh-trans之上,开始执行用户认证,从低层协议接收会话的标识符,认证私钥的所有权
root → 认证用户是否存在,在服务端中有没有这个用户 → 提示输入用户密码 → 认证密码是否和用户相符合 → 登录成功
3.连接协议(ssh-connect)多个加密隧道分成逻辑隧道
他运行在用户认证之上,提供了交互式的登录会话,远程命令的执行,转发TCP/IP的连接
连接协议 → 提供交互式登录 → 用户认证 → 认证用户存在,密码匹配 → 传输协议 → 建立连接
服务端配置文件位置/etc/ssh/sshd_config
#ListenAddress 不变 (监听地址)
#LoginGraceTime 2m (标识掉即可)
#PermitRootLogin yes (允许root登录)
#MaxAuthTires 6 (最大密码输入次数)
相关命令:
ssh [用户名]@[IP地址] #远程连接命令行格式
ssh -p [端口号] [用户名]@[IP地址] #指定端口号远程连接
二、远程复制功能
1.SCP命令
将远程主机的文件复制到本机(远程复制)从其他设备复制到本机
远程复制目录
命令:scp -r [用户名]@[IP地址]:[目录全路径] [要复制到本机的位置]
```![在这里插入图片描述](https://img-blog.csdnimg.cn/51fd34f4156341599349e5c7cf9e6e54.png)
指定端口号并复制到指定主机的本地目录
```bash
命令:scp -P [端口号] [用户名]@[IP地址]:[目录全路径] [要复制到本机的位置]
2.SFTP命令
sftp是基于ssh的加密技术来的,传输效率比ftp低,但安全性更高,语法与ftp相同
命令:sftp [用户名]@[IP地址] #远程连接主机(加密)
指定端口号远程连接(加密)
命令:sftp -P [端口号] [用户名]@[IP地址] #指定端口号远程连接
在sftp的远程操作连接之中,也可以正常进行get下载和put上传等操作
3.用户登录限制
进行用户登录限制(允许或拒绝指定用户登录权限)
AllowUsers #允许指定用户登录(可多用户指定,多用户之间用逗号隔开)
DenyUsers #拒绝指定用户登录(可多用户指定,多用户之间用逗号隔开)
@[IP地址] #只能从指定的终端允许或者拒绝登录
具体修改配置文件位置在/etc/ssh/sshd_config内修改(在最下面一行进行编辑)
格式:AllowUsers/DenyUsers [用户名]
之后即可重启服务,配置文件生效
命令:systemctl restart sshd
DenyUsers指定终端无用,直接拒绝指定用户,允许的是本地的用户,拒绝的是第三方用户
三、密钥对
1.密钥
密钥对的加密方式(rsa,ECDSA,DSA)
① 用户账户登录密码 ② 密钥登入
密钥对在ssh当中就是一个参数,铭文转换为密文或者密文转换为铭文的算法输入中的参数,分为对称密钥,非对称密钥
在配置文件/etc/ssh/sshd_config中
PasswordAuthentication #启动密码验证
PubkeyAuthentication #开启密钥验证(默认开启)
AuthorizedkeysFile #指定公钥库的文件
2.创建密钥对步骤
1.指定加密方式创建密钥对
命令:ssh-keygen -t ecdsa
2.查看.ssh内是否正常生成了两个文件
命令:ls
3. 公钥对传给服务器
命令:ssh-copy-id -i id_rsa.pub [用户名]@[IP地址]
4.刷新环境
命令:ssh-agent bash
ssh-add
5.登录另一台虚拟机,看看是否成功
命令:ssh [用户名]@[IP地址]
四、Tcp Wrappers
Tcp Wrappers相当于Tcp专用的防火墙,可以监听端口(只针对Tcp服务)
Tcp服务程序的端口,要匹配Tcp Wrappers是否开放端口才能进行访问,不需要运行tcpd程序
1.查看连接库
命令:ldd $(which ssh vsftpd)
设置允许和拒绝的配置文件在/etc/hosts.deny(拒绝)或者/etc/hosts.allow(允许)
2.保护机制的实现方式
① 通过tcpd程序对其它服务程序进行包装
② 由其它服务程序调用libwrap.so.*链接库