linode美国机房选择

Facility Hostname Test Download
US East(美国东部,纽瓦克) speedtest.newark.linode.com 100MB-newark.bin
US Southeast(美国东南,亚特兰大) speedtest.atlanta.linode.com 100MB-atlanta.bin
US Central(美国中部,达拉斯) speedtest.dallas.linode.com 100MB-dallas.bin
US West(美国西部,费利蒙) speedtest.fremont.linode.com 100MB-fremont.bin
EU Central(欧洲中部,法兰克福) speedtest.frankfurt.linode.com 100MB-frankfurt.bin
EU West(欧洲西部,伦敦) speedtest.london.linode.com 100MB-london.bin
AP South(亚太南部,新加坡) speedtest.singapore.linode.com 100MB-singapore.bin
AP Northeast(亚太东北,东京) speedtest.tokyo2.linode.com 100MB-tokyo2.bin

build FFmpeg in android

以下的内容其实也适用于在安卓下编译其他工具。

  1. ndk下载:https://developer.android.google.cn/ndk/downloads

  2. ffmpeg下载:https://github.com/FFFmpeg/FFFmpeg

  3. 编写配置脚本:

TOOLS_DIR=ndk路径/toolchains/llvm/prebuilt/linux-x86_64/bin
./configure --enable-shared \
--disable-static \
--disable-x86asm \
--enable-cross-compile \
--cc=$TOOLS_DIR/aarch64-linux-android30-clang \
--cxx=$TOOLS_DIR/aarch64-linux-android30-clang++ \
--strip=$TOOLS_DIR/llvm-strip \
--extra-cflags="-I$(pwd)/include" \
--extra-ldflags="-L$(pwd)/libs" \
--arch=arm64 \
--prefix=$(pwd)/install/aarch64 \
--target-os=android

请注意arch要更新成实际的:arch=arm64 or arch=arm

  1. 执行完以上脚本后,开始编译 :make -j16

如果想让程序在当前目录寻找依赖的.so文件(LDFLAGS = -Wl,--hash-style=sysv,-Bsymbolic,-rpath=./):

make -j16 -Wl,--hash-style=sysv,-Bsymbolic,-rpath=./

c99较c89的主要新增特性

  • // 注释

  • func预定义标识符

  • 中使用布尔类型

  • 指定的结构体初始值设定项
    -空的宏参数

  • 中使用扩展的整数类型

  • 灵活的数组成员 (zero size arrays)

  • 内联函数

  • 整数常量类型规则

  • 将声明和代码混合

  • long long 类型和库函数

  • snprintf() 函数家族

  • 枚举声明中支持尾随逗号

  • 可变参数宏

  • 长度可变的数组

docker支持IPV6

这两天因为某个需求,一直在研究这个问题。

网上都看了,什么ipv6 subnet daemon.json 之类的,都是一通抄,还是没有能说明白关键联系的,很多都是抄的碎片化信息。

因为说不清楚关联,所以就没法在实际环境中结合实际灵活解决问题。

docker的版本

docker的版本问题。初步结论是:docker engine 的版本大于等于20.10.2 。参见:https://zhuanlan.zhihu.com/p/342633966

经过验证,如果版本不对,在配置daemon.json时,就会报错,令人莫名, 实际是版本的ipv6支持问题,不支持新字段。

注意:系统默认的docker版本是跟这个系统的代码版本库走的,所以想要最新的docker版本,首先要确认自己的系统,否则要手动安装。

daemon.json

这个也是网上看到最多的:

{
  "ipv6": true,
  "fixed-cidr-v6": "fd00::/80",
  "experimental": true,
  "ip6tables": true
}

在跳过了docker版本的坑,这里就可以配置了。这里核心的是那个fixed-cidr-v6, 很多人看不懂这个,不知道这个要怎么改,这个就要自己实际弄懂ipv6的子网了,要根据自己的外网IPV6地址,配置实际的子网段。请google搜索 "ipv6 subnet"。

测试docker获取ipv6能力

docker run --rm -it busybox ping -6 -c4 ipv6-test.com
docker run --rm -it busybox ifconfig

正常返回,就说明系统的docker ipv6能力正常

ssh秘钥登陆,禁用密码

为了防止网络嗅探,一般拿到vps第一个就是关密码,开秘钥登陆

编辑 /etc/ssh/sshd_config 文件,注意是sshd_config,不要眼花看成成ssh_config

#开秘钥:
RSAAuthentication yes
PubkeyAuthentication yes
PubkeyAcceptedKeyTypes +ssh-rsa

#关密码:
PasswordAuthentication no

篇日志完后记得重启
systemctl restart ssh

所选的用户秘钥未在远程主机注册

首先网上大部分抄的内容都是围绕pubkey配置不对的内容,参考价值不大。

已经排查:

  1. authorized_keys 内容 --- ok
  2. authorized_keys 权限 600 or 644 --- ok

还是失败,对等其他主机配置的,都是可以的,同样的客户端配置操作。

解决思路:

  1. 查看sshd日志:cat /var/log/secure,发现有用信息:
    userauth_pubkey: signature algorithm ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]
  2. 根据上面的提示
    sshd -T | grep pubkeyacceptedalgorithms
    pubkeyacceptedalgorithms ssh-ed25519-cert-v01@openssh.com,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com,sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ssh-ed25519@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com,rsa-sha2-512,rsa-sha2-256

    可以看到没有 ssh-rsa

  3. 配置 vi /etc/ssh/sshd_config 添加:
    PubkeyAuthentication yes
    PubkeyAcceptedKeyTypes +ssh-rsa

    然后重启:systemctl restart ssh

  4. 重启后再次查询:
    sshd -T | grep pubkeyacceptedalgorithms
    pubkeyacceptedalgorithms ssh-ed25519-cert-v01@openssh.com,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com,sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ssh-ed25519@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com,rsa-sha2-512,rsa-sha2-256,ssh-rsa

    在尾部已经发现ssh-rsa了

  5. 在客户端重新尝试,可以正常登陆了

总结:因为ubuntu是最新的版本,因为安全原因,默认把 ssh-rsa禁用了。所以根据此思路,如果我们有时间,我们还可以从升级客户端的配置来场景解决

参考感谢:https://www.ezeelogin.com/kb/article/userauth_pubkey-signature-algorithm-ssh-rsa-not-in-pubkeyacceptedalgorithms-518.html