데스크탑의 원격 서버에서 ssh를 통해 명령으로 스크린 세션을 시작하려면 어떻게해야합니까? ssh 명령으로 원격 서버에서 스크린 세션을 시작할

데스크탑의 단일 ssh 명령으로 원격 서버에서 스크린 세션을 시작할 수 있기를 원합니다. 그러나 화면에는 ssh를 통해 명령을 실행할 때 사용할 수없는 터미널이 필요한 것 같습니다.

그래서 명백한

ssh root@my.machine screen "tail -f /var/log/messages"

(예를 들어) 작동하지 않으며

Must be connected to a terminal.

ssh가 화면에서 명령을 실행하여 나중에 로그인하여 수동으로 시작한 화면 세션에 연결할 수 있도록하고 싶습니다.



답변

ssh에 -t 옵션을 사용해보십시오

ssh -t root@my.machine screen "tail -f /var/log/messages"

남자 ssh에서

-t 의사 -tty 할당을 강제합니다. arbi-를 실행하는 데 사용할 수 있습니다
        원격 컴퓨터의 화면 기반 프로그램을 트래 리 할 수 ​​있습니다.
        메뉴 서비스를 구현할 때 매우 유용합니다. 다중 -t
        ssh에 로컬 tty가없는 경우에도 옵션은 tty 할당을 강제합니다.

답변

당신이 사용할 수있는:

ssh root@host screen -m -d "tail -f /var/log/messages"

명령이 실행되면서 분리 된 화면이 시작됩니다.

   -m   causes screen  to  ignore  the  $STY  environment  variable.  With
        "screen  -m"  creation  of  a  new session is enforced, regardless
        whether screen is called from within  another  screen  session  or
        not.  This  flag has a special meaning in connection with the `-d'
        option:

   -d -m   Start screen in "detached" mode. This creates a new session but
           doesn't  attach  to  it.  This  is  useful  for  system startup
           scripts.

답변

늦은 대답이지만 이것이 내가하는 일입니다.이 작업을 수행하는 별명을 t로 지정하십시오.

ssh $MYSERVER -a -x -t screen -xRR -A -e^Zz -U -O

이 이야기 ssh에이전트와 X11 포워딩을 사용하지 않도록 설정하고, 지시 screen, 실행중인 세션에 연결 필요한 경우 새로운 시작, 사용하는 ^Z브레이크 아웃 명령으로, UTF-8을 사용하고 터미널에 대해 현명하게.

이 모든 것은 터미널을 열고 입력 할 수 t있으며 $ MYSERVER에서 스크린 세션을 엽니 다. 그런 다음 다른 터미널을 열고 동일한 작업을 수행하면 동일한 세션에 다른 창이 나타납니다.

동일한 화면 세션에 여러 개의 터미널 창을두면 동시에 두 개의 화면 탭을 볼 수 있습니다.


답변

내 서버의 ~ / .bashrc 파일에 다음을 넣으면 서버에 처음 로그온 할 때 화면 세션이 시작되거나 이미 실행 중이면 해당 세션에 다시 연결됩니다.

나는 이것이 매우 편리하다고 생각한다.

if [ -n "$SSH_CONNECTION" ] && [ -z "$SCREEN_EXIST" ]; then
    export SCREEN_EXIST=1
    screen -DRi
fi