rdm*_*rdm 5 ssh ssh-agent ssh-keys
连接到同一主机时,我需要使用两个不同的 ssh 密钥。
我需要用来连接的机器(因为IP地址限制)不是存储ssh密钥的机器,所以我在这里使用ssh-agent。此外,这些 ssh 连接是在中间计算机上运行的脚本的控制下发生的。
如果 ssh 密钥位于该计算机的本地,我想我可以使用 ssh -i (或者可能是嵌套代理中的 ssh-add )来指定我想要使用的身份,并且我可以将脚本和/或脚本上下文更新为为我的案例做正确的事情(可能使用配置文件来指定相关详细信息)。
但是,由于密钥不在执行 ssh 连接的计算机上,因此 ssh -i 失败(该计算机上不存在私钥文件)。同样,ssh-add 希望我通过提供私钥的文件名来指定密钥。(或者我怀疑情况确实如此 - 我实际上还没有弄清楚如何嵌套 ssh-agents,但 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)
Run Code Online (Sandbox Code Playgroud)
在一种情况下,我需要 ssh 来使用 key2_rsa,而在另一种情况下,我需要 ssh 来使用 key3_rsa
此处使用错误的密钥会导致与目标系统的连接失败(因为它将另一个密钥识别为有权访问计算机,但无权访问该子系统)。
我该如何进行这项工作?
ssh -i
还接受包含公钥的文件,如果在代理中找到匹配的密钥,则将在其他所有操作之前尝试它。
此外,如果-o IdentitiesOnly=yes
指定,客户端将仅使用该密钥,并且在被拒绝时不会回退到任何其他密钥。(请注意,回退到其他机制(例如 GSSAPI 或密码)由不同的选项控制。)
归档时间: |
|
查看次数: |
1650 次 |
最近记录: |