linux命令与公私钥
昨日内容回顾
etc目录
配置相关
/etc/profile
环境变量文件
/etc/motd
开机欢迎界面
usr目录
程序相关
四种安装软件的方式
1.yum安装 自动解决依赖性问题
2.rap安装 不会自动解决依赖性问题 主要用于查看
3.编译安装 类似于windows中自定义安装程序
4.二进制包 就是一个程序文件打开即用
var目录
日志相关
服务器运行相关的日志以及用户登录相关的日志
ps:针对日志文件的优化处理
proc目录
硬件软件详细信息 cpu 内存 硬盘
ps:服务器资产管理系统
优化相关
系统优化
远程仓库的更换(yum仓库 epel仓库)
安全优化
selinux默认情况下需要关闭 因为会影响管理员的操作
防火墙 firewalld
systemctl status 服务名
systemctl stop 服务名
systemctl disable 服务名
上传下载
1.直接下载工具lrzsz
2.使用xshell提供的拖拽方式
"""
more\less
head\tail
linux三剑客
grep
sed
awk
"""
别名功能
我们学习的很多目录其实都是缩写的形式(别名)
别名相关的关键字>>>:alias
文件属性信息
文件类型
文件索引
用户与用户组
文件权限 4 2 1 0
文件操作命令
find查找文件
tar压缩相关
tar -zcvf 打包压缩
tar -zxvf 解压缩
今日内容概要
文件相关信息
时间相关操作
crontab定时任务
paramiko模块
1.公钥私钥
2.模块代码
3.代码封装
今日内容详细
文件相关信息
# 查看普通⽂件⼤⼩⽅法
[root@jason /tmp]# ls -lh /etc/services
# 查看⽬录⽂件⼤⼩⽅法
du 显示⽬录中的数据真实占⽤磁盘空间⼤⼩
du -sh /etc/
-s 将⽬录下⾯的数据信息⼤⼩进⾏统计
-h 以⼈类可读⽅式显示
# 企业案例: 磁盘空间不够使⽤了删除⽐较⼤的⽂件
⽂件索引属性信息
01. 确认磁盘空间是否不够⽤了
df -h
02. 确认⽐较⼤的⽂件数据信息
du -sh /usr/*
03. 没有⽤的⽂件(检查⼤⼩会不会有变化)
⽂件⼤⼩产⽣变化的⽂件如何处理:备份 清空⽂件中的数据>⽂件信息
⽂件⼤⼩不会产⽣变化的⽂件:备份 直接进⾏删除
04. 进⾏磁盘空间利⽤率确认
文件索引信息
inode(index node)
概念说明:书⽬录 索引指向信息 指向数据真实存储在磁盘的位置
# block
概念说明: ⽤于真实存储数据信息
如何查看block信息:
[root@jason /tmp]# ls -l /etc/hosts
block默认⼤⼩4k 可以调整, 但建议⼀定要在格式化分区时调整
# 问题: block是调整⼤⼀些10M,还是调整⼩⼀些10k
情况⼀: 存储数据量⽐较⼤的时候
正确答案: 是选择⼤的block更好
可以减少block消耗, 节省磁盘IO
情况⼆: 存储数据量⽐较⼩的时候
正确答案: 选择⼩的block会更好
链接信息
可以节省磁盘空间, 可以让更多数据进⾏存储
链接信息
硬链接:直接指向硬盘中真正的数据所在位置
硬链接各自不影响数据的访问
软链接:相当于是windows中的快捷方式
软链接的出处一旦删除所有软连接都会失效
# 硬链接
概念说明:
磁盘(超市--数据) 有⻔进⼊超市 cat /etc/hosts
多⻔进⼊超市 cat
/oldboy/hosts
只能对⽂件做硬链接不能对⽬录做硬链接
作⽤说明:
01. 可以⽤于查看数据信息
02. 可以⽤于作为备份
03. 当所有硬都被删除, 等价于数据将会被删除
区别说明:
01. 对于源⽂件关注程度
源⽂件删除, 不会对硬链接⽂件产⽣影响
02. 对于链接⽂件关注程度
不会有影响, 对于源⽂件硬链接数会减少
# 软链接
概念说明:
创建⼀个⽂件或者⽬录的快捷⽅式
作⽤说明:
01. 使复杂路径操作更加⽅便
02. 使不同软件程序版本调⽤更加⽅便
区别说明:
01. 对于源⽂件关注程度
源⽂件被删除, 会影响软链接⽂件
系统时间
02. 对于链接⽂件关注程度
毫⽆影响
"""详细操作"""
1.硬链接
ln /etc/hosts /oldboy/hard_link_hosts.txt
cat /etc/hosts
cat /oldboy/hard_link_hosts.txt
echo oldboyinfo >> /etc/hosts
cat /etc/hosts
cat /oldboy/hard_link_hosts.txt
2.软连接
ln -s /etc/sysconfig/network-scripts/ifcfg-eth0
/oldboy/soft_link_eth0
系统时间
1.电脑时间如何实现实时同步
电池 电容 网络请求
2.系统时间如何查看
date
# 按照⾃定义需求, 显示时间信息
date +年-⽉-⽇ ⼩时:分钟:秒
date +%y-%m-%d # date +%F
date +"%y-%m-%d %H:%M:%S"
# 显示过去的时间信息 显示未来的时间信息
显示过去的时间
date +%F -d "-3 day"/date +%F -d "-3day"
date +%F -d "+3 day ago"
date +%F -d "-3 year"
企业案例
定时任务
显示未来的时间
date +%F -d "+3 day"/date +%F -d "+3day"
# 设置系统时间⽅法
date -s "2022-11-11 11:11:11"
'''时间同步服务centos6为ntp centos7位chrony'''
服务器集群时间同步策略
回想电影里面飞虎队行动之前对表的操作
以服务器集群中某一台计算机作为时间参考
机器克隆
1.链接克隆与完整克隆的区别
2.克隆出来的机器一定要修改ip地址
定时任务
'''三种实现⽅式'''
定时任务软件:cronie
rpm -qa cronie
定时任务软件:atd
定时任务只执⾏⼀次(淘汰)
定时任务软件:anacron
只适合⾮24⼩时运⾏的服务器(淘汰)
crontab命令
paramiko模块
功能:通过python代码连接服务器并执行相关操作
并且支持用户名密码连接和公钥私钥连接
pip install paramiko
基本使用(用户名密码登录)
import paramiko
# 用户名和密码的方式
# 创建SSH对象(固定)
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机(固定)
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='10.0.0.200', port=22, username='root', password='123')
# 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
"""
stdin 支持传额外的命令
stdout 命令正确的执行结果
stderr 命令错误的执行结果
"""
# 获取命令结果 还可以利用stdin继续传值 eg:-y确认
result = stdout.read()
print(result.decode('utf8'))
# 关闭连接
ssh.close()
公钥私钥
主要的目的是为了避免使用用户名密码的时候信息泄露造成安全性问题
简单的理解
1.每台计算机都可以拥有自己的公钥和私钥
2.你只需要将公钥交给别人 以后通过比对私钥就可以证明你的身份
详细的理解
鲍勃的公钥私钥
如何产生公钥私钥
mac电脑>>>:终端可以直接产生并发送给服务端
windows电脑>>>:只支持产生不支持发送(可以利用一些第三方软件加强)
git软件
桌面空白区域鼠标右键即可查看是否安装成功
git bash here
"""
1.生成
ssh-keygen -t rsa 连续按三下回车即可
2.拷贝公钥到远程服务器
ssh-copy-id -i 公钥文件绝对路径 用户名@服务器ip地址
"""
# 公钥和私钥(先讲公钥保存到服务器上)
import paramiko
# 读取本地私钥
private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')
# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='123.206.16.61', port=22, username='root', pkey=private_key)
# 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 获取命令结果
result = stdout.read()
print(result.decode('utf-8'))
# 关闭连接
ssh.close()
paramiko其他操作
import paramiko
# 用户名和密码
transport = paramiko.Transport(('123.206.16.61', 22))
transport.connect(username='root', password='123')
sftp = paramiko.SFTPClient.from_transport(transport)
# 上传文件
sftp.put("本地文件路径", '远程服务器路径') # 注意上传文件到远程某个文件下 文件必须存在
# 下载文件
sftp.get('远程服务器文件路径', '本地文件路径') # 将远程文件下载到本地并重新命令
transport.close()
# 公钥和私钥
import paramiko
private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')
transport = paramiko.Transport(('hostname', 22))
transport.connect(username='jason', pkey=private_key)
sftp = paramiko.SFTPClient.from_transport(transport)
# 将location.py 上传至服务器 /tmp/test.py
sftp.put('/tmp/location.py', '/tmp/test.py')
# 将remove_path 下载到本地 local_path
sftp.get('remove_path', 'local_path')
transport.close()
代码封装
# 以下代码不用死记硬背 知道原理会用即可
import paramiko
class SSHProxy(object):
def __init__(self, hostname, port, username, password):
self.hostname = hostname
self.port = port
self.username = username
self.password = password
self.transport = None
def open(self): # 给对象赋值一个上传下载文件对象连接
self.transport = paramiko.Transport((self.hostname, self.port))
self.transport.connect(username=self.username, password=self.password)
def command(self, cmd): # 正常执行命令的连接 至此对象内容就既有执行命令的连接又有上传下载链接
ssh = paramiko.SSHClient()
ssh._transport = self.transport
stdin, stdout, stderr = ssh.exec_command(cmd)
result = stdout.read()
return result
def upload(self, local_path, remote_path):
sftp = paramiko.SFTPClient.from_transport(self.transport)
sftp.put(local_path, remote_path)
sftp.close()
# 步骤2:下面的先别拷贝
def close(self):
self.transport.close()
def __enter__(self): # 对象执行with上下文会自动触发
self.open()
return self # 这里发挥上面with语法内的as后面拿到的就是什么
def __exit__(self, exc_type, exc_val, exc_tb): # with执行结束自动触发
self.close()
"""
推到步骤:
1.初次封装
只有init、open、command、upload、close方法
这个时候要想执行和上传下载都支持必须先执行open方法,所有操作完毕之后执行close方法
obj = SSHProxy(...)
obj.open()
obj.command()
obj.upload()
...
obj.close()
2.进阶升华
每次都需要先open最后再close 这种操作跟我们之前python基础问文件操作有点类似
文件操作最后利用with上下玩完成简便写法 但是paramiko模块产生的对象默认是不支持with语法的
obj = SSHProxy(...)
with obj 报错 但是报错信息里面有提示 说对象里面没有__enter__方法 也就是说with会自动触发对象__enter__方法
"""
if __name__ == '__main__':
with SSHProxy("127.0.0.1",22,'root','jason123') as ssh:
# 拿到改对象后就可以无限制的在一个链接内执行命令并上传下载文件
ssh.command('df')
ssh.command('df')
ssh.upload(r'D:\jason\s10\day01\4.基于paramiko操作\xx', '/data/s27/xx')
linux命令与公私钥的更多相关文章
- 安全运维 -- Linux服务器使用公私钥密匙证书登录
环境:Ubuntu 16 前言 黑客遍地都是,ssh/pop3/ftp等爆破工具的流行让站长的日常运维工作量大大加重.Metasplot,Bruter等工具更是针对以上协议有专门 的破解方法,有字典破 ...
- linux命令生成公私钥
生成原始rsa私钥文件: openssl genrsa -out rsa_private_key.pem 1024 将原始的rsa私钥转换未pkcs8格式(即生成私钥文件): openssl pkcs ...
- 用mac的terminal通过公私钥和ssh登录Linux
刚开始使用mac,会觉得很难用,在网上找的方法也差强人意,经过自己的实践,找到下面这种方法,很好用,步骤也很简单 1.在mac本的个人目录下创建一个文件夹:.ssh. 在这个文件夹下使用ssh- ...
- Linux ssh 公私钥配置
Linux ssh 公私钥配置 ssh 公私钥可实现无密码的情况下直接直接登录到服务端.方便我们管理,而且也可以设置ssh完全通过公私钥登录,不可通过密码登录,来提高我们的服务器安全程度. 配置 生成 ...
- ssh公私钥登录方式设置
在Linux中ssh登录远程主机的时候能够进行公私钥的认证方式. ①环境说明:两台Linux主机,host1:192.168.5.1,host2:192.168.5.10. 如今在host1上面设置然 ...
- linux命令学习笔记
操作文件和文件夹: copy: $ cp file1 file2 $ cp -r dir1 dir2 move: $ mv file .. $ mv file dir/ rename: $ mv fi ...
- 使用openssl命令剖析RSA私钥文件格式
原文 https://blog.csdn.net/zhymax/article/details/7683925 Openssl提供了强大证书功能,生成密钥对.证书,颁发证书.生成crl.验证证书.销毁 ...
- (转)Linux命令之Ethtool用法详解
Linux命令之Ethtool用法详解 原文:http://www.linuxidc.com/Linux/2012-01/52669.htm Linux/Unix命令之Ethtool描述:Ethtoo ...
- linux 命令练习 2018-08-27
linux 命令练习 2018-08-27 uname 显示系统名字 [test@localhost ~]$ uname Linux uname -a 即列出linux的内核版本号 [test@ ...
- Openssl生成RSA公私钥以及将公钥转换成C#支持的格式
Openssl生成RSA公私钥以及将公钥转换成C#支持的格式 1.RSA算法介绍 RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密.RSA ...
随机推荐
- debian如何删除无效的应用图标
1.看/usr/share/applications下是否有xxx.desktop 2.可以到-/.local/share/applications下看是否有xxx.desktop 来源:https: ...
- CSS布局秘籍(1)-任督二脉BFC/IFC
01.CSS布局 1.1.正常布局流(Normal flow) 正常布局流 就是不做任何布局控制,按照HTML的顺序(从左到右,从上而下)进行布局排列.网页基于盒子模型进行正常的布局,主要特点: 盒子 ...
- 解决vue中对象属性改变视图不更新的问题
在使用VUE的过程中,会遇到这样一种情况, vue data 中的数据更新后,视图没有自动更新. 这个情况一般分为两种, 一种是数组的值改变,在改变数组的值的是时候使用索引值去更改某一项,这样视图不会 ...
- Redis管理及监控工具推荐
推荐一款Redis管理软件.[官网 http://www.redisant.cn/] 功能描述: 1. 键和字段CRUD和glob. 2. 适用于字符串.列表.散列.集合.有序集合. 通过漂亮的用户界 ...
- 用 vue3 中的 reduce(累加器) 随机生成100个字母,放入数组中,统计每个字母出现的次数
一.首先不用 reduce() 来实现 代码如下: <template lang=""> <div> <h1>统计每个字母出现的次数,不使用r ...
- 使用Jupyter记事本记录和制作.NET可视化笔记
前言:对于记录笔记的工具特别多,不过对于程序员来说,记录笔记+程序代码+运行结果演示可以同时存在,无疑会极大增加我们的笔记的可读性和体验感.以前在写python的时候,使用jupyter的体验很好,所 ...
- windows10 ftp文件夹错误
遇到问题: 解决办法: 1. cmd直接访问 ftp ip 2. 启用tftp client 从文件夹访问 注直接访问会弹出如之前报错一样的失败:ftp://ip ftp://用户:密码@ip 使用如 ...
- Ubuntu 20.04 开启root权限登陆、网卡配置
个人名片: 对人间的热爱与歌颂,可抵岁月冗长 Github:念舒_C.ying CSDN主页️:念舒_C.ying 个人博客 :念舒_C.ying Ubuntu 20.04 开启root权限登陆.网 ...
- 基于echarts的带流动光效的折线图-lowline-for-echarts使用记录
起源 在技术群看到有人问这个react插件,带着好奇心看了一下. 标题:基于echarts的带流动光效的折线图 - 掘金 网址:https://juejin.cn/post/7090566240233 ...
- TKE 超级节点,Serverless 落地的最佳形态
陈冰心,腾讯云产品经理,负责超级节点迭代与客户拓展,专注于 TKE Serverless 产品演进. 背景 让人又爱又恨的 Serverless Serverless 炙手可热,被称为云原生未来发展的 ...