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.*链接库