development

우분투에서 ssh-add로 개인 키를 영구적으로 추가하는 방법은 무엇입니까?

big-blog 2020. 2. 18. 22:48
반응형

우분투에서 ssh-add로 개인 키를 영구적으로 추가하는 방법은 무엇입니까? [닫은]


SSH를 통해 서버에 액세스하기 위해 비밀번호로 보호되는 개인 키가 있습니다.

나는 2 개의 리눅스 (우분투 10.04) 머신을 가지고 있으며 ssh-add 명령의 동작은 둘 다 다릅니다.

한 시스템에서 "ssh-add .ssh / identity"를 사용하고 비밀번호를 입력하면 키가 영구적으로 추가됩니다. 즉, 컴퓨터를 종료하고 다시 로그인 할 때마다 키가 이미 추가되었습니다.

다른 하나에서는 로그인 할 때마다 키를 추가해야합니다.

내가 기억하는 한, 나는 양쪽에서 똑같은 일을했습니다. 유일한 차이점은 영구적으로 추가 된 키에서 키가 생성되었다는 것입니다.

다른 기계에도 영구적으로 추가하는 방법을 아는 사람이 있습니까?


해결책은 파일에 키 파일을 추가하여 키 파일을 영구적으로 유지하는 것입니다 ~/.ssh/config.

IdentityFile ~/.ssh/gitHubKey
IdentityFile ~/.ssh/id_rsa_buhlServer

~ / .ssh 디렉토리에 'config'파일이 없으면 파일을 작성해야합니다. 루트 권한이 필요하지 않으므로 간단히 :

nano ~/.ssh/config

... 그리고 요구 사항에 따라 위의 줄을 입력하십시오.

이 작업을 수행하려면 파일에 chmod 600이 있어야합니다 chmod 600 ~/.ssh/config. 명령을 사용할 수 있습니다 .

컴퓨터의 모든 사용자가 키를 사용하도록하려면이 행을 모든 사용자가 /etc/ssh/ssh_config액세스 할 수있는 폴더에 넣으십시오 .

또한 하나의 호스트에만 키를 설정하려면 ~ / .ssh / config에서 다음을 수행 할 수 있습니다.

Host github.com
    User git
    IdentityFile ~/.ssh/githubKey

이는 잘못된 ID를 먼저 시도했기 때문에 서버가 거부하지 않는 ID가 많은 경우 이점이 있습니다. 특정 정체성 만 시도됩니다.


Mac OS X Lion에서 동일한 문제에 대답하지 못했습니다. 나는 추가했다 :

ssh-add ~/.ssh/id_rsa &>/dev/null

내 .zshrc (그러나 .profile도 괜찮을 것입니다)에 고정되어있는 것 같습니다.

(여기서 제안 된 바와 같이 : http://geek.michaelgrace.org/2011/09/permanently-add-ssh-key-ssh-add/ )


ssh-add에 -K 옵션을 사용하여 Mac OSX (10.10)에서 해당 문제를 해결했습니다.

ssh-add -K ~/.ssh/your_private_key

macOS 10.12 이상의 경우 https://github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain에 설명 된대로 ssh 구성을 추가로 편집해야합니다.


Ubuntu 빠른 팁 https://help.ubuntu.com/community/QuickTips 에서 참조 된대로 키 체인을 추가 하십시오.

ssh-agent 및 ssh-add를 지속적으로 시작하는 대신 키 체인을 사용하여 ssh 키를 관리 할 수 ​​있습니다. 키 체인을 설치하려면 여기를 클릭하거나 Synaptic을 사용하여 작업을 수행하거나 명령 줄에서 apt-get을 받으십시오.

커맨드 라인

파일을 설치하는 또 다른 방법은 터미널 (응용 프로그램-> 액세서리-> 터미널)을 열고 다음을 입력하는 것입니다.

sudo apt-get install keychain

파일 편집

그런 다음 $ {HOME} /. bashrc 또는 /etc/bash.bashrc에 다음 행을 추가해야합니다.

keychain id_rsa id_dsa
. ~/.keychain/`uname -n`-sh

@Aaron의 솔루션을 사용해 보았는데 터미널에서 새 탭을 열 때마다 키를 다시 추가하기 때문에 제대로 작동하지 않았습니다. 그래서 조금 수정했습니다 (대부분의 키는 암호로 보호되어 있으므로 출력을 / dev / null로 보낼 수는 없습니다).

added_keys=`ssh-add -l`

if [ ! $(echo $added_keys | grep -o -e my_key) ]; then
    ssh-add "$HOME/.ssh/my_key"
fi

이것이하는 것은 ssh-add -l특정 키에 대한 출력 (추가 된 모든 키를 나열)을 확인하고 찾지 못한 경우로 추가합니다 ssh-add.

이제 터미널을 처음 열면 개인 키의 암호를 묻는 메시지가 표시되며 컴퓨터를 재부팅 (또는 로그 아웃-확인하지 않음) 할 때까지 다시 묻지 않습니다.

많은 키가 있기 때문에 ssh-add -l성능을 향상시키기 위해 변수에 출력을 저장합니다 (적어도 성능이 향상되는 것 같습니다 :))

PS : 나는 리눅스에있어이 코드는 내 갔다 ~/.bashrc파일 - 당신이 맥 OS X에있는 경우, 나는 당신이에 추가해야 가정 .zshrc또는.profile

편집 : 주석에서 @Aaron이 지적한 것처럼 .zshrc파일은 zsh에서 사용 되므로 해당 파일을 사용 하지 않는 경우 (확실하지 않은 경우 bash대신 대신 사용 하고 있음)이 코드는 .bashrc파일 로 이동 하십시오.


내 경우에는 해결책은 다음과 같습니다.

구성 파일에 대한 권한은 600이어야합니다. chmod 600 config

위의 의견에서 언급했듯이 일반 의견

구성 파일 내용을 만질 필요가 없습니다.


우분투 16.04에서 동일한 문제가 발생했습니다. 일부 키는 영구적으로 추가되었으며 다른 키는 ssh-add모든 세션 에서 실행해야 했습니다. 영구적으로 추가 된 키에는 개인 키와 공개 키가 모두 ~/.ssh있고 모든 세션에서 잊어 버린 키는 ~/.sshdir에 개인 키 만 있음을 알았습니다 . 따라서 해결책은 간단합니다.를 실행 하기 전에 개인 키와 공개 키를 모두 복사해야합니다 .~/.sshssh-add

추신 : Gnome Wiki를 이해 하는 한 Gnome Desktop Environment의 일부인 gnome-keyring 도구 덕분에 제 방법이 작동합니다. 따라서 Gnome 또는 Gnome 기반 DE를 사용하는 경우에만 내 방법이 작동해야합니다.


우분투 14.04 (아마도, 아마도 여전히)에서는 콘솔조차 필요하지 않습니다.

  • seahorse"키"를 찾은 것을 시작 하거나 시작하십시오.
  • 거기에 SSH 키를 만들거나 가져옵니다.
    • 비밀번호 문구를 비워 둘 필요가 없습니다.
    • 공개 키를 서버 (또는 그 이상)로 푸시 할 수도 있습니다.
  • ssh-agent가 실행 되고이 키가로드되었지만 잠겨 있습니다.
  • 를 사용 ssh하면 에이전트를 통해 ID (예 : 키)를 가져옵니다
  • 세션 중에 처음 사용하면 암호 문구가 확인됩니다
    • 로그인하면 자동으로 키 잠금을 해제 할 수 있습니다
    • 이것은 로그인 인증이 키의 암호를 감싸는 데 사용됨을 의미합니다.
  • 참고 : ID를 전달하려면 (예 : 에이전트 전달) 사용자 ssh호출 -A하거나 기본값으로 설정하십시오.
    • 그렇지 않으면 나중에 세 번째 컴퓨터에 로그인 한 컴퓨터에서 해당 키로 인증 할 수 없습니다

두 개의 id_rsa 키를 사용하여 Ubuntu를 실행합니다. (일을위한 개인적인 것). ssh-add는 하나의 키 (개인 키)를 기억하고 매번 회사를 잊어 버립니다.

개인 키에 400 개의 권리가 있고 회사 키에 600 개의 권리가 있다는 것을 알았습니다. (u + w가 있음). 회사 키에서 사용자 쓰기 권한을 제거하면 (uw 또는 400으로 설정) 문제가 해결되었습니다. ssh-add는 이제 두 키를 모두 기억합니다.


"~ / .bashrc"에 다음 줄을 추가하면 문제가 해결되었습니다. Ubuntu 14.04 데스크톱을 사용하고 있습니다.

eval `gnome-keyring-daemon --start`
USERNAME="reynold"
export SSH_AUTH_SOCK="$(ls /run/user/$(id -u $USERNAME)/keyring*/ssh|head -1)"
export SSH_AGENT_PID="$(pgrep gnome-keyring)"

아주 간단한 ^ _ ^ 두 단계

1. 음 설치 키 체인

2. 아래 코드를 .bash_profile에 추가하십시오.

/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh

이것은 나를 위해 일했습니다.

ssh-agent /bin/sh
ssh-add /path/to/your/key

Fish shell을 사용하는 사람들은 다음 함수를 사용하여 ~ / .config / fish / config.fish에서 호출 할 수 있습니다. id_rsa시작하는 모든 키를에로드 합니다 ssh-agent.

# Load all ssh keys that start with "id_rsa"
function loadsshkeys
  set added_keys (ssh-add -l)
   for key in (find ~/.ssh/ -not -name "*.pub" -a -iname "id_rsa*")
    if test ! (echo $added_keys | grep -o -e $key)
      ssh-add "$key"
    end
  end
end

# Call the function to run it.
loadsshkeys

당신이 갖고 싶어 ssh-agent당신이 사용할 수있는 터미널 열 때 자동으로 시작 tuvistavie / 물고기 SSH 에이전트를 이 작업을 수행합니다.

참고 URL : https://stackoverflow.com/questions/3466626/how-to-permanently-add-a-private-key-with-ssh-add-on-ubuntu



도와주세요.
반응형