SSH 我如何忽略 IdentityFile 未找到错误?

SSH 我如何忽略 IdentityFile 未找到错误?

我的 .ssh/config 文件中目前有这个:

Host *
AskPassGUI no
IdentityFile ~/.ssh/%r@%h
IdentityFile ~/.ssh/%h
IdentityFile ~/.ssh/id_dsa

当我 ssh 进入没有密钥文件的主机时,登录可以成功,但也会收到以下错误:

no such identity: /Users/user/.ssh/[email protected]: No such file or directory
no such identity: /Users/user/.ssh/example.com: No such file or directory

理想情况下,我希望 ssh 检查文件,但如果找不到任何文件,则不会抛出错误。这个想法是能够将名为“[电子邮件保护]Host“或”example.com“到我的.ssh目录中,并让ssh在使用该用户/主机组合登录时使用这些文件,但如果文件丢失则不抱怨然后正常登录。我不想使用这个答案,因为我有很多关键文件,我不想将它们添加到文件夹中,然后编辑配置文件并为每个文件添加主机指令。

这种事可能吗?

答案1

查看了openssh的源代码后,似乎答案如下:

OpenSSH 将 ~/.ssh/config 中的 IdentityFile 行视为“用户提供的”。如果找不到用户提供的 IdentityFile,它会向控制台记录警告。请参阅 sshconnect2.c 中的“load_identity_file”函数。

不幸的是,这是不可能的确切地我希望它能做什么,但存在一些解决方法:

一种方法是将以下行添加LogLevel ERROR到 ~/.ssh/config 文件中。这比默认日志级别低一级INFO。我没有选择这个,因为我不确定它会抑制哪些其他警告。

我选择的选项是将以下行添加到我的 /etc/ssh_config 文件中:

Host *
    IdentityFile ~/.ssh/%r@%h
    IdentityFile ~/.ssh/%h

    # The lines below maintain ssh's default behavior:
    IdentityFile ~/.ssh/identity
    IdentityFile ~/.ssh/id_rsa
    IdentityFile ~/.ssh/id_dsa

然后我IdentityFile从我的 ~/.ssh/config 文件中删除了这些行。

当这些行位于 /etc/ssh_config 中时,它们不被视为“用户提供的”,因此当找不到该文件时,不会记录任何内容。

相关内容