You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Alma9服务器上通过Bash脚本传入SMB共享私钥及密码执行ssh-add的解决方案求助

在Alma9服务器上通过Bash脚本传入SMB共享私钥及密码执行ssh-add的解决方案求助

大家好,我目前在Alma9服务器的受限环境下,遇到了ssh-add执行的棘手问题,想请各位帮忙支招:

我的具体场景是:需要通过Bash脚本运行ssh-add,但4096位的RSA私钥存放在SMB共享目录中——由于是Windows共享过来的文件,权限处于“异常状态”且无法直接修改,同时私钥本身还设置了密码短语,直接调用ssh-add根本无法通过验证。

我已经尝试了几种思路,但都没能完全解决问题:

  • 我试过将私钥内容读取到变量中,通过输入重定向传给ssh-add,类似这样的写法:

    ssh-add - <<< "${SSH_PRIVATE_KEY}" < add ${PASS}
    

    但这种方式没法同时传入密码短语,不知道怎么把密码和私钥内容结合起来传递。

  • 后来我尝试用expect处理密码输入,参考了相关脚本写法,大致代码如下:

    eval(`ssh-agent`)
    /usr/bin/expect
    spawn ssh-add
    expect "Enter passphrase for /root/.ssh/id_rsa:"
    send "my_pass"
    interact
    

    但这个脚本是针对本地私钥文件的,我需要把变量里的私钥内容传给ssh-add,同时自动输入密码短语,这里的组合逻辑一直没理顺,要么是重定向的引号解析出问题,要么是expect的交互逻辑不对。

  • 我还试过用管道加script命令的方式,比如:

    { sleep .1; echo PASS; } | script -q /dev/null -c 'ssh-add - <<< "${SSH_PRIVATE_KEY}"'
    

    结果又卡在了引号问题上,变量无法正确解析,导致私钥内容传不进去。

现在的困境是,我能单独实现“传入私钥内容”或者“自动输入密码”的操作,但没法把这两个步骤结合起来,让ssh-add既能获取到正确的私钥,又能自动输入密码短语,最终成功将私钥添加到ssh-agent中。

已经查了不少资料折腾好几天了,还是没找到可行的解决方案,真心希望各位能给我一些思路,谢谢大家!

备注:内容来源于stack exchange,提问作者Richard E

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 08:49:32