ssh 如何寻找私钥来加载?
我知道它确实会尝试加载~/.ssh/id_rsa
,此后~./.ssh/id_dsa
。
现在我确实有两个密钥。是否可以以 ssh 可以直接获取的方式命名它们?
如果没有,是否有可能欺骗它,并将第二个密钥放入id_dsa
文件中,即使它是一把rsa
密钥?
答案1
如果 SSH 代理正在运行,远程控制尝试加载到代理中的所有密钥。
如果有选择,
-i file
远程控制使用指定的密钥。如果
IdentityFile
在命令行或中设置~/.ssh/config
,远程控制使用指定的密钥。(您可以为每个主机名或域指定密钥。请参阅ssh_config(5)
手册页。否则,它将使用目录中的硬编码列表 {
id_ecdsa
,id_rsa
,id_dsa
}~/.ssh
。
其中,ssh 代理可能是最方便的选项——它还消除了每次解锁私钥的需要。用于ssh-add ~/.ssh/id_dsa
加载密钥。如果代理未运行,请exec ssh-agent bash
使用以下工具启动它:钥匙链(通常,GNOME、Unity 或 Mac OS X 等环境应该会自动启动代理。)
如果您决定不使用ssh 代理,并且您需要为不同的机器使用不同的密钥,您可以编辑~/.ssh/config
:
Host one.example.com
IdentityFile ~/.ssh/id_one
Host two.example.com
IdentityFile ~/.ssh/id_two
Host *.foo.org
IdentityFile ~/.ssh/id_foo.org
请注意,文件名对远程控制;它将对id_dsa
和进行id_asdfghjk
同等对待。这意味着你能命名一个 RSA 密钥id_dsa
。但是,它不会接受单个文件中的两个密钥。