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

acme中有关zerossl的失败

在某些自动化脚本中,需要安装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
确认可以成功后,在重新执行脚本,基本就能解决问题。

git conflict

git conflict 是日常协作中必不可少的。

在gitlab的web页面上,有三种处理conflict的视图,其中line的文本方式最灵活。

这种方式中:

其中<<<<<<< HEAD 到 ======= 中间的内容是local提交的。

======= 到 >>>>>>> commit-id 是远程仓库中的内容。

示例:

<<<<<<< HEAD

新提交的代码xxx

=======

远程仓库的代码xxx

>>>>>>> commit-id