하루에 회사 서버가 내 SSH 암호를 요청하기 시작했습니다.
첫 번째로 확인한 것은 내 키가 서버의 .ssh/authorized_keys
안에 있는지 확인하는 것이 었습니다. 내 열쇠는 안에 있었고 아무것도 바뀌지 않았습니다. 또한 /etc/ssh/sshd_config
에서 아무것도 변경되지 않았습니다.
그런 다음 새로 이 절차 를 시도했습니다. 설치된 Ubuntu16 서버. 이 5 단계를 완료 한 후 새 서버에서 다시 SSH 암호를 요청했습니다.
ssh-copy-id
명령이 마침내 키가없는 SSH 로그인을 완료했지만 .ssh/authorized_keys
에는 ssh-dss
로 시작하는 줄과 ssh-rsa
로 시작하는 두 줄의 세 줄이 있습니다.
이제 위 링크의 5 단계 절차가 과거에는 하나의 키만으로 작동했던 것을 기억합니다.
최근에 변경된 사항이 있습니까? 위의 절차가 더 이상 작동하지 않는 이유는 무엇입니까?
편집 : ssh-copy-id
는 3 개의 키를 모두 .ssh/authorized_keys
키에 복사하기 때문에 다음 파일에서 찾을 수 있습니다.
~/.ssh/id_dsa
~/.ssh/sshkey.pub
~/.ssh/id_rsa.pub
그래서 원격의 .ssh/authorized_keys
파일에서 한 줄씩 삭제했습니다.
삭제 된 ~/.ssh/id_dsa
줄-자동 로그인 성공
삭제 된 ~/.ssh/id_rsa.pub
줄-자동 로그인 성공
삭제 된 ~/.ssh/sshkey.pub
행-자동 로그인 성공하지 -비밀번호 요청
p>
~/.ssh/sshkey.pub
의 콘텐츠 만 필요합니다. SSH가 id_rsa.pub
<가 아닌 sshkey.pub
를 비교하는 이유 / div> 온라인 자습서의 예처럼?
댓글
Answer
ssh-copy-id
는 단순한 편의 기능입니다. 키가 이미 머신으로 내보내 졌는지 확인하고 필요한 경우 .ssh
디렉토리를 생성하지만 기본적으로는 .ssh/authorized_keys
에 공개 키를 추가합니다. . ssh-copy-id
는 셸 스크립트 (openssh)이므로 결국 코드 (vi `which ssh-copy-id`
)를 읽을 수 있습니다.
[ "$DRY_RUN" ] || printf "%s\n" "$NEW_IDS" | \ ssh "$@" "exec sh -c "cd ; umask 077 ; mkdir -p .ssh && { [ -z ""`tail -1c .ssh/authorized_keys 2>/dev/null`"" ] || echo >> .ssh/authorized_keys ; } && cat >> .ssh/authorized_keys || exit 1 ; if type restorecon >/dev/null 2>&1 ; then restorecon -F .ssh .ssh/authorized_keys ; fi"" \ || exit 1
인증 중에는 authorized_keys
만 확인됩니다. openssh에서 문서 :
~ / .ssh / authorized_keys 파일은 공개를 나열합니다. 로그인에 허용되는 키. 사용자가 로그인하면 ssh 프로그램은 인증에 사용할 키 쌍을 서버에 알려줍니다. 클라이언트는 개인 키에 대한 액세스 권한이 있음을 증명하고 서버는 해당 공개 키가 계정을 수락 할 권한이 있는지 확인합니다.
이 답변이 되었기를 바랍니다. 질문 제목 “ssh-copy-id 대 수동 복사 id_rsa.pub”. 이 파일은 ~/.ssh/sshkey.pub
없습니다. 설정 문제를 직접 해결하시기 바랍니다. 어쨌든, 예, 공개 키를 수동으로 ssh-copy-id
를 사용하지 않습니다.
ssh -v your-remote-server
의 출력을 질문에 추가하세요.