터미널에서 WSL2를 사용하고 있으며 Ubuntu가 설치되어 있습니다. 내 항목에 다음을 추가했습니다 .bashrc
.
# Start ssh-agent
# check if ssh-agent is already running
if [ -z "$SSH_AUTH_SOCK" ]; then
#start ssh-agent
eval "$(ssh-agent -s)"
fi
# Ask for ssh-add
read -p "Do you want to add your SSH public key? (y/n) " response
if [ "$response" = "y" ]; then
ssh-add ~/id_rsa
ssh-add -l
elif [ "$response" = "n" ]; then
echo "No identity on terminal session"
else
echo "Invalid response"
fi
내 생각은 새 터미널을 열 때마다 ID가 필요한지 묻는 메시지를 표시한 다음 ssh-agent를 시작하고 필요한 경우 키를 추가하는 것입니다. 처음에는 스크립트가 작동하는 것처럼 보이며 에이전트의 PID를 표시하고 SSH 비밀번호를 묻는 메시지를 표시합니다. 이렇게 하면 SSH 에이전트를 볼 수 있습니다 top
. 그러나 이러한 명령의 출력을 보더라도 실제로 ssh-agent를 초기화하거나 키를 추가하지는 않습니다. 나는 심지어 이것을 했고 ssh-add -l
결과는 다음과 같습니다:The agent has no identities.
이 작업을 어떻게 수행합니까? 이는 WSL 문제여야 합니다.
답변1
음... 로드해 보세요 ~/id_rsa
. 일반적으로 키는 ~/.ssh
폴더에 있습니다 . AFAIR ssh는 파일 및 폴더 권한에 대해서도 매우 까다롭습니다. SSH가 충분히 안전하다고 간주하지 않는 디렉토리에 키가 있으면 키를 사용하지 않습니다.
키가 실제로 에 있는 경우 ~
키(및 해당 .pub
파일) 를 ~/.ssh
해당 폴더로 이동합니다. 파일과 스키마 ~/.ssh
가 있는지 확인하세요 . 스키마도 있어야 합니다 . 이를 수행하는 방법을 모르는 경우 chmod(1)를 참조하십시오.0700
~/.ssh/id_rsa
0600
또한 ssh-add에 파일 이름을 제공할 필요가 없습니다. 매뉴얼 페이지에 따르면:
ssh-add
인증 에이전트에 개인 키 ID를 추가합니다ssh-agent(1)
. 인수 없이 실행하면 파일~/.ssh/id_rsa
,~/.ssh/id_ecdsa
,~/.ssh/id_ecdsa_sk
, 및 가~/.ssh/id_ed25519
추가 됩니다 . 개인 키를 로드한 후...~/.ssh/id_ed25519_sk
~/.ssh/id_dsa
간단히 말해서:
- 주요 파일이
~/.ssh
폴더에 있는지 확인하세요. .bashrc
파일 에서ssh-add
.
참고 사항: 문제가 있다고 해서 .bashrc
반드시 좋은 것은 아닙니다. .bashrc
이는 비대화형으로 로드할 때 존재합니다(그러나 WSL에는 존재하지 않을 수도 있음). 정말로 질문하고 싶다면 답변을 읽고 테스트를 통해 모든 것을 확보하십시오.PS1
if test "$PS1"; then
if [ -z "$SSH_AUTH_SOCK" ]; then
#start ssh-agent
eval "$(ssh-agent -s)"
fi
# Ask for ssh-add
read -p "Do you want to add your SSH public key? (y/n) " response
# and so on...
fi
편집자 참고 사항:
내 것이 아니고 다른 사람이 추가한 기술 텍스트를 제거했습니다. 스타일, 문법, 오타 등의 수정을 환영합니다. 누군가 추가됨그의 그녀아이디어내 거답변은 감사하지 않습니다. 감사해요.