포트 포워딩을 위해 ssh 연결을 시작하고 클라이언트 컴퓨터에서 vnc 뷰어를 실행하는 스크립트

rboy

로컬 컴퓨터 ip (ssh 서버의 네트워크)를 인수로 가져와 클라이언트 컴퓨터의 포트 5900을 서버 네트워크의 해당 ip : 5900으로 전달하는 스크립트를 작성하고 싶습니다.

연결이 설정된 직후 vnc 뷰어를 실행하고 전달 된 포트를 사용하여 해당 원격 호스트에 연결하고 싶습니다.

내가 생각 해낸 스크립트는 다음과 같습니다.

#/bin/bash
ssh -L 5900:${1}:5900 user@server-ip
vncviewer 127.0.0.1:5900

그리고 다음과 같이 사용해야합니다
. 서버의 네트워크에 ip 10.0.0.10을 사용하는 컴퓨터가 있다고 가정하고 다음 명령을 실행합니다.

vnc-ssh-script 10.0.0.10

내 집 (클라이언트) 컴퓨터에서 vnc 뷰어를 열고 로컬 네트워크 컴퓨터 10.0.0.10 (vnc 서버를 실행하는)을 제어 할 수 있습니다.

유일한 문제는 스크립트의 첫 번째 줄 (ssh -L 5900 : $ {1} : 5900 user @ server-ip)이 실행 된 후 연결이 설정되고 다음 명령 (vncviewer 127.0.0.1:5900)이 실행된다는 것입니다. t ssh 세션이 닫힐 때까지 실행됩니다 ...

내 질문은 내가 원하는 작업을 어떻게 설정할 수 있습니까?

이미 ssh 명령 뒤에 '&'를 추가하려고했지만 스크립트를 실행하면
"stdin이 터미널이 아니기 때문에 Psedo-terminal이 할당되지 않습니다 . "라는 메시지가 표시 됩니다.
그리고 ssh가 자동으로 닫힌 것처럼 보입니다 (작동하더라도 vncviewer 명령을 실행하기 전에 성공했다는 표시가 나타납니다).

그것은

SSH 연결을 백그라운드에 고정해야합니다. 명령 끝에있는 앰퍼샌드가이를 수행하고 원격 끝에서 실행되는 셸을 중지하기 위해 N 플래그도 전달합니다 (몇 가지 리소스를 절약하고 SSH가 콘솔 연결에 대해 엉망이되는 것을 중지합니다).

#/bin/bash
ssh -NL 5900:${1}:5900 user@${1} &
sleep 1
vncviewer 127.0.0.1:5900

비슷한 일을했지만 필요에 따라 원격 컴퓨터에서 x11vnc를 실행했습니다. 이것은 x11vnc가 실행되는 동안에 만 작동한다는 추가 부작용이있었습니다 ... 그리고 첫 번째 연결 해제 후에 종료됩니다 (바람직합니다!).

#/bin/bash
ssh -L 5900:${1}:5900 user@${1} "x11vnc" &
vncviewer 127.0.0.1:5900

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관