在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
相关产品推荐
相关产品推荐

