c99较c89的主要新增特性
-
// 注释
-
func预定义标识符
-
在
中使用布尔类型 -
指定的结构体初始值设定项
-空的宏参数 -
在
和 中使用扩展的整数类型 -
灵活的数组成员 (zero size arrays)
-
内联函数
-
整数常量类型规则
-
将声明和代码混合
-
long long 类型和库函数
-
snprintf() 函数家族
-
枚举声明中支持尾随逗号
-
可变参数宏
-
长度可变的数组
// 注释
func预定义标识符
在
指定的结构体初始值设定项
-空的宏参数
在
灵活的数组成员 (zero size arrays)
内联函数
整数常量类型规则
将声明和代码混合
long long 类型和库函数
snprintf() 函数家族
枚举声明中支持尾随逗号
可变参数宏
长度可变的数组
这两天因为某个需求,一直在研究这个问题。
网上都看了,什么ipv6 subnet daemon.json 之类的,都是一通抄,还是没有能说明白关键联系的,很多都是抄的碎片化信息。
因为说不清楚关联,所以就没法在实际环境中结合实际灵活解决问题。
docker的版本问题。初步结论是:docker engine 的版本大于等于20.10.2 。参见:https://zhuanlan.zhihu.com/p/342633966
经过验证,如果版本不对,在配置daemon.json时,就会报错,令人莫名, 实际是版本的ipv6支持问题,不支持新字段。
注意:系统默认的docker版本是跟这个系统的代码版本库走的,所以想要最新的docker版本,首先要确认自己的系统,否则要手动安装。
这个也是网上看到最多的:
{
"ipv6": true,
"fixed-cidr-v6": "fd00::/80",
"experimental": true,
"ip6tables": true
}
在跳过了docker版本的坑,这里就可以配置了。这里核心的是那个fixed-cidr-v6, 很多人看不懂这个,不知道这个要怎么改,这个就要自己实际弄懂ipv6的子网了,要根据自己的外网IPV6地址,配置实际的子网段。请google搜索 "ipv6 subnet"。
docker run --rm -it busybox ping -6 -c4 ipv6-test.com
docker run --rm -it busybox ifconfig
正常返回,就说明系统的docker ipv6能力正常
目标:通过密码从国内代理流量到国外(ssh)
略,通用配置
frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
[secret_ssh]
type = stcp
sk = abcdefg
local_ip = 127.0.0.1
local_port = 22
frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
[secret_ssh_visitor]
type = stcp
role = visitor
server_name = secret_ssh
sk = abcdefg
bind_addr = 127.0.0.1
bind_port = 6000
server_name sk 可以简单理解成frpc远端的账号密码。
ssh -oPort=6000 x.x.x.x(国内的ip)
效果相当于endpoint 中的脚本跟上cmd 中的参数
为了防止网络嗅探,一般拿到vps第一个就是关密码,开秘钥登陆
编辑 /etc/ssh/sshd_config 文件,注意是sshd_config,不要眼花看成成ssh_config
#开秘钥:
RSAAuthentication yes
PubkeyAuthentication yes
PubkeyAcceptedKeyTypes +ssh-rsa
#关密码:
PasswordAuthentication no
篇日志完后记得重启
systemctl restart ssh
首先网上大部分抄的内容都是围绕pubkey配置不对的内容,参考价值不大。
已经排查:
还是失败,对等其他主机配置的,都是可以的,同样的客户端配置操作。
解决思路:
userauth_pubkey: signature algorithm ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]
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
PubkeyAuthentication yes
PubkeyAcceptedKeyTypes +ssh-rsa
然后重启:systemctl restart ssh
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了
总结:因为ubuntu是最新的版本,因为安全原因,默认把 ssh-rsa禁用了。所以根据此思路,如果我们有时间,我们还可以从升级客户端的配置来场景解决
在某些自动化脚本中,需要安装ssl证书时,可能会出现如下的提示:
[Sat Oct 15 10:28:50 AM UTC 2022] Using CA: https://acme.zerossl.com/v2/DV90 [Sat Oct 15 10:28:50 AM UTC 2022] Create account key ok. [Sat Oct 15 10:28:50 AM UTC 2022] No EAB credentials found for ZeroSSL, let's get one [Sat Oct 15 10:28:50 AM UTC 2022] acme.sh is using ZeroSSL as default CA now. [Sat Oct 15 10:28:50 AM UTC 2022] Please update your account with an email address first. [Sat Oct 15 10:28:50 AM UTC 2022] acme.sh --register-account -m my@example.com [Sat Oct 15 10:28:50 AM UTC 2022] See: https://github.com/acmesh-official/acme.sh/wiki/ZeroSSL.com-CA [Sat Oct 15 10:28:50 AM UTC 2022] Please add '--debug' or '--log' to check more details. [Sat Oct 15 10:28:50 AM UTC 2022] See: https://github.com/acmesh-official/acme.sh/wiki/How-to-debug-acme.sh 2022-10-15 10:28:50 - 申请证书失败,请尝试手动申请证书.
看很多网上搜索说什么指令 letsencrypt之类的解决方法。
其实log已经提示方案了:
apt install socat
curl https://get.acme.sh | sh
acme.sh --register-account -m my@example.com
脚本失败后,可以先单独安装acme,执行如上操作,测试可以单独成功,比如
sudo ~/.acme.sh/acme.sh --issue -d mydomain.com --standalone -k ec-256
确认可以成功后,在重新执行脚本,基本就能解决问题。
ubuntu下,在-v参数映射时,出现 read-only file system
解决:默认是支持home下的路径
Rust 官方网站:https://www.rust-lang.org/zh-CN
Rust 官方文档:https://doc.rust-lang.org/
Rust Play:https://play.rust-lang.org/
svn propedit -r r3214 --revprop svn:log
r3214:当前提交的commit id