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를 사용하여 강제로 중지해야 함).
어떻게 해야 이 일을 정확하고 안전하게 할 수 있나요?