클라이언트에서 서버로 비밀번호 없는 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
/home
user2
추가 정보 요청에 대한 응답으로 /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
.)