Skip to content

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 начинает нормально коннектиться тем же ключом, что и в интерактивной сессии.