Нужно ли мне генерировать ключи на моем производственном сервере и размещать открытую версию для моей подготовки?
Да.
Как узнать, какой пользователь на моем производственном сервере пытается подключиться к моему промежуточному серверу?
Productionuser будет любым пользователем, с которым вы соединяетесь (см .: user). Staginguser будет из URL-адреса git (см .: хранилище).
Когда вы используете
set :deploy_via, :remote_cache
(по умолчанию), два ssh-соединения на самом деле происходят. Первый - от вашего локального компьютера до производства, и он использует «пользователя», как указано в вашем рецепте.
set :user, 'www-data'
Второе ssh-соединение устанавливается этим пользователем на производстве с вашим git origin. Поэтому, если git origin находится в стадии подготовки, рабочий пользователь пытается подключиться обратно к стадии подготовки, чтобы извлечь код из git.
set :repository, "staginguser@staging.com:project.git"
Попробуйте это: ssh на производство как пользователь. Затем выполните неудачную команду вручную. Вы увидите «отказано в разрешении» и, возможно, запрос на ввод пароля. Добавьте открытый ключ пользователя промежуточного сервера в рабочую коробку, и все должно работать лучше.