实验环境:centos7.6,2G内存,50G硬盘大小,虚拟机服务端ip:172.16.1.61 客户端ip:172.16.1.7,172.16.1.41,172.16.1.31
SSh服务连接工作原理
1)客户端主动向服务端发起连接请求
2)服务端接收到信息后,将自己的公钥(/etc/ssh/ssh_host_ed25519_key.pub)发送给客户端
3)客户端会提示你是否(yes/no)连接,当输入yes后
4)客户端将服务端发过来的公钥进行存储,放在/root/.ssh/known_hosts
5).客户端将私钥与服务端发过来的公钥进行整合,生成密钥对,并发送给服务端
6).服务端收到客户端发过来的密钥对,用自己的私钥解密,此时加密完成,并告诉客户端可以连接了
7)客户端输入连接服务端的密码,然后连接
SSH远程连接方式:
a.基于口令的方式连接,密钥对只能完成数据加密过程,连接麻烦,还不安全
b.基于密钥的方式连接,密钥对可以完成身份认证过程,连接方便,比较安全
基于密钥的方式连接原理:
1)客户端 执行命令创造密钥对
2)客户端 建立远程连接(口令),发送公钥信息
3)客户端 再次建立远程连接
4)服务端 发送公钥质询信息
5)客户端 处理公钥质询信息,将信息返回给服务端
6)服务端 收到确认信息,建立连接
SSH实现基于密钥连接的部署步骤
1)客户端创建密钥对信息:
ssh-keygen -t dsa
rsa只是其中一种加密方式,还有以下几种对密钥进行加密的方式
创建成功之后可以看到在/root/.ssh/目录下面多出了两个文件
2)客户端分发公钥:
ssh-copy-id -i /root/.ssh/id_dsa.pub root@172.16.1.41
ssh-copy-id -i /root/.ssh/id_dsa.pub root@172.16.1.31
ssh-copy-id -i /root/.ssh/id_dsa.pub root@172.16.1.7
3)远程连接测试:ssh 172.16.1.41
可以看到连接成功了
4)编写脚本进行批量分发公钥
vim ssh_copy.sh
#!/bin/bash
for ip in 7 31 41
do
ssh-copy-id -i /root/.ssh/id_dsa.pub root@172.16.1.$ip
done
优化
1.免交互,进行公钥分发
1)安装软件
yum -y install sshpass
2)执行免交互式发送公钥命令
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub root@172.16.1.31
3)连接时不用输入yes/no
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub root@172.16.1.31 "StrictHostKeyChecking=no"
4)当端口发生改变时的连接方式
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub root@172.16.1.31 -p 1314 “StrictHostKeyChecking=no”
5)可以用过ssh不用登上查看其它服务器就能直接看到信息
SSH服务配置文件:/etc/ssh/sshd_config,里面重要的几个参数说明
Port 22 --修改服务端口信息
ListenAddress --监听地址,指定一块网卡能够接受远程访问连接请求,只能是本地网卡上有的地址
PermitEmptyPasswords no --是否允许远程用户使用空密码登陆,默认不允许
PermitRootLogin yes/no --是否禁止root用户远程连接主机,建议no,不禁止
GSSAPIAuthentication --会对IP地址继续反解析,导致连接较慢,不用的时候关闭
UseDNS no --是否开启反向DNS解析功能,建议关闭
SSH远程连接服务设置安全防范措施
1.采用密钥登陆,密钥登陆更安全
2.禁止root用户进行远程登陆,在上面的配置文件中,设为PermitRootLogin no
3.更改服务端口,改为自己知道的端口。在配置文件中的Port修改
4.防火墙关闭ssh,禁止外网连接,只允许内网,在配置文件中设置监听的ip地址,ListenAddress
scp用法说明
用法:
scp [参数] [原路径] [目标路径]
从本地复制到远程:
scp -rp 1.txt root@172.16.1.41:/home/1.txt
从远程复制到本地:
scp -rp root@172.16.1.41:/home/1.txt 1.txt
参数说明:
参数 | 作用 |
---|---|
-C | 允许压缩。(将-C标志传递给ssh,从而打开压缩功能) |
-p | 保留原文件的修改时间,访问时间和访问权限 |
-q | 不显示传输进度条 |
-r | 递归复制整个目录 |
-v | 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。 |
-i --identity_file | 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。 |
-l --limit | 限定用户所能使用的带宽,以Kbit/s为单位。 |
P --port | 注意是大写的P, port是指定数据传输用到的端口号 |
sftp用法说明
1.连接:sftp ip地址
2.指令说明
指令 | 说明 |
---|---|
ls | 查看远程ftp服务器信息 |
cd | 查看远程ftp服务器信息 |
pwd | 查看当前服务器的路径 |
lls | 查看本地ftp客户端信息 |
lcd | 查看本地ftp客户端信息 |
lpwd | 查看远程服务器的路径 |
get | 下载信息,从远程服务器,下载到本地 |
put | 上传信息,从本地服务器上传到远程 |
help | 查看命令帮助 |
bye | 退出ftp连接 |