원격 사용자의 홈 폴더가 /home 대신 /home2에 있는 경우 비밀번호 없는 SSH(ssh-copy-id)가 작동하지 않습니다.

원격 사용자의 홈 폴더가 /home 대신 /home2에 있는 경우 비밀번호 없는 SSH(ssh-copy-id)가 작동하지 않습니다.

클라이언트에서 서버로 비밀번호 없는 SSH를 설정하고 있습니다.

user1및 라는 두 명의 사용자가 있습니다 user2. 클라이언트와 서버 모두에 user1홈 폴더가 있는데 /home/user1, 이는 명령을 사용하여 계정을 만들 때 기본 폴더입니다 useradd user1.

클라이언트와 서버 모두 user2/home2/user2에 홈 폴더가 있습니다. 이는 명령을 사용하여 사용자를 생성함으로써 수행됩니다 useradd -m -d /home2/user2 user2. 그 이유는 /home2더 큰 16TB 디스크에 설치 하고 사용자 2의 홈 폴더에 더 많은 저장 공간을 제공하고 싶었기 때문입니다.

모든 제안을 바탕으로 설정했습니다. /home2, /home2/user2, 및 /home2/user2/.ssh올바른 700 권한을 설정 했습니다 .

결국 나는 비밀번호 없는 SSH가 user1클라이언트에서 서버로 작동하지만 user2클라이언트에서 서버로 요청 ssh-keygen하고 ssh-copy-id사용한 후에도 여전히 비밀번호를 요구한다는 것을 발견했습니다.user2

이것은 나를 혼란스럽게 한다. 이는 홈 폴더가 다른 위치(예 : )에 user2위치해야 하고 위치할 수 없다는 의미입니까 ? 안타깝게도 내 폴더는 100GB에 불과 하므로 더 많은 공간이 필요합니다 ./home/user2/home2/user2/homeuser2

추가 정보 요청에 대한 응답으로 /var/log/messages클라이언트에서 자동 로그인이 실행된 후 서버 ssh 로그()를 살펴보았습니다. 로그에는 다음과 같이 나와 있습니다.

Jan 20 09:42:55 SERVER dbus-daemon[2502]: [system] Activating service name='org.fedoraproject.SetroubleshootPrivileged' requested by ':1.39048' (uid=977 pid=2794759 comm="/usr/libexec/platform-python -Es /usr/sbin/setroub" label="system_u:system_r:setroubleshootd_t:s0") (using servicehelper)
Jan 20 09:42:55 SERVER dbus-daemon[2502]: [system] Successfully activated service 'org.fedoraproject.SetroubleshootPrivileged'
Jan 20 09:42:58 SERVER setroubleshoot[2794759]: SELinux is preventing /usr/sbin/sshd from read access on the file authorized_keys. For complete SELinux messages run: sealert -l 6b9fec5b-5b03-460b-8199-393d5863256b
Jan 20 09:42:58 SERVER setroubleshoot[2794759]: SELinux is preventing /usr/sbin/sshd from read access on the file authorized_keys.#012#012*****  Plugin catchall_labels (83.8 confidence) suggests   *******************#012#012If you want to allow sshd to have read access on the authorized_keys file#012Then you need to change the label on authorized_keys#012Do#012# semanage fcontext -a -t FILE_TYPE 'authorized_keys'#012where ...`

이 문제를 해결하도록 도와주세요.

답변1

서버는 어떤 Linux 배포판을 사용하며 SELinux를 사용합니까( 확인 sestatus)?

그렇다면 다음 작업도 수행해야 합니다.

semanage fcontext -a -t home_root_t '/home2'
semanage fcontext -a -t user_home_dir_t '/home2/[^/]+'
semanage fcontext -a -t user_home_t '/home2/[^/]+/.+'
restorecon -rv /home2

/home2실제 사용자의 홈 디렉토리와 그 아래의 사용자 파일에 적절한 SELinux 라벨을 할당합니다 /home2/<username>.

(예제 태그는 RHEL9용입니다. 이전 버전의 SELinux에는 태그 구조가 약간 다를 수 있습니다. 확실하지 않은 경우 ls -ldZ /home; ls -lZ /home기존 태그를 확인 /home하고 일치하도록 태그를 조정하세요 /home2.)

관련 정보