소스가 MAC인 경우 원격 루트 사용자에 대한 일반 SSH 설정 작업이 실패합니다.

소스가 MAC인 경우 원격 루트 사용자에 대한 일반 SSH 설정 작업이 실패합니다.

이것은 Centos7, SSH 원격 로그인 설정 및 Mac에 루트 사용자가 없다는 사실에 관한 것입니다.

나는 이 질문을 여러 번 물었고 ssh가 어떻게 작동하는지에 대한 설명을 얻었습니다. 그 중 일부는 재미있습니다.

목표는 centos7 시스템에서 루트 사용자로 비밀번호 없는 SSH 로그인을 수행하는 것입니다.

루트가 아닌 사용자에 대해 다음과 같이 일반 설정을 수행할 수 있습니다.

  1. 내 ~/.ssh 폴더를 삭제합니다.
  2. ssh-keygen(~/.ssh/id_rsa 개인/공개 키를 생성하려면 기본값을 수락합니다).
  3. ssh-copy-id myuser@server(공개 키를 원격 시스템의authorized_keys 파일에 넣습니다).
  4. 루트 로그인(yes), PublicKeyAuthentication(yes) 및 PasswordAuthorization(no)을 허용하도록 sshd_config를 수정합니다.
  5. sshd를 다시 시작하고 sshd의 상태를 확인합니다.
  6. 비밀번호 없이 ssh myuser@server(키 사용) 성공

그런 다음 루트 사용자에게도 동일한 작업을 수행하려고 합니다.

  1. ssh-keygen -f root-key (새 개인 및 공개 키를 ~/.ssh/root-key 및 root-key.pub에 배치합니다. -- myuser ssh 폴더에 있습니다.)
  2. ssh-copy-id -i ~/.ssh/root-key root@server (이 작업은 성공하고 원격 서버의 루트 ~/.ssh/authorized_keys 파일에서 공개 키를 찾을 수 있습니다.)
  3. PasswordAuthentication을 no로, PublicKeyAuthentication을 yes로 변경했기 때문에 비밀번호 없이 작동합니다. ssh -i ~/.ssh/root-key root@server
  4. 그러나 이는 작동하지만 작동하지 않습니다. ssh root@server "권한 오류(공개 키)"가 생성됩니다.

mulberry에 대해 몇 주 동안 연구한 결과 sshd_config를 변경해도 아무런 효과가 없다는 것을 알았습니다(모든 순열을 시도했습니다).

root@server의 ~/.ssh 폴더에 있는authorized_keys 파일에 키를 복사하는 것만으로는 일반적인 비밀번호 없는 인증을 활성화하는 데 충분하지 않은 것 같습니다.

SSH 프로세스는 다음과 같습니다.프로세스 설명 및 다이어그램"서버에 사용자를 인증하는 단계" 중에 문제가 발생했음을 나타냅니다. 이 시점에서 클라이언트는 서버 루트의 Authorized_keys 파일 내용과 비교하기 위해 "루트" 공개 키를 서버에 보내야 합니다.

실제로 유효한 CLI 구문에는 "-i ~/.ssh/root-key" 문구가 포함되어 있는 것으로 보입니다. 이 구문은 특정 공개 키를 서버 루트의 Authorized_keys 파일에 복사하기 위해 ssh-copy-id 단계를 명시적으로 전달합니다.

그러나 "일반" ssh는 "ssh root@server"가 키 전송 및 비교 프로세스를 시작하기에 충분하다는 것을 의미합니다.

이제... 이전 질문에서 많은 응답자는 원격 사용자 이름이 로컬 사용자 이름과 다르더라도 SSH는 "상관하지 않으며" 사용자 이름, 계정 등에 관계없이 모든 것이 "정상적으로" 작동한다는 점을 강조하고 싶었습니다.

그러나 이 질문에서 지적하려고 시도한 것처럼 루트의 공개 키는 "root"라는 이름이 아닌 폴더에 있으므로 키의 사용자 이름 필드가 일치하지 않습니다. "dumb"와 같은 것이 방해가 됩니다.

내 추측으로는 적어도 MAC의 SSH 코드(Centos7 VM에서도 동일한 문제가 있었지만)는 기본적으로 선호하는 id_rsa.pub 키를 원격 서버에 전송된 키로 사용하여 원격 서버에서 사용하는 것과 일치한다는 것입니다. 서버의authorized_keys 파일에 존재하는 ssh-copy-id'd root-key.pub.

따라서... SSH가 "me"라는 로컬 사용자가 "you"라는 원격 사용자에 연결할 수 있도록 허용한다는 사실은 실제로 문제나 가능한 해결 방법과 관련이 없습니다.

이제 문제는 OpenStack의 UnderCloud로 배포하기 위해 TripleO 컨트롤러를 설정하려고 한다는 것입니다. Ansible 스크립트는 Ansible 역할로 실행되는 동안 원격 "루트" 및 "스택" 사용자가 갖는 권한과 관련하여 매우 구체적입니다. 그들은 "-i ~/.ssh/root-key"와 같은 스크립트 명령줄에서 추가 매개변수를 처리하고 싶어하지 않습니다.

그래서 그것은 내 발전을 정말로 방해했습니다. 따라서 경험이 풍부한 도움을 환영합니다!

관련 정보