ssh-agent를 모든 터미널에서 작동 시키려면 어떻게해야합니까?


27

ssh-copy-id를 사용하여 일부 서버에 자동 (암호가 적음) ssh 로그인을 설정했습니다. ssh-agent실행 된 터미널에서만 작동합니다. ssh-add모든 터미널에서 근무하려면 어떻게해야 합니까?

당연히 암호가 없으면 SSH 키를 선호하지 않습니다.

답변:


26

그래픽 세션에 로그인하는 경우 세션 시작 ssh-agent중에 시작하도록 준비 하십시오. 일부 배포판은 이미이를 수행합니다. 그렇지 않은 경우 ssh-agent세션 시작 스크립트 또는 창 관리자에서 실행되도록 준비 하십시오. 이를 수행하는 방법은 데스크탑 환경과 창 관리자에 따라 다릅니다. 수동으로 윈도우 매니저를 시작하는 경우 예를 들어, 단순히 전화를 대체 my_favorite_wm하여 ssh-agent my_favorite_wm.

시작하지 마십시오 ssh-agent에서 .bashrc또는 .zshrc이 파일은 각각의 새로운 대화 형 쉘에 의해 실행되기 때문에,. 시작하는 장소는 ssh-agent같은 세션 시작 파일에 .profile또는 .xsession.

로그인 한 위치에 관계없이 모든 프로세스에서 동일한 SSH 에이전트를 사용하려면 임의로 이름이 지정된 소켓을 사용하는 대신 항상 동일한 소켓 이름을 사용하도록 할 수 있습니다. 예를 들어, 이것을 다음에 넣을 수 있습니다 ~/.profile.

export SSH_AUTH_SOCK=~/.ssh/ssh-agent.$HOSTNAME.sock
ssh-add -l 2>/dev/null >/dev/null
if [ $? -ge 2 ]; then
  ssh-agent -a "$SSH_AUTH_SOCK" >/dev/null
fi

참고로, $? -ge 2종료 코드 1은 ssh-agent에 키가 없지만 ssh-agent가 이미 실행 중이기 때문입니다.
wisbucky

7

이 정확한 목적을 위해 설계된 Keychain 과 같은 프로그램을 원할 것입니다. 매뉴얼 페이지에서 :

DESCRIPTION
   keychain is a manager for ssh-agent, typically run from ~/.bash_profile.
   It allows your shells and cron jobs to share a single ssh-agent process.

정말이 좋아!
Colin D

큰! 고맙습니다. 완벽하게 작동합니다.
누군가

Github에서 압축 파일을 다운로드 한 후 압축이 풀린 keychain-2.8.5 디렉토리의 전체 경로를 ~ / .bash_profile export PATH = $ PATH : line
Kevin Zhao

4

데스크탑 환경 또는 창 관리자에 적용하십시오. 과거에 custom을 사용하여 수동 으로이 작업을 수행했을 때 ~/.Xclients마지막 행으로 사용했습니다.

ssh-agent mywindowmanger

KDE가 그렇지 않은 것처럼 보이지만 여기에는 자체 설정 옵션이있는 일부 DE가있을 수 있습니다. 현재는 광산에서 코드를 통해 실행 된 것으로 보인다 /etc/X11/xinit/xinitrc-common관계없이 DE / WM의 모든 사용자에 대해 활성화되고 부모 프로세스의 명령이기 때문에, (페도라에 의해 수행 아마도 뭔가) $HOME/.Xclients하지만 파일 참조를하지 않습니다 ssh-agent(반면 /etc/X11/xinit/xinitrc-common않습니다).

이 없으면 ~/.Xclients한 줄로만 만들 수 있지만 DE / WM을 시작하는 명령을 알아야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.