Ubuntu GNU/Linux 12.04에는 다음 명령을 사용하여 감옥 으로 설정된 johndoe
그룹에 속한 사용자 가 있습니다.sftponly
sftp
chroot
Subsystem sftp internal-sftp
Match Group sftponly
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
끝에 /etc/ssh/ssh_config
... ( 에서 설명된 것처럼) 사용자 디렉터리 home
의 모든 구성 요소 root
는 다른 사용자나 그룹이 쓸 수 없는 소유 디렉터리 입니다 . 그의 감옥에는 쓰기 가능한 디렉토리가 있습니다 :man sshd_config
ChrootDirectory
chroot
files
sudo groupadd sftponly
sudo mkdir -p /home/sftponly/johndoe/files
sudo useradd -d /home/sftponly/johndoe -g sftponly -s /usr/sbin/nologin johndoe
sudo chmod go-w /home/sftponly/{,johndoe}
sudo chown johndoe:sftponly /home/sftponly/johndoe/files
sudo chmod ug+rwX /home/sftponly/johndoe/files
(쉘을 둘 다로 설정하면 /bin/false
아무 효과가 없습니다. 쉘이 연결되면 "MOTD"가 표시된 다음 연결이 끊어집니다. 이는 예상된 동작입니다.)ssh
sftp
nologin
ssh
그러나 sftp
메시지는 실패합니다 Received message too long 1416128883
. 이 실패는 sftp
"클린 로그인"에 예상되는 "MOTD"(오늘의 메시지)로 인해 발생한다는 것을 알고 있습니다 . 다음 명령을 사용하여 서버의 모든 "MOTD" 부분을 비활성화하려고 했습니다(이 결과):
PrintLastLog no
PrintMotd no
끝에 및 를 추가/etc/ssh/ssh_config
하고ssh
restart 를 사용하세요restart ssh
. (효과 없음. 테스트에는ssh
"MOTD" 및 "마지막 로그인:"이 표시됩니다. )session optional pam_motd.so
댓글을 달으세요/etc/pam.d/sshd
. (MOTD 방지. 그러나 "LastLog"에는 해당 항목이 없으므로ssh
"Last Login:"으로 테스트하면 여전히 표시됩니다.sftp
여전히 실패했습니다.)주석 처리
session optional pam_lastlog.so
하고session optional pam_motd.so
주석 처리하십시오/etc/pam.d/login
. (효과 없음. 테스트 결과ssh
MOTD 및 "마지막 로그인:"이 표시되었습니다. ).hushlogin
.을 사용하여 클라이언트에 파일을 만듭니다touch ~/.hushlogin
. (효과 없음.)
아이디어가 부족해요. 이 "마지막 로그인:" 메시지는 어디에서 왔으며 어떻게 비활성화할 수 있습니까? (이상적으로는 로그인에만 사용 sftp
하고 ssh
로그인 에는 사용하지 않지만 sftp
목적 에 따라 ssh
메시지가 동시에 표시되거나 또는 아니다)?
답변1
위와 같은 불합리한 행동이 발생한 이유는 내 오타 때문이었습니다. 편집해야 할 것은 /etc/ssh/sshd_config
(클라이언트용)이 아니라 (데몬용)입니다. 다른 사람에게 도움이 될 수 있도록 여기에 질문을 남깁니다.ssh
/etc/ssh/ssh_config
ssh
답변2
내 시스템에서는 Pam에서 가져온 것입니다.
/etc/pam.d/postlogin
정확하게.
기존 줄을 주석 처리하고 다음을 추가하여 메시지를 제거했습니다.
session optional pam_lastlog.so silent
답변3
내가 사용하는 스크립트에서 /etc/motd를 필터링하기 위해(이 예제는 git 프로그램에 대한 것임)
git pull 2>&1 | grep -vF -f ~/bin/remote.motd | egrep -v "^$|^ $"
~/bin/remote.motd 파일은 원격 시스템에서 제공한 motd의 복사본 붙여넣기입니다.
답변4
/var/log/lastlog를 삭제했는데 "마지막 로그인" 메시지가 영원히 사라졌습니다. 테스트한 모든 배포판(Ubuntu 및 SUSE)에서 작동합니다.
내가 어떻게 이 아이디어를 생각해냈나요?
어느 로그인 문자열 /bin/login 마지막 |