Capistrano가 비밀번호를 묻도록 강제하기

Capistrano가 비밀번호를 묻도록 강제하기

Capistrano를 사용하여 새 서버에 배포 중인데 다음과 같은 문제가 있습니다. 현재 로그인할 서버에 SSH 키를 추가할 수 없으므로 비밀번호 인증을 사용해야 합니다. 그러나 내 로컬 사용자 계정의 디렉터리에 다른 서버에 대한 키가 저장되어 있습니다 .ssh.

로그인을 시도할 때 나타나는 오류는 다음과 같습니다.

C:\Web\WebApp1>cap deploy:setup
  * executing `deploy:setup'
  * executing "mkdir -p /home2/webapp1 /home2/webapp1/releases /home2/webapp1/shared /home2/webapp1/shared/system /home2/webapp1/shared/log /home2/webapp1/shared/pids"
    servers: ["myserver.example.com"]

connection failed for: myserver.example.com (OpenSSL::PKey::PKeyError: not a public key "C:/Users/MyAccount/.ssh/id_rsa.pub")

Capistrano가 내가 가지고 있는 키의 존재를 무시하고 대신 비밀번호를 사용하여 로그인하도록 하려면 어떻게 해야 합니까? set :password, "myp@ssw0rd"추가 하려고 시도했지만 deploy.rb도움이되지 않았습니다.


업데이트

@sysadmin1138의 답변에 따라 ssh 구성 파일에 다음을 추가했습니다.

HostName myserver.example.com
    PreferredAuthentications=password
    PubkeyAuthentication=no

이제 오류가 발생합니다.

connection failed for: myserver.example.com (Net::SSH::AuthenticationFailed: webappuser)

그래도 비밀번호를 묻지도 않습니다. 구성 파일에 비밀번호를 지정하려고 시도했지만 여전히 동일한 오류가 발생했습니다.


내 Capistrano 구성의 관련 부분은 다음과 같습니다.

role :web, "myserver.example.com"

set :user, "webappuser"
default_run_options[:pty] = true # Allow Capistrano to prompt for passwords

set :deploy_to, "/home2/webapp1"

답변1

이것은 아마도 Capistrano 외부와 SSH 자체에서 해결 가능할 것입니다. ~/.ssh/config 파일을 설정하여 호스트에 대한 항목을 생성합니다.

HostName myserver.example.com
    PreferredAuthentications=keyboard-interactive
    PubkeyAuthentication=no

Capistrano는 키가 없으면 반드시 비밀번호를 묻는 메시지를 표시합니다. 저는 그렇게 했습니다.

답변2

의 코드를 읽은 후 Net::SSH::KeyManager문제를 발견했습니다.

이 컴퓨터에는 다음과 같은 공개 키가 있습니다.id_rsa.pub 없이해당 개인 키 ( 키 파일의 PuTTY 버전을 id_rsa사용하기 때문입니다 )id_rsa.ppk

Net::SSH::KeyManager그러나 다음과 같은 경우에만 키를 사용합니다.둘 다개인 및 공용 파일은 디렉토리에 있습니다. 불행하게도 이는 개인 키가 없는 공개 키(또는 공개 키가 없는 개인 키)를 발견하면 키를 그냥 버리는 대신 즉시 예외를 발생시킨다는 의미이기도 합니다.

PuTTYgen을 사용하여 개인 키를 내보낸 후.ppk 표준 OpenSSH 파일로 내보낸 후(그런 다음 해당 파일을 다음 지침에 따라 수정했습니다.)이 답변), 비밀번호 인증을 사용하여 연결할 수 있었습니다(없이다른 답변에 표시된 대로 ssh/config 파일이 필요합니다).


참고: 내 생각에는 이것이 OpenSSH gem의 버그인 것 같습니다. 하나의 유효하지 않은 키가 있어도 다른 키나 비밀번호를 사용할 수 없습니다.

관련 정보