作者: 大嘴巴小牙齿

  • SSH加密概念

    SSH = Secure Shell
    一种安全加密网络传输协议


    加密基础

    对称加密

    发送方和接收方都使用同一个密钥

    发送方:明文+密钥 -> 密文
    接收方:密文+密钥 -> 明文

    加密算法:
    AES(高级加密标准,Advanced Encryption Standard):目前最常用的加密算法(AES-128、AES-192、AES-256),SSH传输数据时会使用AES加密
    DES(数据加密标准,Data Encryption Standard):早期加密标准,密钥长度短(56位)

    非对称加密

    非对称加密使用一对密钥:公钥Public key和私钥Private Key
    公钥用于加密,私钥用于解密,公钥加密的数据只能用私钥解密

    发送方:使用接收方的公钥Pub进行加密
    接收方:使用自己的私钥Private进行解密

    加密算法:
    RSA(Rivest-Shamir-Adleman):基于大整数因子分解难题(常见密钥长度 2048、4096 位)
    ECDSA(椭圆曲线数字签名算法):基于椭圆曲线离散对数问题,密钥短但同等安全
    Ed25519:更快、更安全的椭圆曲线签名算法,SSH 默认使用

    哈希加密

    哈希是一种单向函数,用于计算固定长度的明文值,确保数据完整性。
    哈希值 = hash(明文)

    • 不可逆(无法从哈希值计算明文)
    • 抗碰撞(难以找到一种 hash(明文1)=hash(明文2))
    • 输入敏感(哪怕明文只改动1比特,哈希值也会大幅变化)

    加密算法:
    SHA-256  / SHA-3:广泛用于安全协议,如 TLS、SSH
    MD5(消息摘要算法):不安全,不用于加密传输,可用于验证传输信息完整性


    SSH认证

    固定密码📚或密钥对🔑登陆SSH服务器,弱强度的固定密码有被暴力破解的可能。

    1. 固定密码登陆方式:客户端通过ssh命令向ssh服务器发送登陆请求;服务器向客户端协商密钥用于构建加密通信通道;加密通道建立后,服务器向客户端索要登陆密码,并与服务器上存储的密码比对;密码校验通过后,服务器允许客户端访问Shell。
    服务器协商,对称密钥SHA-256
    1. 密钥对的登陆方式包括公钥和私钥概念,公钥即可以公开的密钥,私钥只有在本地存储才安全。
    密钥对方式登陆

    密钥存储

    1. 本机公钥信息存储在文件:~/.ssh/authorized_keys
      公钥通常的内容是(加密类型+公钥文+域):
    ssh-ed25519 AAAAAAAAAAC1yc2EAAAADAQABAAACAQDRxHaAqjB5LcvNGMuB/W9vL2sfbfvl8CKgkZUT9041MCtV9j== hi@ziyuan.work
    1. ~/.ssh/ 目录还会存放服务器的公钥和私钥文件,通常是.pem.pub.pem文件,文件格式为PEM(Privacy-Enhanced Mail)

    .pem私钥文件内容(私钥文):

    -----BEGIN RSA PRIVATE KEY-----
    AB3NzaC1yc2EAAAADAQABAAABgQDlZICl9XYz0yovhi4ajYlyDfHL5tNt2jmX/Js0I7c+Heqb3ExzOd+Td0aYVruMQkYsulXsQfe/wzQ145OppbeFRkZATKIOkb/DcN2YvTH+YtjO/GJPtdT5WVA6I/3a+pd2AgcXVh
    -----END OPENSSH PRIVATE KEY-----

    .pem.pub公钥文件内容(加密类型+公钥文+域):

    ssh-rsa CCxrInV8Dgij2vuufsw4iLF/05hg2L9rNHdwaQx6vSDZKgjw2VPzWxCufJeKMEZbKh9a4m7D1rMPN7Z1rS6E10/vTFD2OJgbpi8eM1TondTlxVa8BZ0roXLuYCpue/CyqOoYfm74fgmAbTKWUzg86jCVL9ngn66UQsW+AtgBX00d3XZ1oJ1lL9lvlyJwE6NXIMy3f9F5dJ0RZmqXtKLBeAR+SD+lD7sPug6O/nYpEzK5BVDFGwFYtjO/GJPtdT5 hi@ziyuan.work
    1. 密钥生成

    使用ssh-keygen命令可以生成私钥和公钥

    ssh-keygen -t rsa -b 4096 -m PEM -f mykey.pem
    
    # 运行以上命令会在文件夹中得到mykey.pemmykey.pem.pub文件,移动文件到~/.ssh目录
    
    # -t 加密算法,可以有rsa dsa ed25519 ecdsa
    # -b 密钥位数(bit),当-t 为rsa和ecdsa时有效
    # -m 密钥格式,可以有PEM OPENSSH PKCS8
    # -f 文件名,通常为xxxxx.pem
    1. 使用ssh-copy-id命令可以将公钥发送给服务器,实现密钥对登陆
    ssh-copy-id user@192.168.1.10 
    
    # user:远程主机用户
    # 192.168.1.10:远程主机IP
  • 移除内核崩溃转储(kdump)

    当Linux内核崩溃时,kdump 会利用预留的一段内存(称为 crash kernel)启动一个最小化的内核环境,从而将故障时的内存数据保存到硬盘。崩溃日志可用于后期故障排查。云主机的内存比较宝贵,如果是一台4G内存的主机,除去KVM的硬件预留,还有内核崩溃转储预留,可能实际available ram为3.6G左右。如果不需要捕获系统崩溃信息,可以再腾出一些空间。有些云服务器厂商的系统默认配置kdump,也就是说存在云主机运行内存不足额的情况,这边需要手动更新配置。

    查看系统当前的内存预留:

    sudo dmesg | grep -i memory

    修改 /etc/default/grub ,去除crashkernel相关字段:

    GRUB_CMDLINE_LINUX=" vga=792 console=tty0 console=ttyS0,115200n8 net.ifnames=0 noibrs nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295 iommu=pt crashkernel=0M-1G:0M,1G-4G:192M,4G-128G:384M,128G-:512M crash_kexec_post_notifiers=1"

    改完grub后,需要更新配置:

    sudo grub-mkconfig -o /boot/grub/grub.cfg
    
    sudo grub-mkconfig -o /boot/efi/EFI/ubuntu/grub.cfg

    再次重启主机,内存会释放。

  • 自定义Dolphin右键新建按钮

    日常在Dolphin中会用到右键-新建Librioffice Draw,这些办公类快捷按钮会在软件安装的时候自动添加,做笔记常用到markdown.md文件,配一个入口按钮方便点开创建即用。

    1. 创建模板文件夹
    ~/.local/share/templates && cd ~/.local/share/templates
    1. 新建文件
    touch MarkDown.md
    1. 新建快捷信息,并填写
    vim create_markdown.desktop
    [Desktop Entry]
    Name=Markdown
    Comment=快速新建Markdown文件
    Type=Link
    URL=MarkDown.md
    Icon=application-vnd.oasis.opendocument.text