61

默认情况下,ssh 将在 ~/.ssh 文件夹中查找其密钥。我想强迫它总是在另一个位置寻找。

我正在使用的解决方法是将非标准位置的密钥添加到代理:

ssh-agent
ssh-add /path/to/where/keys/really/are/id_rsa 

(在 Linux 和 Windows 上的 MingW32 shell 上)

4

3 回答 3

96

如果您只想为您的身份文件指向不同的位置,您可以使用以下条目修改您的 ~/.ssh/config 文件:

IdentityFile ~/.foo/identity

man ssh_config找到其他配置选项。

于 2008-09-17T15:23:23.663 回答
22

man ssh给我这个选项会很有用。

-i identity_file 选择从中读取用于 RSA 或 DSA 身份验证的身份(私钥)的文件。协议版本 1 的默认值是 ~/.ssh/identity,协议版本 2 的默认值是 ~/.ssh/id_rsa 和 ~/.ssh/id_dsa。身份文件也可以在配置中基于每个主机指定文件。可以有多个 -i 选项(以及在配置文件中指定的多个身份)。

所以你可以在你的 bash 配置中创建一个别名,比如

别名 ssh="ssh -i /path/to/private_key"

我还没有查看 ssh 配置文件,但就像-i选项一样,这也可以是别名

-F configfile 指定一个备用的每用户配置文件。如果在命令行中给出了配置文件,系统范围的配置文件 (/etc/ssh/ssh_config) 将被忽略。每个用户配置文件的默认值是 ~/.ssh/config。

于 2008-09-17T15:04:34.533 回答
0

Windows 10上的 Git Bash 更新:在我的系统上,git bash 应用程序将在 ssh 层(由OpenSSH提供)上工作,寻找一个名为HOME的环境变量(到 Windows 键并输入“env”以编辑 env vars)。如果这个变量指向一个不存在的地方,git bash 可能永远不会打开。

与 Linux 一样,Git Bash应用程序会config%HOME%\.ssh.

例如,如果您将 HOME 设置为C:\Users\Yourname,那么它将寻找C:\Users\Yourname\.ssh

最后,在配置文本文件中,git bash 将查找IdentifyFile路径。在 Windows 上,使用 cygwin 表示法设置路径。

例如/e/var/www/certs/keys/your_passwordless_key.key

奖励:免费,PHPStorm 将使用该设置。如果您刚刚更改了设置,请重新启动 IDE。

于 2021-12-13T18:19:03.043 回答