背景
我有一个 Jenkins 服务器,用于企业作业调度。我有一份运行以下 shell 脚本的工作
#!/bin/bash -xe
ssh -o ServerAliveInterval=10 insidetk@albrl1 "Rscript /home/insidetk/PRIORITIZATION/Analytics_Modal.R"
正如您所看到的,ssh 命令没有指定 IdentityFile。因此我推断它必须使用存储在known_host 文件中的密钥。
在运行该脚本的框中,我看到$HOME/.ssh/known_host
和/etc/ssh/ssh_known_hosts
文件中有密钥。然而,这些文件中实际上有来自数千个不同作业的数千个密钥。
尝试
在上述文件中,我尝试搜索用户内部知识、盒子的IP地址、盒子的主机名等,希望在这些文件中找到密钥。但是这些字符串不会出现在这些文件中。
我在任何地方都找不到 SSH 日志,而且我没有安装journalctl
问题
如何识别此 ssh 命令正在使用的密钥?
答案1
您可以启用ssh
的详细输出,运行(交互式):
ssh -v insidetk@albrl1
然后你应该能够发现看起来像这样的线
debug1: Offering public key: /home/<user>/.ssh/id_rsa RSA SHA256:<key's fingerprint>
debug1: Server accepts key: /home/<user>/.ssh/id_rsa RSA SHA256:<key's fingerprint>