로컬 컴퓨터 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] 삭제
몇 마디 만하겠습니다