생선 껍질에서 ssh-agent를 실행하는 방법은 무엇입니까?

생선 껍질에서 ssh-agent를 실행하는 방법은 무엇입니까?

실행 중인데 eval `ssh-agent -s\` 이 오류가 발생했습니다.

fish: Unknown command: `ssh-agent

답변1

귀하의 질문에는 두 부분이 있습니다.

  • 시도할 때 오류가 발생하는 이유는 무엇입니까 eval `ssh-agent -s`?
  • ssh-agentFish 쉘에서 활성화하는 방법

먼저 찾고 있는 기능을 "명령 대체"라고 합니다. Bash/POSIX 쉘에서 이를 수행하는 두 가지 방법이 있습니다:

  • `command`사용 중인 백틱(예 : )
  • $(command)

백틱 형식은 사용하지 않는 것이 좋습니다. 따라서 백틱 형식을 사용하는 문서나 블로그를 접하게 되면 해당 형식이 심각하게 오래되었거나 인식하지 못하고 있다는 점을 인식하세요.

Fish에서 발견한 바와 같이 (command)그룹화는 명령 대체를 수행하는 "가장 지원되는" 방법입니다. 그러나 Fish 3.4.0부터는 이 $(command)형식도 작동합니다. 따라서 다음 중 하나를 사용합니다.

  • eval (ssh-agent -c)또는
  • eval $(ssh-agent -c)작동할 것이다
생선 껍질에서 ssh-agent를 실행하는 방법은 무엇입니까?

그러나 나는 다음을 사용하는 것을 권장합니다.keychainssh-agent물고기(및 기타 조개)에서 사용을 단순화합니다 . (@Charliesneath가 주석에서 지적했듯이) 웹페이지에서 다음과 같은 부분을 무시하세요."현재 키체인은 Fish Shell과 호환되지 않습니다." 웹페이지가 한동안 업데이트되지 않았습니다.

키체인에는 실제로 Fish(2017년에 추가됨)에 대한 지원이 내장되어 있으며 범용 변수를 사용하여 여러 셸 세션에서 키를 동기화할 수 있습니다.

예를 들어, 두 개의 Fish 셸 세션이 열려 있고 그 중 하나에서 ssh-agent/를 실행하는 경우 ssh-add다른 쪽에서도 동일한 작업을 실행하고 비밀번호를 다시 입력해야 합니다. 있다셸 세션 간에 에이전트를 공유하는 방법, 하지만 키체인이 대신 처리해 줍니다.

키체인은 대부분의 배포판 저장소에서 직접 설치할 수 있습니다. 예를 들어, sudo apt install keychain.

다음을 사용하여 Fish에서 활성화할 수 있습니다.

keychain --eval <keyfile> | source

Fish에서는 다음과 같이 설정했습니다.

  • 다음 스크립트를 작성하십시오.~/.config/fish/conf.d/keychain.fish

    if status is-login
        and status is-interactive
        # To add a key, set -Ua SSH_KEYS_TO_AUTOLOAD keypath
        # To remove a key, set -U --erase 
    SSH_KEYS_TO_AUTOLOAD[index_of_key]
        keychain --eval $SSH_KEYS_TO_AUTOLOAD | source
    end
    
  • set -Ua SSH_KEYS_TO_AUTOLOAD ~/.ssh/id...사용하려는 키에 대해.

거의 그 정도입니다. 로그인 Fish 쉘을 시작할 때 키가 잠금 해제되지 않은 경우 키체인은 비밀번호를 요청하고 이를 공유 ssh-agent. 이미 잠금이 해제된 경우에는 다시 묻지 않습니다.

물론 정적 키 이름을 삽입하여 스크립트를 단순화할 수 있습니다. 나는 스크립트를 동적으로 유지하기 위해 범용 변수를 선호합니다. 이를 통해 다른 시스템에서 다른 키를 사용하더라도 단일 스크립트를 내 도트파일 저장소에 저장할 수 있습니다.

답변2

나는이 해결책을 얻습니다

달리다

eval (ssh-agent -c)

참조:https://wiki.archlinux.org/title/Fish#Evaluate_ssh-agent

답변3

나는 fish_ssh_agentgihub에서 사용한다https://github.com/ivakyb/fish_ssh_agent

github/ivakyb/fish_ssh_agent

해당 저장소에는 SSH, SSH-agent, Fish-shell 주제에 대한 유용한 힌트도 거의 없습니다.

관련 정보