Настраиваю деплой для проекта и столкнулся с проблемой:
При запуске скрипта
cap production deploy:check
вижу ошибку
INFO [16ef9c10] Running /usr/bin/env git ls-remote --heads git@bitbucket.org:test/pereezd-test.git as deployer@ip
DEBUG [16ef9c10] Command: ( export GIT_ASKPASS="/bin/echo" GIT_SSH="/tmp/test/git-ssh.sh" ; /usr/bin/env git ls-remote --heads git@bitbucket.org:test/pereezd-test.git )
DEBUG [16ef9c10] Permission denied (publickey).
DEBUG [16ef9c10] fatal: Could not read from remote repository.
Please make sure you have the correct access rights
DEBUG [16ef9c10] and the repository exists.
Но если зайти на сервер по ssh и вручную запустить git clone, все работает отлично. Т.е. с ключами все нормально.
production.rb
# server-based syntax
# ======================
# Defines a single server with a list of roles and multiple properties.
# You can define all roles on a single server, or split them:
server 'ip', user: 'deployer', roles: %w{app db web}, primary: true
# server 'example.com', user: 'deploy', roles: %w{app web}, other_property: :other_value
# server 'db.example.com', user: 'deploy', roles: %w{db}
set :ssh_options, {
forward_agent: false }
# role-based syntax
# ==================
# Defines a role with one or multiple servers. The primary server in each
# group is considered to be the first unless any hosts have the primary
# property set. Specify the username and a domain or IP for the server.
# Don't use `:all`, it's a meta role.
role :app, %w{deployer@ip}
role :web, %w{deployer@ip}
role :db, %w{deployer@ip}
set :rails_env, :production
Ключи подгружаю с помощью keychain
${HOME}/.bashrc:
keychain ~/.ssh/bitbucket
. ~/.keychain/`uname -n`-sh
Скорее всего дело в нем, но я не понимаю как по-другому исправить следующее поведение:
захожу по ssh на сервер, запускаю ssh agent, добавляю ключ ssh-add, после логаута все по новой, ключ не сохраняется.
команда на сервере ssh -T git@bitbucket.org
authenticated via a deploy key.
You can use git or hg to connect to Bitbucket. Shell access is disabled.
This deploy key has read access to the following repositories:
test/test: -- deployer@ip
Мой алгоритм действий:
на сервере-
- генерирую пару ключей
- запускаю ssh agent
- публичный ключ добавляю в битбакет
- приватный ключ добавляю в агент( ssh-add key) с вводом пароля
- пытаюсь клонировать репозиторий на сервере, хост добавляю в known_hosts, репозиторий успешно клонируется
локально -
- не закрывая ssh сессию( если закрыть, агент тоже выключится) пробую провести деплой, получаю ошибку доступа к репозиторию, проверку типа версии руби проходит корректно.
Получается проблемы две:
1) Нужно как то заставить агент не закрываться после логаута или чтобы ключи добавлялись автоматически( это я пытался решить с помощью keychain)
2) Нужно таки получить доступ к репозиторию при деплое.