Bitbucket으로 푸시 할 때마다 암호 문구를 피하는 방법


217

이 안내서 의 도움으로 ssh를 설정했으며 잘 작동했습니다 ( hg push암호를 묻지 않고 실행할 수 있음 ). 나는 여전히 동일한 홈 디렉토리를 사용하고 있다고 생각하면서 그때와 지금 사이에 일어날 수있는 일.

$ cat .hg/hgrc 
[paths]
default = ssh://hg@bitbucket.org/tshepang/bloog

$ hg push
Enter passphrase for key '/home/wena/.ssh/id_rsa': 
pushing to ssh://hg@bitbucket.org/tshepang/bloog
searching for changes
...

답변:


337

ssh 에이전트를 사용해야합니다. 짧은 답변 : 시도

$ ssh-add

밀기 전에. 요청시 암호를 입력하십시오.

ssh 에이전트를 아직 실행하지 않은 경우 다음 메시지가 표시됩니다.

Could not open a connection to your authentication agent.

이 상황에서 하나를 시작하고 그에 따라 환경을 설정할 수 있습니다

eval $(ssh-agent)

그런 다음 ssh-add명령을 반복하십시오 .

ssh 에이전트 맨 페이지를 살펴볼 가치가 있습니다.


2
eval입력 할 수 있는 요점은 무엇입니까 ssh-agent?
— James McMahon

4
사용할 수있는 명령이 표시되며 실행하지 않습니다. eval수행합니다.
— tshepang 2019

원래 질문과 관련이 없지만 GitHub, Bitbucket 등에서 이러한 문제가 계속 발생하면 http가 아닌 git / ssh URL을 사용하고 있는지 확인하십시오.
— Czechnology

기본 키가 없거나 여러 개를 추가하려는 경우ssh-add /path/to/key
— hoosierEE

46

이 문제를 해결하는 방법은 다음 ssh-agent과 ssh-add같습니다.

$ exec ssh-agent bash
$ ssh-add
Enter passphrase for ~/.ssh/id_rsa: 

이 후 암호는 현재 세션에 저장됩니다. 다시 묻지 않습니다.


7
대부분의 사람들은 그들의 패스 프레이즈에 대해 전혀 버그를 갖고 싶어하지 않습니다.
— connexo

26

ssh 키 관리를 위해 Keychain 을 사용 합니다. 데비안에서도 사용할 수 있으며 아마도 우분투에서

apt-get install keychain

데비안 키 체인 패키지 페이지 는 다음과 같습니다 . 보시다시피, 프로젝트는 활발하지 않지만 나를 위해 일합니다. 나는 또한 여기 에 또 다른 대답으로 이것에 대해 조금 언급했습니다.


2
//, 이것은 나를 위해 일했다. 터미널을 열 때마다 ssh 키 비밀번호를 입력 할 필요가 없기 때문에 ssh-agent보다 낫습니다 .
— Nathan Basanese

@NathanBasane 키 체인을 사용하면 터미널을 열 때마다 ssh 키 비밀번호를 입력 할 필요가 없다고 말하는가? 어떻게 구성합니까? 키 체인은 터미널을 열 때마다 암호를 요구하기 때문에 부팅 후 처음 열 때만 암호를 요구하지만 여전히 그렇습니다. 매번 암호 문구를 입력하고 싶지 않습니다.
— m4l490n

@ m4l490n 아니오, 키 체인을 사용하는 경우 터미널을 열 때마다 ssh 키 비밀번호를 입력 할 필요가 없습니다. 그러나 부팅 후 한 번 입력해야합니다. 암호는 디스크에 저장되지 않으므로 안전하지 않습니다.
— Faheem Mitha

나를 위해, 그것은 로그인 할 때마다 묻습니다 (원격 서버에 git 저장소 + ssh 키가 있고 "git pull"을 할 때마다 암호 문구를 입력해야합니다)
— Martin Thoma

@MartinThoma 그것은 잘못 보인다. .ssh를 올바르게 구성했는지 확인하십시오. 특히, 쉘이 올바르게 구성되어 있습니까? 여전히 작동하지 않고 알아낼 수없는 경우 질문을 할 수 있습니다.
— Faheem Mitha

13

다음 ~ / .ssh / config 파일을 작성하십시오 (있는 경우 편집).

Host *
    UseKeychain yes
    AddKeysToAgent yes
    IdentityFile ~/.ssh/id_rsa

하지만 저는 모든 서비스에 대해 서로 다른 키 쌍을 사용하고 있습니다.
— connexo

@connexo 와일드 카드 별표를 개별 호스트 이름으로 바꾸고 'id_rsa'를 해당 개인 키로 바꿀 수 있습니다
— ness-EE

1
IgnoreUnknown AddKeysToAgent,UseKeychain바로 위에 추가해야했습니다 UseKeychain yes.
— consideRatio

1
"UseKeychain yes"줄에 "잘못된 구성 옵션 : usekeychain"오류가 표시됩니다.
— m4l490n

@ m4l490n : UseKeychain옵션이 OpenSSH 7.1p2 (2016-02-28)에 추가 된 것 같습니다 . 이전 버전이있을 수 있습니다. openssh.com/txt/release-7.2
— chus

6

편의상 최적의 방법은 jmtd 와 Faheem 의 답변을 조합 한 것입니다 .

ssh-agent단독으로 사용 한다는 것은 ssh-agent열 때마다 새로운 터미널마다 새로운 인스턴스를 생성해야 한다는 것을 의미합니다 . keychain초기화되면 개인 키의 암호를 묻고 저장합니다. 그렇게하면 개인 키는 비밀번호로 보호되지만 비밀번호를 반복해서 입력 할 필요는 없습니다.

아치 위키 에서 키 체인 초기화 권장 /etc/profile.d/과 같은, 또는 쉘 프로파일을 .bash_profile하거나 .bashrc. 이것은 터미널을 열 자마자 키 체인에 영향을 미친다는 단점이 있습니다.

보다 유연한 접근 방식은 keychain특정 tmux세션 과 결합 하는 것 입니다. 따라서 .bash_profile:

tsess=$(tmux ls 2>&1)

if [[ "${tsess%%:*}" = "secured" ]] && 
   [[ -f $HOME/.keychain/$HOSTNAME-sh ]]; then
    # start keychain
    /usr/bin/keychain -Q -q --nogui ~/.ssh/id_rsa
    . $HOME/.keychain/$HOSTNAME-sh
fi

... 그리고 tmux필요할 때 (키 바인드에서 시작된) 보안 세션 을 시작하는 경우입니다 .

#!/bin/bash
PID=$(pgrep tmux)
new="tmux -f $HOME/.tmux/conf new -s secured"
old="tmux attach -t secured -d"

if [[ -z "$SSH_AUTH_SOCK" ]]; then
    eval `ssh-agent`
    trap "kill $SSH_AGENT_PID" 0
fi

if [[ -z "$PID" ]]; then
    urxvtc -title "SSH" -e sh -c "${new}"
else
    urxvtc -title "SSH" -e sh -c "${old}"
fi

ssh-add

이제 특정 tmux세션 을 시작할 때 키 체인이 한 번만 초기화됩니다 . 해당 세션이 지속되는 한 해당 ssh키 에 액세스 하여 원격 리포지토리로 푸시 할 수 있습니다.


원격 컴퓨터에서 어떻게 작동합니까? $ SSH_CLIENT를 확인하기 위해 두 번째 스크립트를 수정했으며 존재하는 경우 urxvtc를 실행하지 않고 tmux 만 실행하십시오. 작동하지만 문제는 .bash_profile 부분입니다. 처음 상자에 로그인하면 "tmux ls"의 출력 인 "서버를 찾을 수 없습니다 : 연결이 거부되었습니다"라고 표시됩니다. 그런 다음 두 번째 스크립트를 실행할 때 tmux는 새 세션을 시작하거나 기존 세션에 연결하지만 키 체인 프롬프트는 없습니다. 그런 다음 세션을 종료하면 키 체인 프롬프트가 기다리고 있습니다.
— jonyamo

세션이없는 경우 tmux 출력을 침묵 시키도록 답변을 업데이트했습니다.
— jasonwryan

고맙지 만 키 체인 문제는 여전히 해결되지 않았습니다. tmux는 새 세션을 생성하지만 빈 프롬프트로 바로 이동합니다. tmux 세션을 종료 할 때만 암호문을 요구하는 키 체인 프롬프트가 표시됩니다.
— jonyamo

키 체인은 .bash_profile에서만 실행되므로 키 체인의 말을 중단해야한다고 생각합니다. 문제는 ssh-add를 실행하는 것입니다. tmux 세션을 만든 후 ssh-add를 수동으로 실행하면 작동합니다.
— jonyamo

1
두 번째 스크립트를 건너 뛰고 보안 tmux 세션을 시작 .profile하면 로그인하자마자 키를 입력하라는 메시지가 표시됩니다.
— jasonwryan

0

당신은 사용할 수 있습니다 sshpass:

$ sudo apt-get install sshpass
$ sshpass -p 'password' ssh username@server

sshpass -p yourpassphrase일반적인 ssh명령 을 추가 하기 전에 추가해야합니다 .


2
정말 바보 같은 생각입니다. 셸 기록에 암호가 일반 텍스트로 표시되지 않습니까?
— connexo

정확하지만 암호를 사용하여 세션을 보호해서는 안됩니까?
— belka

1
당신이 할지라도, 당신은 얼마나 자주 당신 옆에 앉아서 당신을 배우고 배우도록 도와 줍니까?
— connexo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.