2014-05-09 11 views
1

그래서 저는 C#을 사용하여 명령을 실행하고 꽤 표준 SSH 연결에서 데이터를 읽는 방법을 찾으려고합니다. 유일한 문제는 제가 문제의 서버에 직접 연결할 수 없다는 것입니다. 예를 들어 프록시의 일종 인 다른 SSH 연결을 거쳐야합니다.다른 SSH 연결을 통한 SSH

지금까지 다양한 API를 사용해 왔습니다. SharpSSH 등. 나는 내가 얻을 결과에 경계 따라합니다 넣어 명령으로, 실행하고 실시간으로 물건을 읽을 수 있어야합니다> SSH 대상 서버

-> SSH 서버 -

나 : 여기 상황이다 .

지금까지 내가 가장 가까이있는 것은 연결 방식을 모든 방식으로 설정했지만 로그인 타임 아웃이 끝나기 전에 대상 서버에서 정보를 얻지 못했습니다. 기본적으로 "프록시"서버에 연결하여 로그인하고 "ssh targetserver"를 실행하면 약 30 초 동안 모든 것이 조용 해집니다. 이 시점에서 많은 데이터를 즉시 수신합니다. 대상 서버의 login-promt 및 로그인하는 데 너무 오래 걸렸다는 메시지가 표시되면 대상 서버가 연결을 종료하고 "프록시"서버가 결과를 플러시하여 발생 상황을 볼 수 있습니다.

나는 맹목적으로 올바른 순서로 명령을 실행하려고했지만 API가 대상 서버에 연결되면 명령 줄을 계속 사용하지 않는 것처럼 보입니다. 제한 시간에 도달 할 때까지 아무런 조치도 취하지 않습니다.

그냥 명확히하기 위해; 어떤 방식 으로든 서버를 수정할 수는 없습니다. 이것은 설정입니다. 그러나 퍼티를 통해 수동으로 수행하는 것이 전혀 문제가 아니기 때문에 수행 할 수 있음을 알고 있습니다. 퍼티가 여기에있는 것을 C# 응용 프로그램에서 다시 만들려고합니다. 퍼티에서 나는 "ssh server"라고 입력하고, 나의 자격 증명을 입력하고, 또 다른 "ssh server"를 수행한다. 이 작업을 수행하려는 이유는 수행해야 할 일상적인 작업이 많기 때문입니다. 같은 일들이 반복되고, 더해질 때 꽤 많은 시간이 걸립니다.

API에 문제가 있는지, 깃발이 있거나 무엇이든 명령을 입력하여이 작업을 수행 할 수 있는지 확실하지 않습니다. 나는 L과 같은 깃발에 대해 읽었지 만, 그것은 나를 위해 잘 작동하지 않는 것 같습니다. 두 서버

사람이 작업을 수행하는 방법을 알고 우리의 사용자 이름과 암호를 퍼티로 (또는 무엇이든을 입력하여 사용자를 인증? (바람직하게는 C# 및 SharpSSH를 사용.) 나는 또한 자바로이 시도

, 그리고 이 동일한 문제를 가지고 ServerAliveInterval -o

답변

1
당신은 당신의 ServerAliveInterval 제한을 늘 시도 할 수

사용 옵션을 = SSH에

또한 중첩 된 SSH 및 암호 덜 SSH 사용에 대한 sshpass를 사용할 수 있습니다.... : sshpass -p 'password1'ssh -t 사용자 이름 @ host1 "ss hpass -p 'password2'-t 사용자 이름 @ host2 "