DISPLAY=:0 설정은 SSH를 통한 알림 전송에 아무런 영향을 미치지 않습니다.

DISPLAY=:0 설정은 SSH를 통한 알림 전송에 아무런 영향을 미치지 않습니다.

내 플랫메이트의 컴퓨터에 SSH 액세스 권한이 있습니다(Ubuntu 14.04). SSH를 통해 그녀에게 메시지를 보내고 싶어서 이 명령을 사용합니다.

export DISPLAY=:0 && notify-send "sample message"

명령은 0으로 종료되지만 메시지는 표시되지 않습니다. 반면에 내가 사용할 때는디스플레이 내보내기=:0예를 들어xterm, xterm은 일반적으로 열립니다. libnotify내가 실행하면 설치됩니다통지-전송로컬에서는 보여줍니다. 또한 다른 컴퓨터에서 SSH를 통해 이 명령을 시도하면 작동합니다.

어떤 아이디어가 있습니까? 왜 이런 일이 발생합니까? 감사합니다

답변1

알림 보내기에는 친구 세션 내에서 알림을 보내려면 세션 자격 증명이 필요합니다. 이는 로그인할 때 세션에 포함된 환경 변수에 저장되어 악성 백그라운드 프로세스가 데스크탑을 엉망으로 만드는 것을 방지합니다.

이러한 세션 자격 증명을 사용 가능하게 만들고 데스크탑의 보안을 완전히 파괴하는 쉬운 방법은 데스크탑 세션이 스크린 세션을 시작한 다음 배경화하도록 하는 것입니다.

그런 다음 ssh로 접속하여 screen 세션에 연결하면 알림 전송이 작동합니다. 이렇게 하면 플랫메이트가 자신의 데스크톱과 파일에 대한 전체 액세스 권한을 갖고 있다는 사실을 완전히 인식하고 있는지 확인하세요.

화면 세션을 구성하려면:

대시에서 '시작 응용 프로그램'을 실행하세요.

add 를 클릭하고 이름을 지정한 후 명령에 다음을 입력하십시오.

screen -dmS desktop_session

그런 다음 SSH를 통해 연결하면

screen -r desktop_session
notify-send "Insecure message"

그런 다음 명령을 실행하고 해당 데스크탑 세션에 그래픽 출력을 표시할 수 있습니다.

이 작업은 대화형으로 수행해야 하며, 비대화형으로 수행하려면 쉘 스크립트에서 파일을 폴링하고 데이터가 있을 때 이를 보내 알리도록 할 수 있습니다. 아니면 그냥 인스턴트 메시지 클라이언트를 사용하세요.

답변2

비슷한 일을 해야 했습니다. 한 컴퓨터에서 업데이트를 실행하고 다른 컴퓨터에서 알림 보내기를 원했습니다. 나는 다음을 사용했다 sshpass:

sshpass -p user_password ssh -X user_name@ip_address DISPLAY=:0 notify-send "The message"

을 대체할 위치 user_password와 특정 사용자/컴퓨터에 대해 user_name.ip_address

관련 정보