【问题标题】:bash/ssh test for public key authentication用于公钥认证的 bash/ssh 测试
【发布时间】:2011-08-11 16:57:51
【问题描述】:

有没有办法以编程方式测试 ssh 是否可以使用公钥进行身份验证?我想做这样的事情(最好在 bash 中,但我对 python 解决方案持开放态度):

ssh-test-thingy user@host || echo "could not authenticate using publickey"

如果远程主机上没有公钥匹配,ssh-test-thingy返回非零退出状态。

【问题讨论】:

    标签: bash ssh public-key-encryption


    【解决方案1】:

    我会将选项 -o BatchMode=yes 传递给 ssh,看看是否可行。它将禁用密码提示,我认为这在实践中等同于您希望找出是否可以通过密钥进行身份验证。 ssh-test-thingy 可以写成这样的 bash 脚本:

    exec ssh -o BatchMode=yes "$@" true
    

    这将简单地传递 user@host(和任何其他参数),并尝试在远程主机上运行 true,如果它工作将立即返回成功状态代码 (0)。

    【讨论】:

    • 我必须在命令末尾加上“true”才能使其工作,例如:ssh -o BatchMode=yes "$@" true
    • 添加 -q 使其安静。
    • exec 的目的是什么?
    • @pihentagy: exec 将当前的 shell 进程替换为 ssh 进程。这没关系,因为在 ssh 启动后不再需要 shell;程序的返回值应该是ssh的返回值。您可以在没有 exec 的情况下返回 ssh 返回的内容,但为什么还要再生成一个您不需要的进程呢?
    • 我盲目地将解决方案复制粘贴到脚本的一个函数中,它不能与 exec 一起使用。
    猜你喜欢
    • 2017-07-06
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 2015-04-06
    • 2017-08-04
    • 2014-11-13
    • 2021-03-16
    相关资源
    最近更新 更多