上下文:我正在尝试在 Gitea 实例上验证我的公钥。Gitea 为我提供了一个令牌来生成签名;说明如下:
echo -n 'TOKEN_PROVIDED' | ssh-keygen -Y sign -n gitea -f PATH_TO_PUBLIC_KEY
当我这样做时,ssh-keygen 回复
unknown option -- Y
我之前已经能够在我的个人计算机上进行验证,但似乎我登录的服务器上的 ssh-keygen 有一个不同的 ssh-keygen,因为它似乎缺少该标志。
- 我应该使用不同版本的 ssh-keygen 吗?
- 我还能怎样验证我当前的 ssh-keygen 版本?
特定的堆栈信息(尽管我希望答案足够通用以适用于其他地方):
- Debian 10
答案1
您的 OpenSSH 版本太旧。
Debian 10 似乎有版本7.9p1
,但是直到版本才出现-Y
参数(以及对签名和验证的总体支持) 。ssh-keygen
8.0p1
Debian 10 即将终止使用。一种解决方案是更新到较新的版本。
另一种解决方案是使用 Docker 或 Podman 等容器运行时来运行较新版本ssh-keygen
(例如,debian:11
映像包含 OpenSSH 8.4p1
)。
答案2
对于 Windows 中的 ssh,在 cmd(以管理员身份打开)中执行此命令:
notepad ~/.ssh/
之后输入 tab 来完成,例如:
notepad C:\Users\User\.ssh\known_hosts
在打开的记事本窗口中,删除您尝试连接的服务器 IP 行。在记事本中保存并关闭。再次 ssh,它将被修复。
在 Linux 上:
vim ~/.ssh/known_hosts
与窗户相同。