我正在使用一个通过ssh连接到远程主机的服务.我不想在该服务上存储或写入ssh密钥,我希望传递密钥服务并ssh使用传递的密钥执行与另一个主机的连接.
要连接到我使用的主机:ssh user@host -i /path/to/key.
如何使用密钥作为text非特定文件?我试过了ssh user@host -i "key-text-example".它不像那样工作.
不是作为您问题的字面答案,而是作为满足您实际需求的最佳方式(通过SSH连接到远程机器,通过您不信任存储私钥的系统) - 您应该使用SSH代理转发.
当您将私钥传递到远程系统时,即使是短暂的,也可以捕获它; 例如,如果攻击者正在记录使用Sysdig在系统上发生的所有事情,那么从进程替换(或SSH客户端进程完成的读取)对FIFO的写入将显示为白天.
代理转发不是将私钥传递到远程系统,而是将签名请求从远程系统发送回原始计算机.(甚至还有用于Android的SSH代理,因此您可以将请求转发到您的手机 - 可能是您信任的设备 - 这样私钥永远不会离开它).类似地,当请求代理转发时,诸如YubiKey的硬件设备可以代表SSH客户端存储您的私钥并执行签名操作 - 代表远程机器.
对于简单的情况:
local$ [[ $SSH_AUTH_SOCK ]] || eval "$(ssh-agent -s)"
local$ ssh-add # load the key into your local agent
local$ ssh -A host1 # connects to host1 with agent forwarding enabled
host1$ ssh host2 # asks the ssh agent on "local" to authenticate to host2
host2$
Run Code Online (Sandbox Code Playgroud)