여러 창에 대한 영구 PuTTY 세션


2

저는 때때로 끊어지는 PuTTY 연결을 통해 다양한 Linux 환경에서 일하고 있습니다. PuTTY 창을 유지할 수있는 솔루션을 찾고 있습니다 (예 : 파일을 편집하는 경우 다시 연결 한 후 동일한 파일에서 동일한 파일을 열어 동일한 편집기에 있어야 함), 다음 요구 사항이 있습니다.

  • 세션을 시작할 때 또는 다시 연결 한 후 수동 설정이 필요하지 않습니다 (입력 screen하거나 그와 비슷한 것을 원하지 않습니다 )
  • 같은 사용자와 동일한 컴퓨터에 여러 개의 창이 열려 있으며 동시에 연결이 끊어지는 경향이 있습니다.
  • 창의 수 / 역할은 일정하지 않습니다 ( mc창, mysql창 및 "스크립트 러너"창이없는 것과는 다릅니다. 때로는 검색 또는 SVN 명령에 하나의 창을 사용하고 다른 경우에는 동시에 여러 개가 필요합니다)
  • 때로는 작업에 대한 창의 속성을 변경해야합니다 (그랩 / 편집을위한 큰 창, 동시에 두 창을 볼 수 있기 때문에 작은 창, MySQL의 라이브 데이터베이스를 수정하기 때문에 빨간색 배경), 다시 연결 한 후 같은 창에서 같은 콘솔을 다시 가져와야합니다.

이것을 달성 할 수있는 방법이 있습니까? 내가 사용해야 screen하거나 동등한 것을 사용해야한다고 가정 하지만 다시 연결하는 창을 어떻게 알 수 있습니까? PuTTY에서 고유 한 창 식별자를 쉘에 전달할 수있는 방법이 있습니까?


Screen 또는 Tmux는 실제로 작동하지만 이것이 증상을 해결하는 것이라고 생각합니다. 진짜 문제는 당신의 네트워크 연결이 어떻게 든 죽어 그것으로 귀찮게한다는 것입니다. 실제 목표는 ssh 세션을 다시 시작하는 데 도움이되는 방법을 찾지 않고 수정해야합니다 (이는 동일한 연결 끊김으로 인해 다른 프로그램에도 영향을 미칩니다).
Hennes

백그라운드에서 실행되고 현재 작업 (시작된 명령)을 추적하고 주기적으로 파일을 업데이트하여 로깅하는 사용자 지정 스크립트가 필요합니다. current.com이라고합니다. 이 파일에는 특정 사용자가 시작한 현재 활성화 된 모든 작업이 포함되어 있습니다. 연결을 끊고 다시 연결 한 후 profile.rc는 "current.com"파일에서 찾은 모든 명령을 시작하는 스크립트를 시작합니다. 스크립트는 screen명령 을 사용하여 원하는 경우 분할 화면을 가질 수 있습니다. 활성 명령을 추적하는 스크립트는 tty ID를 기반으로 실행중인 작업을 잠재적으로 구별 할 수 있습니다. tbc
mnmnc

... 작업을 별도의 파일 current.com1 current.com2 등에 배치하십시오. 그런 다음 profile.rc에 의해 시작된 스크립트를 다시 연결하면 첫 번째 비활성 명령 그룹이 다시 연결된 세션에 다시 연결됩니다. 병렬 세션을 연결하면 두 번째 비활성 작업 그룹 등이 다시 시작됩니다 ... 요구 사항에 대한 기존 도구가 없다고 생각하지만 스크립트를 작성하는 것이 복잡해서는 안됩니다.
mnmnc

@Hennes 비활성 세션의 시간 초과는 버그가 아닙니다.이 기능은 제가 추가 할 수있는 보안 관점에서 매우 중요합니다. 이것은 해결해야 할 것이 아닙니다. sshd.conf에서 서버 측의 시간 초과 설정을 조정할 수 있지만 세션을 무기한으로 유지하도록 설정해서는 안됩니다.
mnmnc

동의하지 않습니다. 시간 초과는 보안 기능을 대체하지 않습니다. -서버에 ssh하면 (잠긴 바탕 화면으로 커피 휴식을 취하십시오. Windows에서 간단한 win-L로) 휴식 후 다시 데스크탑을 잠금 해제하면 퍼티 세션이 죽지 않을 것으로 예상됩니다.
Hennes

답변:


2

빠르고 깨끗한 솔루션

~ / .bashrc를 편집하여 screen -r을 실행하십시오. 그런 다음 로그인하면 실행중인 화면 세션에 자동으로 다시 연결됩니다.

이행 솔루션

  • 최대로 열려고하는 각 화면 세션 (Windows 창 / PuTTY 세션)에 대한 사용자를 작성하십시오.
  • 새로 작성된 각 사용자를 사용하여 서버에 연결하고 "screen -S username"을 실행하여 사용자 이름으로 이름 지정된 세션을 시작하십시오.
  • 각 사용자의 ~ / .bashrc에 "screen -r $ (whoami)"추가
  • 데스크탑 또는 PuTTY의 각 사용자에 대한 퍼티 세션을 저장하여 슈퍼 바의 점프 목록 또는 바로 가기를 원하는 위치에 추가하고이를 사용하여 각 세션을 시작하십시오. 이것은 또한 당신을 가능하게 할 것입니다

편집 : 시간 초과 문제를 해결하는 데 중점을 둡니다. 그것은 보안 기능이지만, 입력을 보내는 동안 연결을 끊지 않아야합니다.


서버 측에 단일 화면 세션이 있고 단일 화면 만 다시 연결하는 경우에만 작동합니다. OP는 종종 여러 세션을 사용한다고 말합니다.
mnmnc

이것은 여러 SSH 세션 대신 화면 내에서 병렬 창을 사용하여 해결할 수 있습니다.
Steen Schütt

Yeap-그러나 단일 병렬 세션을 사용하는 경우에만 가능합니다. 한 퍼티 세션과 다른 퍼티 세션에서 텍스트 편집기를 사용하는 경우 분할 작업 영역이있는 화면을 사용합니다. 모든 텍스트에 어떻게 다시 연결 하시겠습니까?
mnmnc

그것은 내가 의도 한 것이 아니었고, 텍스트 편집기를 분할 된 작업 공간에 유지할 수 있다는 것을 의미했습니다. 어느 쪽이든, 이것은 솔루션보다 더 많은 해결 방법입니다. 고정 화면 세션 이름을 사용할 수도 있습니다. 예를 들어, steve라는 사용자를 작성하면 steve는 "screen -S steve"로 화면 세션을 시작합니다. 또한 greg라는 사용자를 작성하고 greg가 "screen -S greg"로 세션을 시작합니다. 각 사용자의 .bashrc를 편집하여 "screen -r steve"를 사용하여 해당 세션에 다시 연결하고 각 사용자에 대해 저장된 PuTTY 세션을 만듭니다.
Steen Schütt

예. 좋은 해결책입니다. 동의합니다. 그러나 필자는 작업하는 화면 조합만큼 많은 사용자를 보유해야하기 때문에이 작업을 수행하기로 결정하지 않았다고 생각합니다. 즉, 프로필의 일부 설정을 전체적으로 변경하려면 해당 설정을 모든 .profilerc 파일로 전파해야합니다. 맞습니까?
mnmnc

1

mosh일시적인 네트워크 장애 후 터미널 세션을 다시 연결하도록 설계된 것을 살펴보십시오 . mosh (다른 보안 고려 사항, 잠재적 인 스크롤 백 손실)에 대한 경고가 있지만 퍼티보다 훨씬 더 매끄럽게 다시 연결 후 다시 연결을 해결합니다.


감사. 에 대해 들었지만 mosh이해할 수 있듯이 기본적으로 SSH를 자체 프로토콜로 대체하여 심각하게 사용하기에 충분하지 않을 수 있습니다.
Tgr

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