SSH 암호를 한 번 입력하십시오


124

업그레이드하기 전에

git clone git@...컴퓨터를 다시 시작할 때마다 ssh를 사용하여 실행하면 SSH 암호 문구를 삽입하기위한 텍스트 상자가 포함 된 창 대화 상자가 나타나고 확인되었습니다. 그런 다음 다음에 시스템을 시작할 때까지 더 이상 암호가 필요하지 않았습니다.

13.10으로 업그레이드 한 후

Ubuntu 13.10으로 업그레이드 한 후 해당 창이 더 이상 나타나지 않지만 터미널에 메시지가 나타납니다.

Enter passphrase for key '/home/username/.ssh/id_rsa': 

... git 저장소를 복제 할 때마다 나타납니다.

이 문제를 어떻게 해결할 수 있습니까? 비밀번호 문구를 한 번만 입력하고 싶습니다.


1
나는 당신이 그 ssh-add명령 을 사용해야한다고 생각합니다 . 사용해 보셨습니까?
devius

2
나는 ssh-agent bash+을 시도했다 ssh-add. 몇 분 동안 만 작동합니다.
Ionică Bizău

결국 같은 문제가 있습니다. OpenSSH의 ssh-agent와 Gnome Keyring Daemon 사이에 충돌이있을 수 있습니다.
devius


2
AddKeysToAgent yes.ssh / config에 추가 하면 효과가 있습니다.
xslittlegrass

답변:


138

업데이트 : 13.10의 버그 인 것 같습니다.

https://bugs.launchpad.net/ubuntu/+source/libpam-ssh/+bug/1247169


어쨌든 다음 명령을 실행하면 문제가 해결되었습니다.

어떻게 고치는 지

다음 명령을 입력하여이 문제를 해결했습니다.

$ ssh-agent bash

개인 키를 추가 할 수있는 새로운 bash 프로세스가 생성됩니다. 새 개인 키를 추가 할 때 암호 문구를 한 번만 입력하라는 메시지가 표시됩니다.

그리고:

$ ssh-add /home/username/.ssh/id_rsa
Enter passphrase for /home/username/.ssh/id_rsa: 
Identity added: /home/username/.ssh/id_rsa (/home/username/.ssh/id_rsa)

... username사용자 이름은 어디에 있습니까 ? $USER변수를 사용하여 동일한 작업을 수행 할 수 있습니다 .

$ ssh-add /home/$USER/.ssh/id_rsa

또는 ~홈 디렉토리 로만 사용 하십시오.

$ ssh-add ~/.ssh/id_rsa

그리고 문제가 해결되었습니다.


47
이것은 문제를 전혀 해결하지 못합니다. 터미널에서 나갈 때까지 에이전트에 ID 만 추가합니다. 새 터미널을 열면 ssh-add다시 해야 합니다.
devius

@devius 예, 버그 인 것 같습니다. 그러나 위의 명령으로 내 문제가 해결되었습니다.
Ionică Bizău

3
명확히하기 위해 :이 "수정"을 사용하면 해당 터미널의 암호를 다시 입력하지 않아도됩니다. 새 터미널을 여는 순간 암호를 다시 제공해야합니다.
harijay

9
나는 $ ssh-add /home/username/.ssh/id_rsa(없이 ssh-agent bash) 시도 하고 터미널을 다시 연 후에도 나를 위해 일했다. 그러나 나를위한 완벽한 솔루션은이 하나의 stackoverflow.com/a/4246809/532252 입니다. 머신을 재부팅 한 후에도 모든 것이 정상입니다.
kishie

1
터미널에 ssh-add를 입력했습니다. ssh-agent bash로 전환하거나
id_rsa

39

0) 짧은 답변

.ssh/config처음에 한 줄에 추가하십시오 .

AddKeysToAgent yes

충분하지 않은 경우 ssh 버전을 확인하고 ssh-agent가 다음 지침과 함께로드되었는지 확인하십시오.

1) openssh 버전 확인

먼저 ssh 버전 이 7.2 이상 인지 확인하십시오 .

ssh -V

2) 구성 파일 편집

그렇다면 .ssh/config처음에 한 줄을 추가하십시오 .

AddKeysToAgent yes

3) ssh-agent가 이미 열려 있는지 확인하십시오

일반적으로 배포는 ssh-agent를 자동으로로드합니다. 그것을 확인하려면 실행

ps aux | grep -v grep | grep ssh-agent

줄이 포함되어 있지 않으면 다음을 실행하여로드해야합니다.

eval $(ssh-agent)

이렇게하면 현재 터미널에서만 에이전트를 사용할 수 있으므로 어디에서나 사용할 수 있도록 ~/.profile파일 에이 줄을 추가 하고 재부팅 할 수 있습니다 .


11
AddKeysToAgent yes와 - 정식 후 2016 대답은 정확하게 가장 현대적인 사용자를 위해서 grepping 무엇. 2017 년 중반입니다. 우분투> = 16.04 ( Xenial Xerus )는 이제 합리적인 가정입니다. 야생에서 대부분의 OpenSSH 설치는이 옵션을 지원합니다. 이 질문에 대한 다른 모든 대답에 의해 옹호 된 일종의 특별 쉘 스크립트 kludges는 ... passé 입니다. </sigh>
세실 커리

2
이것은 허용 대답을해야한다
simernes

32

이 Atlassian 문서 는 Ubuntu 14.04 Server Edition에서 문제를 해결했습니다.

이 값을 .bashrc파일에 추가 하십시오.

SSH_ENV=$HOME/.ssh/environment

# start the ssh-agent
function start_agent {
    echo "Initializing new SSH agent..."
    # spawn ssh-agent
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
    echo succeeded
    chmod 600 "${SSH_ENV}"
    . "${SSH_ENV}" > /dev/null
    /usr/bin/ssh-add
}

if [ -f "${SSH_ENV}" ]; then
     . "${SSH_ENV}" > /dev/null
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi

그리고 로그인 후 비밀번호를 한 번만 요청하면 캐시됩니다. 매번 입력 할 필요는 없습니다.


2
이것은 Sabayon Linux 에서이 답변을 성공적으로 사용한 것처럼 다른 배포판에서 작동하는 것 같습니다.
BH2017

1
감사! 이 솔루션은 dbus-daemon 문제로 인해 gnome-keyring-daemon이 작동하지 않는 우분투 시스템에서 저에게 효과적이었습니다. 구체적으로, 다음과 같은 오류가 발생했습니다. "** 메시지 : dbus 세션 버스에 연결할 수 없습니다 : X11에 대한 $ DISPLAY없이 dbus- 데몬을 자동으로 시작할 수 없습니다"및 디스플레이 환경 변수를 설정 한 후 "** 메시지 : 수 없음 'dbus 세션 버스에 연결하지 않았습니다. // bin / dbus-launch가 다음 오류와 함께 비정상적으로 종료되었습니다. 자동 실행 오류 : X11 초기화에 실패했습니다. "
user207863

1
더 많은 투표가 필요하며 가상화 된 Ubuntu 16.04의 문제를 해결합니다.
Niels Keurentjes

3
이렇게하면 Windows 용 Bash에서도 문제가 해결됩니다. Bash를 여러 번 시작했는데 암호가 기억났습니다. 아직 다시 시작하지 않았습니다.
Amr

2
다른 모든 솔루션을 시도한 후에 이것은 나를 위해 일했습니다. 이것은 OP에 대한 해결책이어야합니다
João Pimentel Ferreira

20

이 버그 의 해결 방법 은 아래에 다음을 추가하는 것입니다.~/.bashrc

eval `gnome-keyring-daemon --start`

2
그놈 키링이 세션의 일부일까요?
Pavel Šimerda

1
당신이 '해야한다'에 대해 이야기한다면, 모든 것이 완벽하다면이 질문은 여기에 있어서는 안됩니다
Anwar

1
이에 속하는지 확실하지 않습니다 .bashrc. 일부 DE 프로필 파일에 추가 할 필요가 같이 보인다
드미트리 Ginzburg

3

피쉬 쉘 사용자는 이 스크립트 를 사용 하여 동일한 작업을 수행 할 수 있습니다 .

# content has to be in .config/fish/config.fish
# if it does not exist, create the file
setenv SSH_ENV $HOME/.ssh/environment

function start_agent                                                                                                                                                                    
    echo "Initializing new SSH agent ..."
    ssh-agent -c | sed 's/^echo/#echo/' > $SSH_ENV
    echo "succeeded"
    chmod 600 $SSH_ENV 
    . $SSH_ENV > /dev/null
    ssh-add
end

function test_identities                                                                                                                                                                
    ssh-add -l | grep "The agent has no identities" > /dev/null
    if [ $status -eq 0 ]
        ssh-add
        if [ $status -eq 2 ]
            start_agent
        end
    end
end

if [ -n "$SSH_AGENT_PID" ] 
    ps -ef | grep $SSH_AGENT_PID | grep ssh-agent > /dev/null
    if [ $status -eq 0 ]
        test_identities
    end  
else
    if [ -f $SSH_ENV ]
        . $SSH_ENV > /dev/null
    end  
    ps -ef | grep $SSH_AGENT_PID | grep -v grep | grep ssh-agent > /dev/null
    if [ $status -eq 0 ]
        test_identities
    else 
        start_agent
    end  
end

0

나는 이것을 사용한다 :

vim ~/.profile

eval `/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh,gpg`
export SSH_AUTH_SOCK
export GPG_AGENT_INFO

0

Azure .ppk 파일을 사용하는 경우

간단히 pem으로 변환하고 간단한 단계로 권한 400을 추가하십시오.

sudo apt-get install putty
puttygen <path_to_key>/keyname.ppk -O private-openssh -o <path>/aws_key.pem
sudo chmod 400 <path>/aws_key.pem
ssh -vi aws_key.pem ubuntu@<ip_address>

0

Ubuntu 18.04에서 ssh-agent는 세션 X가 열릴 때 시작되며 /etc/X11/Xsession.options 파일에서 관리됩니다.

# cat /etc/X11/Xsession.options
# $Id: Xsession.options 189 2005-06-11 00:04:27Z branden $
#
# configuration options for /etc/X11/Xsession
# See Xsession.options(5) for an explanation of the available options.
allow-failsafe
allow-user-resources
allow-user-xsession
use-ssh-agent
use-session-dbus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.