连接到同一主机时,我需要使用两个不同的ssh密钥。
我需要用于连接的计算机(由于ip地址限制)不是存储ssh密钥的计算机,因此我在这里使用ssh-agent。同样,这些ssh连接是在中间计算机上运行的脚本的控制下发生的。
如果ssh密钥在该计算机本地,我想我可以使用ssh -i(或在嵌套代理中使用ssh-add)指定要使用的身份,并且可以将脚本和/或脚本上下文更新为针对我的情况做正确的事情(可能使用配置文件来指定相关详细信息)。
但是,由于密钥不在执行ssh连接的计算机上,因此ssh -i失败(该计算机上不存在私钥文件)。而且,类似地,ssh-add希望我通过提供私钥的文件名来指定密钥。(或者我怀疑是这种情况-我实际上还没有弄清楚如何嵌套ssh-agent,但是ssh-add的文档使人怀疑这是否是一种可行的方法。)
所以我的问题是:与目标系统建立联系时,如何使ssh仅使用我指定的密钥?
[当然,其他人也需要使用这些脚本,但这是我自己解决该问题后可以解决的问题。]
换句话说,我有这种情况:
$ ssh-add -l
2048 SHA256:A8PFww3boSTRe8sPvXDgir09KNVqu+JvWNw7/GLCiwM /home/account/.ssh/key1.pem (RSA)
2048 SHA256:Em5p4B++GIm0l/zDYgZ26VaHbIb07T6MViu5ioMPTiA /home/account/.ssh/key2_rsa (RSA)
4096 SHA256:JON2JaTTk1r3ufUrGm4C/cE9IG9edyfDxE1zTel/0u8 /home/account/.ssh/key3_rsa (RSA)
在一种情况下,我需要使用SSH来使用key2_rsa,而在另一种情况下,我需要使用SSH来使用key3_rsa
在此使用错误的密钥会导致与目标系统的连接失败(因为它会将另一个密钥识别为可以访问计算机但不能访问该子系统)。
我该如何工作?
ssh -i
也接受包含公共密钥的文件,如果在代理中找到匹配的密钥,则将在所有其他密钥之前尝试使用该密钥。
此外,如果-o IdentitiesOnly=yes
指定了该选项,则客户端将仅使用该密钥,并且如果被拒绝,客户端将不会退回到任何其他密钥。(请注意,回退到其他机制(例如GSSAPI或密码)是由其他选项控制的。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句