小编leo*_*luk的帖子

按文件名从 ssh-agent 中选择身份

问题:我有大约 20-30 个ssh-agent身份。大多数服务器拒绝使用 进行身份验证Too many failed authentications,因为 SSH 通常不会让我尝试使用 20 个不同的密钥来登录。

目前,我正在手动为每台主机指定身份文件,使用IdentityFileIdentitiesOnly指令,以便 SSH 只会尝试一个有效的密钥文件。

不幸的是,一旦原始密钥不再可用,这就会停止工作。ssh-add -l向我显示每个密钥文件的正确路径,它们与 中的路径匹配.ssh/config,但它不起作用。显然,SSH 是通过公钥签名而不是文件名来选择身份的,这意味着原始文件必须可用,以便 SSH 可以提取公钥。

这有两个问题:

  • 一旦我拔下拿着钥匙的闪存驱动器,它就会停止工作
  • 它使代理转发无用,因为远程主机上没有密钥文件

当然,我可以从我的身份文件中提取公钥并将它们存储在我的计算机上,以及我通常登录的每台远程计算机上。不过,这看起来不是一个理想的解决方案。

我需要的是可以通过文件名从 ssh-agent 中选择一个身份,以便我可以轻松地使用.ssh/config或传递来选择正确的密钥-i /path/to/original/key,即使是在我通过 SSH 连接的远程主机上。如果我可以“昵称”这些键,这样我什至不必指定完整路径,那就更好了。

ssh ssh-keys ssh-agent

12
推荐指数
1
解决办法
3874
查看次数

如何在 .ssh/config 中指定多个主机名/端口组合

我有多个笔记本和工作站,可以从中央服务器上的多个 Mercurial 存储库中拉取和推送。我通常.ssh/config用来设置别名:

Host repo-server
HostName server.somedomain
User user143
IdentityOnly yes
IdentityFile ~/hgkey
Port 156
Run Code Online (Sandbox Code Playgroud)

...还有更多选择,你懂的。然后我可以hg push ssh://repo-server//hgroot/someproject在每个本地存储库上简单地做一个,并且我可以在一个地方更改服务器地址和端口。

对于工作站,这工作正常,但笔记本可以从网络内部或外部访问服务器,使用不同的地址和不同的端口。有什么方法可以指定多个主机名/端口组合,以便 SSH 自动按顺序尝试它们?这样,用户可以推拉而不必关心正确的地址。

(当然,使用 VPN 将是最正确的解决方案)

ssh

11
推荐指数
1
解决办法
6510
查看次数

标签 统计

ssh ×2

ssh-agent ×1

ssh-keys ×1