우리 대학에서는 집에서는 접근할 수 없는 일부 학술지에 접근할 수 있습니다. 제가 없는 동안 문서를 다운로드할 수 있도록 현재 프로세스는 다음과 같습니다.
대학 컴퓨터에 SSH 터널 만들기
ssh -D 12345 [email protected]
이 터널을 프록시로 사용하도록 구성한 별도의 프로필을 사용하여 Firefox의 새 인스턴스를 시작합니다
firefox -P uniprofile -no-remote
. 이렇게 하면 내 대학으로 트래픽을 보내지 않는 다른 창을 계속 열 수 있습니다.논문을 다운로드한 후 Firefox를 종료하고 SSH 연결을 닫았습니다.
내가 이해하지 못하는 것은 이 모든 것을 스크립트에 연결하여 터널을 설정하고(비밀번호를 묻는 메시지를 표시함) 완료되면 Firefox를 시작한 다음 SSH 연결을 닫는 데스크톱 실행 프로그램을 만들 수 있다는 것입니다. Firefox 창을 닫으세요. 첫 번째 시도는 단순히 ssh 명령을 사용하여 스크립트를 만든 다음 firefox 명령을 사용하는 것이었지만 결과적으로 Firefox는 ssh 연결을 닫은 후에야 시작되었습니다.
#!/bin/bash
set -e
ssh -D 12345 [email protected]
firefox -P uniprofile -no-remote
#...and at this point find a way to close the ssh connection...
답변1
이것은 테스트되지 않았지만(GUI를 사용하지 않기 때문에) 다음을 시도해 보십시오.
#!/bin/bash
# From this answer http://unix.stackexchange.com/a/29949/82289
[email protected]
ssh -f -N -D 12345 -M -S /tmp/ssh_tunnel_%h.sock -o ExitOnForwardFailure=yes $SSH_HOST && \
echo "ssh tunnel started successfully" || \
echo "ssh tunnel failed to start"
# Launch firefox
firefox -P uniprofile -no-remote
# We should only get here after firefox closes
# Close the ssh tunnel socket
ssh -S /tmp/ssh_tunnel_%h.sock -O exit $SSH_HOST
# End shell-script
이 2개의 플래그 -f
는 -N
당신이 원하는 것이라고 생각합니다(사람들 ssh에서).
-에프
명령이 실행되기 전에 SSH에 백그라운드로 들어가도록 요청합니다. 이는 ssh에 비밀번호나 패스프레이즈가 필요하지만 사용자가 이를 백그라운드에서 실행하기를 원하는 경우에 유용합니다. 이는 -n을 의미합니다. 원격 사이트에서 X11 프로그램을 시작하는 권장 방법은 ssh -f host xterm과 같은 명령을 사용하는 것입니다.
-N
원격 명령을 실행하지 마십시오. 이는 포트만 전달하는 데 유용합니다(프로토콜 버전 2만 해당).
답변2
또는 해당 컴퓨터에 Firefox가 설치되어 있는 경우 Firefox를 열고 다음과 같이 컴퓨터에 표시할 수 있습니다.
달리기:
export DISPLAY=:0.0;
ssh -Y [email protected]
그런 다음 SSH 연결이 설정되면 해당 머신에서 Firefox를 실행하면 됩니다.
firefox