키가 ssh-agent에없는 경우 ssh / slogin에 ssh-add를 수행합니까?


10

그놈을 실행할 때 아이디가로드되지 않은 경우 ssh-agent는 slogin / ssh에서 ssh-add를 실행합니다. 원격 쉘 에서이 동작을 모방하고 싶지만 로그인하면 ssh-add를 실행하는 것이 좋습니다. 나중에 로그인 할 때가 아니라 원격 쉘에서 slogin / ssh를 실행하는 경우에만 ssh-add를 실행하고 싶습니다.

답변:


9

나는 bash shell을 통해 이것에 대한 해결책을 찾았다.

.bashrc에 추가하십시오 :

check-ssh-add() {
if [ "$DESKTOP_SESSION" == "" ]; then
  if [[ `ssh-add -l` != *id_?sa* ]]; then 
    ssh-add -t 5h  ## 5 hour ssh-agent expiration
  fi
fi
}

slogin() {
check-ssh-add
/usr/bin/slogin $@
}

ssh() {
check-ssh-add
/usr/bin/ssh $@
}

scp() {
check-ssh-add
/usr/bin/scp $@
}

sftp() {
check-ssh-add
/usr/bin/sftp $@
}

7

실제로 더 간단한 방법이 있습니다. ssh-add -l키가 있으면 true (0), 그렇지 않으면 false (1)를 반환하므로 첫 번째 함수를 다음과 같이 바꿀 수 있습니다.

check-ssh-add() {
  if ! ssh-add -l >/dev/null; then
      ssh-add -t 5h
  fi
}

 


1

«이것은 대화식 세션입니다»부분 추가

ssh-add -l &> /dev/null || ssh-add ~/.ssh/my_id

0

에서 사용하도록 설정하면 최신 버전의 OpenSSH에서 처음 사용할 때 키를 에이전트에 추가 할 수 AddKeysToAgent yes있습니다 ~/.ssh/config.

( https://superuser.com/a/1114257/42546 에서 이것을 배웠습니다 . 다양한 StackExchange 사이트의 답변을 처리하는 데 적절한 StackOverflow 에티켓이 무엇인지 잘 모르겠습니다.)

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