Django RestFramework 使用 JWT 认证
JWT 的优点优点:无状态,服务端不保存 token缺点:生成的 token 在有效期内一直有效,无论用户注销、修改密码。(可以通过存 redis,通过代码进行删除 redis 里的 token 解决。) 开始使用配置setting.py 里面设置默认值 这里的 DEFAULT_AUTHENTICATION_CLASSES 是默认设置,也可以给类视图自定义views.py authentication_classes = [JSONWebTokenAuthentication] urls.py 里面配置生成 token 的路由 使用先访问 api-token-auth 接口,这个接口只能通过 POST 访问,带上用户名和密码,认证成功后会生成一个 token 类似于: 拿着这个 token 去请求接口: 我们前缀设置的是 JWT, 所以在请求时在 Header 里带上 JWT 即可 修改默认返回值默认的返回值仅有 token,通过修改该视图的返回值可以完成我们的需求。在应用中新建一个 utils.py 文件: 在 settings.py 里面...
ssh不能登录常见问题调试
常见问题权限问题 家目录的权限对不对,检查下是不是 0755 或更小权限 authorized_keys 文件的权限, 一般为: 0644 客户端的 id_rsa 私钥文件的权限,需要设置成 600 ,太开放会被拒绝连接。 密钥类型兼容问题比如在 OpenSSH 8.8+ 版本中,出于安全考虑,默认禁用了基于 ssh-rsa(SHA-1 签名)的公钥算法。这会导致旧的 RSA 密钥在连接时出现 no mutual signature algorithm 或认证失败的问题。 比如高版本客户端连接低版本服务端可以修改客户端指定的算法 ~/.ssh/config 客户端调试 服务器调试打开 ssh 日志systemd 管理的服务,需要修改 /usr/lib/systemd/system/sshd.service , 修改 ExecStart 加上参数 -E /var/log/ssh/sshd.log 如: 然后再查看 sshd 的日志: 这里提示:Authentication refused: bad ownership or modes for directory /...
fail2ban配合cloudflare cdn使用
Cloudflare 是一家全球最著名的 CDN 加速服务商,提供了免费和付费的网站加速和保护服务。即使是免费版,也提供了比较全面和强大的功能,非常不错。 通过使用 Cloudflare CDN 服务提供的全球节点,一方面可以提高网站响应速度和性能,节省源站资源;另一方面也可以保护站点抵御攻击,保证网站长期稳定在线。 fail2ban 是一个开源工具, 它通过分析日志, 将不满足要求的访问 (比如 cc 攻击、对网站进行扫描等) 的 ip 获取到, 通过自带防火墙 (iptables 等) 进行封禁. 问题一: 如何让 fail2ban 获取真实 IP 想要通过 fail2ban 来封禁 ip, 那么先要获取到用户 (或黑客) 的 ip, 如果不进行处理, 那么大概率你获取到的是 cloudflare 请求你用的 ip, 封禁这个 ip 是没有意义的… 我的服务架构是 cloudflare –> nginx –> 后端服务 在 nginx 上面配置 后端也要配置打印在日志里的 ip 字段为 X-Real-IP, 如果读取的是 Nginx 日志, 那配置一下 Ngi...
制作macOS启动盘和dmg镜像
下载 macOS 安装文件参考苹果官方文档: https://support.apple.com/zh-cn/102662, 使用 App Store 下载即可。下载完成后会显示在应用程序里面 制作dmg磁盘镜像直接写入到u盘或移动硬盘创建一个空白的 dmg 镜像 打开「磁盘工具」,在顶部菜单选择「文件」>「新建映像」>「空白映像」,然后如下图: 「大小」的设置,根据安装镜像大小, 再增加 2GB, 我这里粗略设置为 15 GB;「格式」设置为「Mac OS 扩展(日志式)」;「分区」为设置为「单个分区 - GUID 分区图」;「映像格式」为「读/写」; 挂载这个磁盘镜像, 直接双击即可自动挂载。 数据写入到 dmg 磁盘 参考: https://support.apple.com/zh-cn/101578 写入完成后, 推出这个 dmg 磁盘, 一般在访达中就能推出 压缩 dmg 磁盘 上面创建的 dmg 磁盘大小为 15G, 为了保证空间足够写入, 数据量其实没到 15G, 可以压缩一下。 打开「磁盘工具」,顶部菜单选择「映像」>「转换」,选...
macOS常用操作记录
主机名 Hostname在 macOS 上有 3 个主机名,查看方式: HomeBrew安装 HomeBrewhttps://brew.sh/zh-cn/ brew 常用操作 常用工具安装 进程管理 安装卸载 安装字体 使用 GNU 工具macOS 自带的命令是 BSD 命令,有些语法和 Linux 不一样,可以手动安装 GNU 版本的工具替代 可以直接在命令前加 g 来调用,比如 ggrep gtar gsed 来直接使用,也可以配置在 zshrc 里,配置在 $PATH 之前 终端配置sudo 免密码 zsh 配置 安装 FZF ls 查看的文件颜色mac 的 ls 命令默认的颜色比较难看, 比如可执行程序显示红色, 可以通过这种方式修改一下. 修改前: 配置在.zshrc 内 修改后: 在终端中使用 code 命令启动 vscode先安装 code:打开 VSCode -> 查看 -> 命令面板 -> 输入 shell command –> 点击 Shell Command: Install 'code...
开源组网工具-easytier
这个工具是利用 NAT 打洞实现,需要有一台服务器(可以自建也可以用官方提供的)做中介。经测试打洞成功率很高,速度也不错。打洞成功后,异地的机器就像在同一个内网一样方便,访问 smb、家里的 nas、远程桌面等等,并且支持自动对内网网段进行转发(zerotier 需要配置 iptables 转发)自建服务器后感觉比 zerotier 好用。zerotier 的文档可以看 群晖NAS部署zerotier内网穿透访问 附上官方的配置文件生成工具:https://easytier.cn/web/index.html#/config_generator 自建服务端这个步骤可以省略,不自建可以用社区提供的免费服务器。一个官方服务器地址:uri = "tcp://public.easytier.top:11010" 我安装的是 easytier 的 docker 版本。 config.toml 启动命令 生成 WireGuard 配置文件 生成的配置文件需要做如下修改: 修改完成后,导入客户端即可使用。 MacBookconfig.toml 启动命令 群晖 ...
shell脚本获取自身的信息
写 shell 脚本, 有时候需要获取一些信息, 比如这个脚本的名字,脚本所在的目录,脚本的绝对路径, 这个脚本的 pid, 参数等。 变量 说明 $0 脚本自身的路径(执行的时候调用路径) $1 第一个参数 $? 上一个脚本的返回值,0为正常 $* 所有的参数 $# 参数的个数 $$ 当前脚本的pid $_ 上一条命令的参数 获取脚本的文件名$0 是脚本的路径,这个路径有可能是相对路径,那么可以使用 dirname 和 basename 配合来获取脚本绝对路径 获取脚本的绝对路径 进入临时目录
Linux大文件分割与合并
服务器上有个文件需要下载到本地, 但是文件较大, 我们都是通过 jumpserver 连接的, 通过 jumpserver 下载难免会遇到网络波动等导致下载失败, 我们可以通过分割大文件成一个个小文件, 然后下载后再在本地合并. 用到的命令是 split split 分割大文件 参数说明: 参数 说明 -b 指定每个文件的大小, 支持 K M G -d 指定后缀编码为数字,默认编码为字母 -a 指定后缀长度,3 表示 3 位数, 比如上面的命令, 生成的文件就是 tmp.000 … ./tmp. 这个是生成的文件名前面的部分 如果报错 split: output file suffixes exhausted 说明后缀不够用了, 比如参数 -a 1 支持的后缀为 0 - 9 , 如果文件太大, 超过了 9, 就会报这个错. 使用 cat 合并大文件 合并完成再验证一下 MD5 值, 和服务器做下对比即可.
Ubuntu 22.04 内核相关操作
文章内容在 Ubuntu 22.04 系统下测试成功, 版本相差过大请自测。 开机显示启动项新版 Ubuntu 好像默认不显示启动项而直接进入系统了,可以通过修改 /etc/default/grub 来实现开机显示启动选项列表 修改完成后执行 sudo update-grub 更新 grub 配置 下面两种方式二选一即可。 更换使用的内核版本(通过启动项 uuid 指定方式)查看当前在用的内核版本 6.5.0-14-generic 查看系统启动项 比如 ‘Advanced options for Ubuntu’ 选项的 uuid 是 gnulinux-advanced-89ee03ba-6808-4977-a4fb-9b10174744f8 内核版本启动项是 gnulinux-5.15.0-1005-azure-advanced-89ee03ba-6808-4977-a4fb-9b10174744f8 那么最终的启动项配置就是 uuid 对应关系: 对应的启动界面 submenu: 对应的启动界面 menuentry: 修改默认启动项 修改为上一步生成的 启动项...
获取Kubernetes的token
获取 admin 的 token如果有这个 secret, 可以直接查看 token 新版 k8s 命令为选择一个现有的 serviceaccount 使用这个 serviceaccount 创建一个 token(并设置有效期) 新建一个用户获取 token如果考虑到权限没有合适的,或者没有相关的 secret,可以通过创建一个新的用户来获取 token


