SSH를 통해 Linux 서버에 연결 한 사용자가 Active Directory (Centrify)를 사용하여 인증되었는지 확인하려고합니다.
로컬 계정을 사용하는 경우 (
/etc/passwd
에 있음)
), 자신의 Active Directory 계정을 사용하라는 메시지를 표시 한 다음 다시 로그인하라는 메시지가 표시되어야합니다.
첫 번째 시도는
/etc/pam.d/login
에서 PAM 모듈 pam_script를 사용하는 것입니다.
사용자가 로그인 할 때마다 현재 사용자 이름이/etc/passwd에 있는지 확인하는 스크립트를 실행하려면 발견되면 경고를 표시하고
login
를 호출하십시오.
다시 명령하십시오.
/etc/pam.d/login
에 다음 줄을 추가했습니다
session required pam_script.so runas=root
이 줄은
/etc/security/onsessionopen
에 위치한 스크립트 파일을 실행합니다.
다음을 포함합니다 :
#!/bin/sh
username=$1
if [ $(grep -c '^'$username':' /etc/passwd) = 1 ]
then
echo "Warning, please user your AD credentials"
login
fi
그러나 pyzwyz에서 동일한 시나리오가 작동하지 않았습니다.
.
SSH를 사용하면 스크립트가 실행되지만 텍스트 나 로그인 프롬프트가 표시되지 않습니다.
어떤 생각? 감사합니다
/etc/pam.d/sshd
-
답변 # 1
-
답변 # 2
/etc/passwd
에서 관련 계정에 대한 셸 변경 잘 작동합니다/usr/local/etc/mustuseadlogin
지금 편집
#!/bin/sh echo echo "Please log in with AD authentication" >&2 echo sleep 10 exit 0
(이상적으로/etc/passwd
) 및 영향을받는 모든 계정의 마지막 필드를vipw
로 변경하십시오. . 예를 들어/usr/local/etc/mustuseadlogin
-
답변 # 3
표준 '로그인'을위한 멋진 솔루션. 불행히도, 나는 당신이 'sshd'에 대해 동일한 행동을하는 데 많은 운이 있다고 생각하지 않습니다. 이것은 연결을 설정할 때 sshd가 사용하는 기본 연결 절차 때문입니다. PAM 스택 (또는 다른 제안에서와 같이 프로파일 비트)까지는 사용자 이름이 이미 확인되었습니다. SSH 클라이언트가 제출 한대로.
여기에 더 많은 도움이 될만한 자료가 있습니다 : https://serverfault.com/questions/330310/force-ssh-to-prompt-for-user
이 정보를 바탕으로 이상적인 해결책은 'sshd'스택에 대해 스크립트 (또는/etc/profile 추가)를 고수하는 것이 좋습니다. '로그인'을 누르지 말고 10 초 동안 잠을 자게하고 (경고가 표시되도록) 세션을 닫으십시오.
-
답변 # 4
와이즈 비즈 모듈은 종료 상태를 사용하여 호출 스택에 수행 할 작업을 알려줍니다. 코드를 다음과 같이 변경하면 작동합니다.
roaima:x:1001:1001:I am roaima:/home/roaima:/usr/local/etc/mustuseadlogin
pam_script
를 제외했습니다 블록에서. 당신은#!/bin/bash username="$1" if [[ root != "$username" ]] && grep -q '^'"$username"':' /etc/passwd then echo "Warning, please user your AD credentials" exit 1 fi exit 0
를 조정할 수 있습니다 자신의 시나리오에 적용 할 UID<500 등을 테스트하십시오.root
관련 자료
- linux - 활성 연결이 있는지 nmcli 장치 Wi-Fi로 확인하십시오
- dart - 실룩 거리다 - 다른 화면이 표시되면 사용자가 로그인했는지 확인하는 방법은 무엇입니까?
- product - 로그인 한 고객에 대해 52 개의 주문이 접수되고 50 개만 API를 통해 ERP로 전달됩니다
- path finding - A * 검색 알고리즘에서 열린 목록을 반복 할 때 무엇을 확인합니까?
- javascript - 입력 값을 통해 배열 값을 확인하는 방법은 무엇입니까?
- gitlab CI를 통해 Ansible을 확인하는 방법은 무엇입니까?
- javascript - 구문 분석 사용자가 서버 측에서 로그인했는지 확인할 수 있습니까?
- objective c - 인터넷 사용 가능 여부 확인
- perl - Chilkat 라이브러리를 사용하여 SSH 터널을 통해 활성 FTP 연결을 만드는 방법
- javascript - jQuery- 버튼을 통한 루프는 클릭시 활성 클래스 추가
- php - Symfony에서 사용자가 아약스를 사용하여 로그인했는지 확인하는 방법은 무엇입니까?
- linux - 파일 경로를 반복하여 디렉토리가 있는지 확인
- flutter - 사용자가 로그인했는지 확인
- Powershell 스크립트는 사용자가 Active Directory에 있는지 확인하고 CSV로 내보내기
- java - Firebase 인증을 사용하여 로그인 한 사용자가 Firebase 실시간 데이터베이스의 특정 노드에 속하는지 확인할 수 있습니까?
- php - 첫 번째 열 ID로 두 번째 열을 확인
- reactjs - 확인란이 활성화되어 있는지 여부는 React JS에서 확인하십시오
- sshd - ssh 사용자를 다시 매핑하는 pam 모듈
- ssh - pam_unix (sudo - auth) : 대화에 실패했으며 인증자가 [username]의 비밀번호를 식별 할 수 없습니다
- Google 인증 기 사용시 SSH 연결 가능
- pam - pam_systemdso는 무엇을합니까?
- pam - 파이썬은 특정 줄 위에 문자열이 들어있는 줄을 검색하고 그 값을 업데이트합니다
- cron - Crontab 명령을 실행할 수 없습니다 오류 PAM 구성
- ssh - PAM 섹션에 사용자를 추가 한 후 "OpenBSD Secure Shell 서버를 시작하지 못했습니다"오류
- Ubuntu 1804 LTS에서 LDAP 인증 작업을 수행 할 수 없습니다
- r - k-medoid (PAM) 결과를 허용하지 않는 fviz_cluster ()
id
사용 광고 또는 지역/etc/passwd
에서 연결되어 있는지 비교적 쉽게 알 수 있습니다. . 다음 단계는/etc/profile
에서 기능을 수행하는 것입니다 경고 메시지가 표시됩니다.