我正在尝试配置我的 Gen 1 Cloud Key (CK) 以允许无密码身份验证,这样我就可以运行 bash 脚本来下载自动备份文件。我能够“手动”通过 SSH 进入 CK,也可以使用用户名/密码通过 bash 脚本进入,但这会以明文形式存储凭据,而我(显然)不想这样做。
我有:
- 在我的本地机器(MBP Sequoia 15.1.1)上使用以下方式生成密钥
ssh-keygen -t rsa
: - 将公钥复制到 CK
~/.ssh/authorized_keys
文件中, - 修改
/etc/ssh/sshd_config
为包含以下(未注释的)行:RSAAuthentication yes
,,PubkeyAuthentication yes
和AuthorizedKeysFile .ssh/authorized_keys
, - 使用 重启 CK 上的 ssh
sudo systemctl restart sshd
, chmod 700 ~/.ssh
使用和检查权限chmod 600 ~/.ssh/authorized_keys
。
但还是没有惊喜。SSH 日志显示,
...
debug1: Next authentication method: publickey
debug1: get_agent_identities: bound agent to hostkey
debug1: get_agent_identities: ssh_fetch_identitylist: agent contains no identities
debug1: Will attempt key: /Users/Hank/.ssh/id_rsa RSA SHA256:KEY_VALUE_REDACTED
debug1: Will attempt key: /Users/Hank/.ssh/id_ecdsa
debug1: Will attempt key: /Users/Hank/.ssh/id_ecdsa_sk
debug1: Will attempt key: /Users/Hank/.ssh/id_ed25519
debug1: Will attempt key: /Users/Hank/.ssh/id_ed25519_sk
debug1: Will attempt key: /Users/Hank/.ssh/id_xmss
debug1: Will attempt key: /Users/Hank/.ssh/id_dsa
debug1: Offering public key: /Users/Hank/.ssh/id_rsa RSA SHA256:KEY_VALUE_REDACTED
debug1: send_pubkey_test: no mutual signature algorithm
debug1: Trying private key: /Users/Hank/.ssh/id_ecdsa
debug1: Trying private key: /Users/Hank/.ssh/id_ecdsa_sk
debug1: Trying private key: /Users/Hank/.ssh/id_ed25519
debug1: Trying private key: /Users/Hank/.ssh/id_ed25519_sk
debug1: Trying private key: /Users/Hank/.ssh/id_xmss
debug1: Trying private key: /Users/Hank/.ssh/id_dsa
debug1: Next authentication method: password
[email protected]'s password:
...
所以我还是会被提示输入密码。我相信问题的线索就在于这一行:
没有相互签名算法
这是否意味着两个设备上的 SSH 实例不兼容,因此无法使用基于密钥的身份验证?这似乎很简单,但有些地方不太对劲。
TLDR;Unifi 控制器软件支持基于 SSH 密钥的身份验证,但这仅适用于连接到 AP、交换机和路由器等网络设备。CK 是一个客户端,显然无法通过控制器软件实现我的目标。
围绕这种方法有相当多的讨论,但似乎没有什么能够解决这个特定的问题。
编辑:我确实发现了这一点,这让我相信我的 CK(诚然,它很古老)可能是问题的根源。在 CK 上升级 ssh,虽然理论上可行,但并不是一个最佳解决方案,因为我预计未来的固件升级会覆盖任何中间更改。
答案是使用 RSA 以外的其他东西吗?
EDIT2:解决方案-FTF,以下是在我的案例中起作用的修订命令:
- 生成密钥对:
ssh-keygen -t ed25519
- 将公钥复制到服务器:
ssh-copy-id -i ~/.ssh/id_ed25519.pub [email protected]
- 检查权限:
chmod 700 ~/.ssh
和chmod 600 ~/.ssh/authorized_keys
- 重新启动:(
sudo systemctl restart sshd
可能不需要)
通常,作为系统管理员,您不会单独从客户端调试客户端-服务器问题。还要检查服务器日志(如有必要,增加 ssh 守护程序的日志详细程度)以查看其中记录的内容。
如果相关问题确实是
no mutual signature algorithm
:Host
您可以通过在您的文件中创建一个~/.ssh/config
包含以下指令(部分)的节,强制具有当前/安全默认设置的 ssh 客户端降级并使用特定主机的旧密码和加密设置: