서버에 빠르게 접속할 수 있도록 .bash_profile
설정해두었습니다 . my 에도 eval $(ssh-agent)
추가하면 해당 터미널 창을 사용하여 서버에 로그인하지 않더라도 모든 터미널 창에 SSH 키 비밀번호를 입력해야 합니다.ssh-add ~/.ssh/id_rsa_my_key
.bash_profile
해당 줄을 쉽게 입력할 수 있도록 별칭을 만들 수 있지만 ssh-add ~/.ssh/id_rsa_my_key
(그래서 달성하려는 작업에 대해 생각하는 것을 멈추지 않고 대신 키 이름을 지정하는 방법에 대해 생각할 필요가 없습니다), 여전히 해야 할 일을 기억해야 합니다. 상자에 SSH를 연결하기 전에 이 작업을 수행하세요.
나는 이 모든 것이 키체인에 의해 거의 투명하게 처리되고 ssh
액세스에 대해 생각할 필요 없이 그냥 나갈 수 있는 OS X에서 작업하는 데 익숙합니다. 지금은 대부분 Windows 컴퓨터에서 작업하지만 사고 습관을 바꿀 필요는 없습니다. Windows에서는 내가 죽으면 ssh-agent
또한 가능하다면 이 작업을 수행하기 위해 ssh의 별칭이나 기능을 사용하고 싶지 않습니다. 일반적인 명령과 프로그램을 대체하기 위해 별칭과 함수를 만드는 것은 다소 취약하고 위험한 솔루션이라고 생각합니다.다른앞으로 문제가 발생할 것이며 유일한 해결책은 ssh
별칭을 바꾸는 것입니다. 그렇지 않으면 함수가 더 복잡하고 취약해질 가능성이 높습니다. 이것은 세 번째로 점점 더 많아집니다. 그럼에도 불구하고 이가능한유일한 솔루션이 되십시오. 또한 기능이 작동하려면 먼저 키가 추가되었는지 확인해야 합니다. 그렇지 않으면 로그인할 때마다 키를 추가하므로 아무 것도 수행되지 않습니다.
ssh
이 작업을 자동으로 수행할 수 있는 설정이 있습니까 ? ssh-add ~/.ssh/id_rsa_my_key
내 에 추가하는 것보다 더 나은 솔루션이 있습니까 .bash_profile
?
답변1
쉘 시작 스크립트에 아무 것도 추가하지 마십시오. 불필요한 해킹입니다.
대신에 추가하세요
AddKeysToAgent yes
.ssh/config에
이와 같이 ssh-add는 처음으로 다른 상자에 SSH를 연결할 때 자동으로 실행됩니다. ssh-agent 키가 만료되거나 다시 시작된 경우에만 키를 다시 입력해야 합니다.
답변2
임의의 소켓 이름을 생성하는 대신 항상 동일한 이름을 사용하려면 이 옵션을 사용하십시오 ssh-agent
. -a
이 이름을 SSH_AUTH_SOCK
환경 변수로 내보냅니다. 로그인하면 실행하세요.
rm -f "$SSH_AUTH_SOCK"
ssh-agent -a "$SSH_AUTH_SOCK"
이렇게 하면 모든 터미널이 동일한 프록시에 연결됩니다. 그런 다음 로그인할 때 터미널을 시작하여 비밀번호를 묻는 메시지를 표시하거나 SSH 자체에서 비밀번호를 묻는 메시지를 표시하도록 설정할 ssh-add
수 있습니다.SSH_ASKPASS
win-ssh-askpass
답변3
물론 래퍼 함수를 만들어 .bashrc
.
이 같은:
ssh () {
ssh-add -l | grep 'The agent has no identities.' 2>&1 > /dev/null && ssh-add
/usr/bin/ssh "$@"
}
Cygwin을 사용하고 있기 때문에 실제로 SSH가 있는 위치에 대한 올바른 경로가 필요합니다.