我正在使用一项通过ssh连接到远程主机的服务。我不想在该服务上存储或编写ssh密钥,我希望通过密钥来进行服务,并在之前使用通过密钥执行与其他主机的ssh
连接。
要连接到我使用的主机,请使用:ssh user@host -i /path/to/key
。
如何将密钥用作text
而不是特定文件?
我尝试了ssh user@host -i "key-text-example"
。它不是那样的。
答案 0 :(得分:5)
这不是对问题的字面回答,而是满足您实际需求的最佳方法(通过SSH通过您不信任存储私钥的系统连接到远程计算机)-您应该使用SSH代理转发。
当您将私钥传递到远程系统时,即使是暂时传递,也可以将其捕获;例如,如果攻击者使用Sysdig记录了系统上发生的所有事件,则进程替换产生的FIFO写入(或SSH客户端进程完成的读取)将显示为一天。< / p>
代理程序转发不是将私钥传递到远程系统,而是将签名请求从远程系统发送回原始计算机。 (甚至还有适用于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$