Rails, Capistrano, SSH. Не удаётся подключиться к серверу
Полдня можно убить на то, чтобы понять, почему Capistrano не может подключиться к серверу, хотя SSH «руками» работает нормально.
Типичная картина: всё настроено по мануалу, конфиги прописаны, запускаем, например:
bash
cap production setup:upload_configи получаем что‑то вроде:
text
...
disconnected: Too many authentication failures (2) (SSHKit::Runner::ExecuteError)
cap aborted!
Net::SSH::Disconnect: disconnected: Too many authentication failures (2)
...Обычно это читается как:
- «не тот логин/пароль»,
- «не тот ключ»,
- «не тот порт».
Начинаем проверять: вручную заходим по ssh blabla@00.000.000.00 — всё ок, ключ id_rsa есть, пользователь существует, порт правильный. А Capistrano упорно падает.
В чём дело
Проблема в том, что ssh-agent не знает про нужный ключ и Net::SSH перебирает другие ключи, пока сервер не решает: «слишком много неудачных попыток» — и рвёт соединение.
Решение
Добавить ключ в ssh‑агент:
bash
ssh-add -K ~/.ssh/id_rsaПосле этого Capistrano начинает нормально коннектиться тем же ключом, что и в интерактивной сессии.