当我为远程服务器上的ssh密钥设置密码短语时,使用Capistrano进行部署失败。
但是当没有密码短语设置时它会起作用...
我希望能够在部署时输入密码,这样我仍然可以在服务器上使用密码。
错误:
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 git@github.com:<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, 'git@github.com:<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"
部署/ production.rb
server '<ip>', user: '<user>', roles: %w{app db web}
所以我希望Capistrano在部署时向我询问密码,以便我的服务器可以使用它来连接github。
这可能吗?
答案 0 :(得分:2)
您可以使用SSH代理转发。因此,无需在服务器上输入密码。
这样您只需在本地ssh-add keyname_rsa
预加载ssh密钥,然后将其自动转发到主机,然后根据需要从主机转发到Github服务器。
因此,您只需在本地输入一次密码:
其余部分在部署期间“自动”发生。这值得设置。
来自the docs:
1.2.1 SSH代理转发
由于我们已经设置了SSH代理,我们可以使用代理转发 SSH的功能,使此密钥代理可用于进一步 hops 。在 简而言之,我们可以使用我们自己的ssh密钥来验证自己 服务器到Github。