사용자 당 SSH MOTD


17

SSH 사용자를위한 배너 (환영 메시지)를 각 사용자에 대한 특정 환영 메시지와 함께 표시하고 싶습니다.

답변:


38

사용중인 SSH 서버를 지정하지 않았습니다. OpenSSH를 가정합니다.

SSH 배너와 MOTD는 서로 다른 것입니다.

SSH 터미널에서는 거의 구별 할 수 없지만 SFTP 클라이언트와 같이 다른 동작을합니다.


MOTD는 대화식 터미널에 인쇄 된 텍스트 일뿐입니다. 따라서 예를 들어 SFTP 클라이언트로 전송되지 않습니다 (나중에 자세히 설명하지 않음).

MOTD는 /etc/motdOpenSSH에서 하드 코딩됩니다 . PrintMotd지시문을 사용하여 전역으로 만 켜거나 끌 수 있습니다 .

그러나 일부 Linux 시스템에서는 PrintMotd항상 꺼져 있으며 MOTD는 대신 pam_motd모듈을 사용하여 PAM 스택에 의해 인쇄됩니다 . 이 경우 또는를 통해 끄 /etc/pam.d/sshd거나 사용자 정의 motd=경로를 모듈 매개 변수로 지정할 수 있습니다 .


SSH 배너는 특정 SSH 패킷 (SSH2_MSG_USERAUTH_BANNER)으로 전송되는 특수 SSH 2.0 기능입니다.

따라서 SFTP 클라이언트와 같은 비 터미널 클라이언트도이를 처리하고 사용자에게 표시 할 수 있습니다. 예를 들어 WinSCP SFTP / SCP 클라이언트배너가 어떻게 표시 되는지 확인하십시오 .

SSH 배너는 및 지시문을sshd_config 사용하여 사용자 (또는 그룹 또는 기타 기준)별로 구성 할 수 있습니다 .BannerMatch

Match User username1
    Banner /etc/banner_user1

Match User username2
    Banner /etc/banner_user2

특정 사용자 또는 ips에 대해 ssh 배너 사용 안함을 참조하십시오 .


물론 메시지 / 배너에 대한 사용자 지정 구현을 사용할 수도 있습니다. 글로벌 프로파일 스크립트에서 사용자 정의 논리를 사용하여 선택한 메시지를 인쇄하십시오.

MOTD와 마찬가지로 비 대화식 세션 (SFTP 등)에서는 작동하지 않습니다.

더 중요한 것은 작동하지 않을뿐만 아니라 대화식 터미널에 대해서만 메시지를 인쇄 해야 합니다. OpenSSH를가 자동으로 무엇을 /etc/motd. 대화식 터미널에 대해서만 실행되는 전역 프로파일 스크립트를 사용하거나 TERM환경 변수의 값에 따라 조건부로 메시지를 인쇄하십시오 .

비 대화식 세션을 위해 메시지를 인쇄하면 SFTP 또는 SCP와 같은 엄격한 프로토콜을 사용하는 클라이언트가 중단됩니다. 클라이언트는 텍스트 메시지를 프로토콜 메시지로 해석하려고 시도하므로 실패합니다.

WinSCP SFTP / SCP 클라이언트 문서에서 이러한 문제에 대한 설명을 참조하십시오 .

(저는 WinSCP의 저자입니다)


답장을 보내 주셔서 감사합니다. 내가 틀렸다면 해결책을 찾으십시오. 이 줄을 / etc / profile 파일에 추가합니다. PGROUP = groups|awk '{print $1}'cat /etc/motd.${PGROUP}이 줄을 추가하기 전에 / etc 디렉토리 아래에 각 사용자에 대한 배너 파일을 만듭니다. motd.root 및 motd.alex와 같은 파일 과이 작업은 저에게 효과적입니다.
user260277

그렇게해야합니다. 내 답변을 제외하고는 대화 형 터미널에서만 작동합니다. SFTP 및 이와 유사한 기능에는 작동하지 않습니다.
Martin Prikryl

대화식 터미널 수단?
user260277

인간과 상호 작용하는 터미널입니다 (SFTP 세션, SCP 세션 또는 일부 비 배치 작업의 원격 실행에 사용되는 비 대화식 터미널과 반대)
Martin Prikryl

배너의 사용자 정의 구현에 대한 까다로운 세부 사항을 포함 시켰습니다.
Martin Prikryl

9

당신 "$HOME/.ssh/rc"이하고 싶은 일을 보관 하기 위해 파일 을 사용할 수도 있습니다

echo "echo Hello World" > /home/pluto/.ssh/rc
ssh pluto@localhost
Last login: Thu Dec 18 08:46:16 2014 from localhost.localdomain
Hello World

따라서 모든 사용자에 대해 하나의 ssh rc를 가질 수 있습니다.


안녕, 나는 이것을 시도하지만 오류 메시지가 나타납니다 .ssh / rc : 1 : .ssh / rc : welcom : not found.
user260277

내 잘못, 난, 당신은 정상 bash는 스크립트처럼 오타 에코 필요가 않았다되었다
c4f4t0r

"Wolrd"는 오타이기도합니다 :)
simon

"stty : 표준 입력 : 장치에 부적절한 ioctl"이 표시됩니다.
추후 공지가있을 때까지 일시 중지되었습니다.

.ssh / rc에 무엇이 있습니까?
c4f4t0r
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.