날마다 우리 회사 서버에서 SSH 비밀번호를 묻기 시작했습니다.
가장 먼저 확인한 것은 내 키가 .ssh/authorized_keys
서버 내에 있는지 확인하는 것이었습니다. 내 열쇠는 안에 있고 아무것도 바뀌지 않았습니다. 아무것도 바뀌지 않았습니다 /etc/ssh/sshd_config
.
그럼 나는 ~하려고 노력한다이 앱새로 설치된 Ubuntu16 서버에서. 이 5단계를 완료한 후 새 서버에서 SSH 비밀번호를 다시 요청했습니다.
이 ssh-copy-id
명령은 마침내 키 없는 SSH 로그인을 완료했지만 3개의 줄이 있다는 것을 알았습니다 .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
행 - 자동 로그인아니요성공 - 비밀번호 필요
의 내용만 ~/.ssh/sshkey.pub
필요합니다. SSH가 비교적이고 온라인 튜토리얼의 예 sshkey.pub
와 다른 이유는 무엇입니까 ?id_rsa.pub
답변1
ssh-copy-id
이건 그냥 편의기능인거 같네요 . 키가 컴퓨터로 내보내졌는지 확인하고 .ssh
필요한 경우 디렉토리를 생성하지만 기본적으로 공개 키를 .ssh/authorized_keys
.openssh ssh-copy-id
의 쉘 스크립트에 추가하므로 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
문서가 없으므로 직접 설정을 알아내시기 바랍니다. 어쨌든 그렇습니다. 공개 키를 authorized_keys
사용하지 않으 려면 수동으로 복사할 수 있습니다 ssh-copy-id
.
UPD: 2020(OpenSSH 8.2)RSA SHA-1 키는 더 이상 사용되지 않습니다.. 대안을 사용해야 합니다(링크 참조).