bashrc 기능은 현재 터미널에 특정 SSH 키를 추가합니다.

bashrc 기능은 현재 터미널에 특정 SSH 키를 추가합니다.

git로그인한 원격 컴퓨터에서 코드를 가져오거나/끌어오기/푸시하는 데 사용하는 모든 명령에 대해 암호를 입력할 필요가 없도록 다음을 추가했습니다.별명.bashrc파일에서:

alias='eval $(ssh-agent) && ssh-add'

이는 폴더에 SSH 키가 하나만 있는 시스템이나 사용할 SSH 키의 ~/.ssh이름이 기본 키를 고려하여 문서에 나와 있는 대로 명명된 경우 제대로 작동합니다.ssh-add

ssh-add는 인증 에이전트 ssh-agent(1)에 개인 키 ID를 추가합니다.
인수 없이 실행하면 ~/.ssh/id_rsa, ~/.ssh/id_dsa, ~/.ssh/id_ecdsa 및 ~/.ssh/id_ed25519 파일이 추가됩니다.

http://manpages.ubuntu.com/manpages/bionic/man1/ssh-add.1.html

하지만 지금은 여러 개의 SSH 키가 있는 컴퓨터를 사용하고 있습니다(이것은 과잉일 수도 있지만 그게 전부입니다).

$ cd ~/.ssh && ls -l 
-rw------- 1 user user 6059 jun  9 10:18 config
-rw------- 1 user user 9546 jul  1 17:58 known_hosts
-rw------- 1 user user 1417 aug 20 20:20 authorized_keys
-rw------- 1 user user 1424 jan 14 09:55 id_ed25519
-rw------- 1 user user 1424 jan 14 09:55 id_ed25519.pub
-rw------- 1 user user 1401 feb 16 13:26 id_ed25519-github
-rw------- 1 user user 1401 feb 16 13:26 id_ed25519-github.pub
-rw------- 1 user user  808 apr  2 12:22 id_ed25519-gitlab
-rw------- 1 user user  808 apr  2 12:22 id_ed25519-gitlab.pub

따라서 키 이름을 별칭에 매개변수로 전달할 수 있기를 원합니다 ssh-eval.

함수를 만드는 것이 좋은 방법이었지만 함수를 시작했을 때(시작한 후) 실제로 무한한 수의 프로세스가 시작되었기 때문에 예상대로 작동하지 않았습니다 ssh-agent(실제로 중지하려면 Ctrl+C를 눌러야 했습니다. 이러한 프로세스) source ~/.bashrc):

ssh-eval() {
    eval $(ssh-agent) && ssh-add "$1"
}

export -f ssh-eval

그런 다음 나는 그것을 다음과 같이 부릅니다.

ssh-eval ~/.ssh/id_ed25519-github

또는

ssh-eval

둘 다 ssh-agent 프로세스를 무기한 생성합니다(Ctrl+C를 사용하여 강제로 중지해야 함).

어떻게 해야 이 일을 정확하고 안전하게 할 수 있나요?

관련 정보