루프에서 SSH 터널을 실행합니다. 나쁜 생각? 포트가 이미 사용 중입니까?

루프에서 SSH 터널을 실행합니다. 나쁜 생각? 포트가 이미 사용 중입니까?

직장(CentOS 실행)에 있는 서버에서 집(Ubuntu)으로 SSH 터널을 설정하여 직장 컴퓨터에서 다음과 같은 명령을 사용하여 집에서 직장 터널에 로그인할 수 있습니다.

ssh -R 49666:localhost:22 homename@homeIP -N

키 등의 작업을 수행했습니다. 직장에서 집으로 SSH를 통해 연결한 다음 원격으로 집 컴퓨터에 있는 동안 직장으로 돌아와 테스트를 위해 SSH로 연결했습니다. 괜찮은 것 같았고 효과가 있었습니다. scp 파일을 양방향으로 사용할 수 있습니다.

나중에 집에 가보니 어떤 이유에서인지 터널이 닫혀 있었습니다. 나는 이유를 알 수 없었다. 나중에 동료에게 이에 대해 물었고 그도 같은 문제가 있으며 업무용 컴퓨터에서 지속적으로 실행되는 다음과 같은 스크립트를 사용한다고 말했습니다.

while true
 ssh -R 49666:localhost:22 homename@homeIP -N
 sleep 15

그는 기본적으로 깨진 터널이 깨졌을 때 자동으로 다시 시작하기 위해 이것을 영구적으로 실행합니다.

나는 이것을 시도하고 테스트를 수행했습니다 (집에 있는 컴퓨터를 사용하여 원격으로 직장에 있는 동안 직장에서 집으로 sshed). 다시 괜찮아 보였습니다. 그런데 또 집에 가보니 터널이 작동하지 않더군요. 나는 auth.log를 살펴보았고 동일한 타임스탬프에서 다음 세 줄을 발견했는데, 이는 내가 집에 반쯤 갔을 때일 것입니다.

Accepted publickey from work IP (I erased the rest for my privacy)
error: bind: Address already in use
error: channel_setup_fwd_listener_tcpip: cannot listen to port: 49666

다른 것이 사용하고 있는 동안 내 터널을 포트 49666에 바인딩하려고 시도한 것 같습니다. 좋아요, 그게 왜 실패하는지 알겠습니다. 그래서 나는 그것을 죽일 수 있도록 포트 49666을 사용하는 것이 무엇인지 찾으려고 노력했습니다. 하지만 아무것도 아닌 것 같습니다. 나는 netstat, lsof 등을 시도했습니다. 아무것도 포트 49666을 사용하지 않습니다. 터널을 제외하고 포트 49666을 사용하는 것은 아무것도 없다고 생각합니다. 터널이 이미 존재하고 있을 때 터널을 만든 것은 아닐까? 아니면 터널이 이미 존재한다면 터널링 루프 스크립트는 아무 작업도 수행하지 않습니까?

포트 49666을 사용하는 것이 없기 때문에 작업 컴퓨터의 터널 스크립트가 루프를 다시 통과하면 터널이 자동으로 다시 설정될 것으로 예상했지만 실제로는 그렇지 않은 것 같습니다.

직장에서 서버로 물리적으로 돌아가지 않고 이 문제를 해결할 수 있는 방법이 있나요? 아니면 적어도 한 번의 조정만으로 문제를 해결하여 정기적으로 돌아갈 필요가 없도록 하시겠습니까?

서버는 절대로 종료되지 않으므로 이론적으로는 루핑 스크립트가 계속 진행되어야 합니다. 하지만 터널을 만드는 데 실패하면 자동으로 종료됩니까?

관련 정보