2016-08-18 5 views
2

마무리시 클라이언트의 네트워크에서 실행될 PHP 스크립트를 작성해야합니다. 내 컴퓨터 (A)는 해당 네트워크에 연결할 수 없지만 SSH로 단일 서버 (B)에 액세스 할 수 있습니다. 내 스크립트는 해당 네트워크의 특정 포트에서 웹 서버 (C)에 대한 cURL 요청 (인증서 및 개인 키 포함)을 수행해야합니다. 또 다른 어려움은 내가 C 서버의 IP를 가지고 있지 않다는 것인데, 단지 네트워크 내에서만 해석 가능한 URL이다. 그러나 서버 B와 C는 기본적으로 나는 3 단계를 참조 서로SSH 터널을 통해 원격 서버에 연결하는 cURL

사이에 통신 할 수 있습니다 (하지만 더있을 수 있습니다) :

  1. 컴퓨터 A에서 열기 SSH 연결 서버 B에
  2. 가 서버에 컬을 요청 보내기 C (https://my.remote.server.domain.com:8444) 및 저장 응답
  3. 닫기 SSH 연결
것은이

, 나는 어떻게 작업을 수행하는 (나는 모든 것을 네트워크 relat에서 기본적으로 무지 해요 아무 생각이 없다 ed). 누구나 단서가 있습니까?

답변

1

사용 배쉬 :

$ ssh [email protected]_server << EOM 
curl http://remote.server/ > /home/user/file 
EOM 
$ scp [email protected]_server:/home/user/file local_file 

이 첫 번째 부분은, (ssh_server)하여 SSH 서버에 연결 컬을 실행하고 (SSH 서버에) 파일을 로컬로 저장합니다. 그런 다음 scp를 사용하여 로컬 시스템에 파일을 다운로드합니다.

임시 파일을 만드는 것이 아마도 가장 쉬운 방법 일 것입니다. (권장하지 않음 및 )

$ ssh [email protected]_server 'rm /tmp/file' 

마지막으로, 더러운 방법 : (당신이 정말로 거기에 해당 파일을 감당할 수없는 경우 SSH + RM을 사용하여 나중에 삭제, 등) 당신은에/tmp 디렉토리를 만들 수 있습니다 파일을 작성하지 위해 다음과 같다 : 아마 모든 비용에서 다시 한번이 기술은 피해야 언급해야

$ ssh [email protected]_server << EOM 
curl http://remote/server | nc -l 1234 & 
exit 
$ nc ssh_server 1234 > file 

,이 암호화되지 않은 데이터를 전송하고 어떠한 인증을 요구하지 않기 때문에. 또한 명령을 실행하기 전에 다른 사람이 같은 포트 (1234)를 사용하여 서버에 연결할 수 있으므로 결과를 검색하고 스크립트를 정지 상태로 둘 수 있습니다.

마지막으로 한 번 사용하지 마십시오.

+0

서버 B에 파일을 만드는 것은 불가피한가요? 응답을 직접받을 수는 없습니까? (단지 JSON 문자열 일뿐입니다) – 3rgo

+0

나는 내 머리 위로 몇 가지 해결책으로 내 대답을 업데이트했습니다. – fgiobergia

관련 문제