답변:
Linux를 사용하는 경우 다음을 수행하여 프로세스를 종료 할 수 있습니다.
ps aux | grep ssh
그런 다음 사용
kill <id>
프로세스를 종료합니다.
kill 명령이 실패하면 시도해 볼 수 있습니다
kill -9 <id>
kill -9
방금 시도했습니다 때까지 kill
. 많은 프로세스에는 신호 처리기가있어 리소스 사용을 정리하고 연결을 완전히 닫고 다른 사전 종료 작업을 수행합니다. -9를 사용하여 종료하면 정리하지 않고 프로세스가 즉시 종료됩니다. 없이 -9 죽이는 것입니다 대부분의 시간을 작동합니다.
kill -9
이유없이 산탄 총을 사용하여 모기를 죽이는 것과 같습니다. :)
pgrep ssh | xargs kill
. -9
실제로 아무것도 사용하지 마십시오
ssh
, 명령 이 하나만 있거나 ssh
실행중인 모든 명령 이 종료 된 것으로 가정합니다 . 이것은 일반적으로 좋은 가정은 아닙니다.
ssh
여러 원격 서버의 여러 인스턴스에 항상 연결합니다 . 예를 들어, Emacs Tramp 모드 ssh
는 원격 버퍼를 방문 할 때 장면 뒤에서 연결을 엽니 다 . 어떤 사람들은 비슷한 작업을 수행하는 사용자 공간 파일 시스템을 사용합니다. 전혀 드문 일이 아닙니다. 실제로 단일 사용자, 단일 ssh
인스턴스를 소수 프린지 사용 사례로 가정합니다. 그것이 당신에게 도움이된다면, 당신에게 좋지만 좋은 조언은 아닙니다.
ssh 멀티플렉싱을 사용하는 경우 ssh 프로세스를 종료하는 것은 종종 바람직하지 않으며 (해당 호스트와 열려있는 모든 연결을 종료) "멀티플렉싱 된 세션에서 이스케이프를 사용할 수 없으므로"이스케이프에 쉽게 액세스 할 수 없습니다. 올바른 방법은 취소하려는 전달 명령의 아날로그를 실행하지만을 추가하는 것 -O cancel
입니다. 예를 들어 :
ssh -O cancel -L 10002:192.168.0.30:10002 192.168.1.135
세션을 종료하지 않고이 포트 전달을 비활성화합니다. 192.168.1.135 연결에 ssh 멀티플렉싱을 사용하는 경우에만 다시 작동합니다 .
ssh -O exit 192.168.1.135
.
"탈출 키"(보통 ~) 다음에 C를 사용하여 연결 상태를 확인할 수 있습니다. 연결을 끊지 않고도 터널을 제거 할 수 있습니다.
~C(대문자 "C")를 입력하여 대화식 콘솔에 들어갈 수 있습니다 . 이를 통해 포트 전달을 동적으로 추가 및 제거 할 수 있습니다 (몇 가지 사항 포함).
이 순서는 캐리지 리턴 / 개행 직후 에 와야 합니다. 따라서 의심의 여지없이 Enter~C(순서대로) 입력하십시오.
콘솔에 문자가 표시되지 않으면 올바르게 수행하는 것입니다. :)
이제 ssh>
프롬프트가 나타납니다.
포트를 제거하려면 간단히 -KL 10002
다음을 입력하십시오 Enter( 10002
전달 된 포트는 어디에 있습니까 ).
새로운 전진을 추가하는 반대는 다음과 같이 수행 할 수 있습니다 (시작부터 끝까지).
Enter~C
ssh> -L 10002:192.168.0.30:10002
Enter
~C escape not available to multiplexed sessions
. 이 경우 a3nm의 훌륭한 답변을 참조하십시오.
Warning: remote port forwarding failed for listen port
메시지를 수신 하는 새 ssh 세션을 시작하면 포트가 여전히 전달되고 있음을 종종 알 수 있습니다.