1. 概念介绍

1.ssh 安全的远程连接 数据信息是加密的 默认可以root用户连接 默认端口 22
2.telent 不安全的远程连接,数据信息是明文的 默认端口23

shell 每次连接登录到一个llinux中就是一个shell

2.ssh 原理

私钥:钥匙
公钥:锁头

1.客户端   		执行远程连接命令
2.客户端服务端  	建立三次握手的过程
3.服务端  		让客户端进行确认是否接收到服务端的公钥
4.客户端 		进行公钥的确认 
5.服务端    		让客户端确认登录的用户
6.客户端     	进行密码信息的确认
7.客户端 服务端  	远程连接成功

私钥和公钥的作用:对数据信息进行加密处理,进行用户身份的验证

ssh 远程连接的方式
a 基于口令的远程连接方式 比较麻烦 来接不太安全
b 基于秘钥的方式进行连接 安全方便

2.2 基于秘钥的连接过程

1. 客户端(管理端)    执行命令创建秘钥对
2. 客户端(管理端)    建立远程连接(口令),发送公钥信息
3. 客户端(管理端)    再次建立远程连接
4. 服务端(被管理端)  发送公钥质询信息(你要是能打开我的锁头吗)
5. 客户端(管理端)    处理公钥质询信息(钥匙将锁头打开),将质询结果返回给服务端
6. 服务端(被管理端)  接收到质询结果,建立好远程连接

3. 基于秘钥连接的部署过程

3.1配置

1.管理端创建密钥对信息

ssh-keygen -t dsa 

2.管理端将公钥进行分发

ssh-copy-id -i /root/.ssh/id_dsa.pub root@172.16.1.31

3.远程连接测试

ssh 172.1.31

3.2 多台服务器的配置(脚本)

3.2.1 几台主机的ip已知

ssh-copy-id -i /root/.ssh/id_pub.dsa root@172.16.1.$ip

假若这种方式就会出现交互式的:需要输入密码才能发送
还要确认yes 或 no
端口号问题

1.安装 sshpass

yum  -y install sshpass

2.解决免交互模式

sshpass -p123456 ssh-copy-id -i /root/.ssh/id_pub.dsa root@172.16.1.$ip

3.端口号问题 -p

sshpass -p123456 ssh-copy-id -i /root/.ssh/id_pub.dsa -p 22 root@172.16.1.$ip

4.yes提示

man ssh
/-o
StrictHostKeyChecking
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_pub.dsa -p 22 root@172.16.1.$ip "-o StrictHostKeyChecking=no"

5.完整的脚本(默认的端口是22 不是则需要加上-p 端口号)

#!/bin/bash

for ip  in 31 41 
do
	echo "====================start fenfa 172.16.1.$ip===================="
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub  root@172.16.1.$ip "-o StrictHostKeyChecking=no" &>/dev/null
	echo "=================host 172.16.1.$ip success!!!!=================="
	echo "====================            end         ===================="
done

脚本的执行 (sh 文件名称)

sh fenfa_id.sh

检查是否成功
vim check_id.sh

#!/bin/bash

for ip  in 31 41 
do
	echo "====================check 172.16.1.$ip===================="
	ssh 172.16.1.$ip hostname	
	echo "====================            end         ===================="
done

6.假若有很多台服务器,并且ip地址没有规律(默认的端口是22 不是则需要加上-p 端口号)
创建一个文件
touch ip.txt

172.16.1.41
172.16.1.32
172.16.1.52
172.16.1.98
172.16.1.252
172.16.1.23

脚本:

#!/bin/bash

for ip  in `cat /server/scripts/ip.txt`
do
	echo "====================start fenfa          $ip===================="
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub  root@$ip "-o StrictHostKeyChecking=no" &>/dev/null
	echo "=================host          $ip success!!!!=================="
	echo "====================            end         ===================="
done

4. ssh服务配置文件

4.1文件的一些中安要参数

/etc/ssh/sshd_config

port 22  端口号
ListenAddress 0.0.0.0  监听地址,能接受的远程访问请求
						指定的箭筒地址只能是本地网卡上有的地址

PermitEmptyPasswords no  允许远程用户使用空密码进行连接,默认不允许
PermitRootLogin yes  不允许root用户进行远程连接
GSSAPIAuthentication no   --- 是否开启GSSAPI认证功能 不用的时候关闭 
UseDNS no                 --- 是否开启反向DNS解析功能 建议进行关闭

4.2远程服务防范入侵案列

1.使用秘钥登录,怒用密码登录
2.牤牛阵法
a 防火墙粉笔ssh
b 开启ssh只监听内网ip
3.尽量不给服务器的外网ip
4. 一个服务器的软甲安装最小化
5. 给系统的重要文件一个指纹,监控指纹即可 md5sum
6. 给他上锁 chattr +i

4.3 sftp参数详解

ls       查看远程ftp服务器信息
cd   --- 查看远程ftp服务器信息
lls      查看本地ftp客户端信息
lcd  --- 查看本地ftp客户端信息
get  --- 下载信息
put  --- 上传信息
help --- 查看命令帮助
bye  --- 退出ftp连接
Logo

更多推荐