2017-01-19 5 views
2

Le déploiement avec Capistrano échoue lorsque j'ai un mot de passe défini pour les clés SSH sur le serveur distant.Le déploiement de Capistrano échoue lorsque la clé ssh du serveur a une phrase secrète

Mais cela fonctionne quand il n'y a pas de jeu de mot de passe ...

Je voudrais pouvoir entrer le mot de passe lors du déploiement afin que je puisse encore utiliser un mot de passe sur le serveur.

Erreur:

01 mkdir -p /tmp 
01 <user>@<ip> 0.183s 
Uploading /tmp/git-ssh-<app>-<env>-<me>.sh 100.0% 
02 chmod 700 /tmp/git-ssh-<app>-<env>-<me>.sh 
02 <user>@<ip> 0.178s 
git:check 

01 git ls-remote --heads [email protected]:<me>/<my-repo>.git 
01 Permission denied (publickey). 
01 fatal: Could not read from remote repository. 
01 
01 Please make sure you have the correct access rights 
01 and the repository exists. 

cap aborted! 
SSHKit::Runner::ExecuteError: Exception while executing as <user>@<ip>: git exit status: 128 
git stdout: Nothing written 
git stderr: Permission denied (publickey). 
fatal: Could not read from remote repository. 

deploy.rb

lock '3.7.1' 
set :application, '<app>' 
set :repo_url, '[email protected]:<me>/<app>.git' 
set :user, '<user>' 
set :scm_user, '<me>' 
set :deploy_to, '/home/<user>/<app>' 
set :scm, :git 
set :branch, 'master' 
append :linked_files, 'config/database.yml', 'config/secrets.yml' 
append :linked_dirs, "log", "tmp/pids", "tmp/cache", "tmp/sockets", "vendor/bundle" 

deploy/production.rb

server '<ip>', user: '<user>', roles: %w{app db web} 

Je voudrais donc li ke Capistrano pour me demander le mot de passe lors du déploiement afin que mon serveur puisse l'utiliser pour se connecter avec github.

Est-ce possible?

+0

Avez-vous essayé en suivant les instructions sur le site Capistrano? http://capistranorb.com/documentation/getting-started/authentication-and-authorisation/ – CryptoPiggy

+0

Consultez la section sur 'SSH Agent Forwarding'. – CryptoPiggy

Répondre

2

Vous pouvez utiliser le transfert d'agent SSH. Il n'est donc pas nécessaire d'entrer une phrase secrète sur le serveur.

De cette façon, vous préchargez vos clés ssh localement ssh-add keyname_rsa et les transférez automatiquement vers votre hôte, puis depuis votre hôte vers les serveurs Github si nécessaire.

Alors vous entrez seulement votre mot de passe une fois localement comme ceci:

enter image description here

Et le reste Happens « automagiquement » pendant le déploiement. Cela vaut la peine de mettre en place.

De the docs:

1.2.1 SSH Agent Forwarding

As we’ve already set up an SSH agent, we can use the agent forwarding feature of SSH to make this key agent available to further hops. In short, we can use our own ssh key to authenticate ourselves from the server to Github.