루트가 SSH_TTY에 액세스하는 방법

루트가 SSH_TTY에 액세스하는 방법

생각하다이는 현재 가상 터미널 을 SSH_TTY보유하는 장치 노드에서 설정한 환경 변수 입니다 ssh./dev/pts/0/dev/pts/1

SSH 서버에 로그인하면 각 세션에 할당된 장치 노드를 입력하고 볼 수 있다는 것을 알고 있습니다 echo $SSH_TTY. 나는 볼 수 있다모두wwho터미널에서 장치 노드를 입력하거나 사용합니다(적어도 내 사용자 이름 아래). $SSH_TTY(또는 )의 스크립트 값을 사용하여 (예를 들어) 각 세션에 대해 열 디렉터리를 결정할 수 있습니다. IOW, 로그인이 읽기로 진행될 때 값은 이미 할당되었습니다.~/.profile~/.bash-profileSSH_TTY~/.profile

또한 MOTD를 통해 사용자들에게 가치를 전달하고 싶지만 SSH_TTY현재는 그렇게 할 수 없습니다. 나생각하다이는 모든 스크립트가 로그인 시 실행되고 root아무것도 없기 때문입니다./etc/update-motd.drootSSH_TTY해결책.

내가 찾은 유일한 것은 이것입니다.

#!/usr/bin/sh
su pi -c echo "Greetings, I see you rode in on $SSH_TTY"

그러나 이는 조용히 실패했다.

어떻게 해야 하나요?

답변1

파일에서세션.c, SSH 서버 내부에 do_setup_env설정된 함수가 SSH_TTY세션이 설정된 후에 호출되는 것을 볼 수 있으므로 Ubuntu는 방법이 없습니다.업데이트-motd(5)프레임워크에 액세스하여 추가할 수 있습니다./etc/motd.

질문 의도의 주요 부분은 아마도 " SSH_TTY사용자에게 전달된 값"일 것이므로 사용자 출력에서 ​​해당 환경 변수의 값을 출력하면 됩니다.$HOME/.profile요청은 서버에서 이행되어야 합니다. 어떤 이유로 값을 저장해야 하는 경우 출력을 파일에 기록할 수 있습니다. 예를 들면 다음과 같습니다.

# Contents of $HOME/.profile ...

printf "SSH_TTY=%s\n" "$SSH_TTY" | tee "$HOME"/.ssh_tty

¹ update-motd(5) 매뉴얼 페이지 자체에 따르면,

Ubuntu는 update-motd 프레임워크를 도입합니다.

이는 공식적으로 지원되지 않는 Arch 외에 이 패키지가 있는 유일한 다른 배포판인 Trisquel 및 Amazon Linux의 패키지 리포지토리를 확인하여 확인할 수 있습니다.사용자저장소(출처:repology.org).

관련 정보