主要是因為 ssh 的 host 規則配置過多,且沒有設置精確匹配,加上又存在多個密鑰,導致了 ssh 挨個嘗試,在沒有嘗試到成功的匹配之前,因為失敗次數過多而被伺服器拒絕了。
解決方案:host 匹配規則裡加上精確匹配。
# ~/.ssh/config
Host gitlab.xxx.com
HostName gitlab.xxx.com
User root
IdentityFile ~/.ssh/other_rsa
# 加上下面這一行,精確匹配對應密鑰
IdentitiesOnly yes
# 且不使用任何代理
IdentityAgent none
# GitHub
Host github.com
# for 443 port
HostName ssh.github.com
User git
Port 443
IdentityFile ~/.ssh/viki_rsa
IdentitiesOnly yes
Host *
User root
IdentityFile ~/.ssh/viki_rsa
PreferredAuthentications publickey
IdentityAgent "xxx"