2011-07-05 5 views
0
내가 간부를 사용하여 우분투에 ssh를하기 위해 노력하고있어

작동하지,하지만 어떤 이유로 나는 22 포트 오류 얻을 코드에서 실행할 때 연결 코드의 I에서자바 간부 또는 런타임은 ssh를

을 거절에게 concat을 사용하여 문자열을 묶어 두지 만, 출력하기 때문에 제대로 조합했다는 것을 알았고 명령 행에 복사하여 붙여 넣으면 제대로 ssh됩니다. 내 코드 시도 :

p1= Runtime.getRuntime().exec(run1); 
p1.waitfor(); 

run1 = "ssh -o StrictHostKeyChecking=no -v -i key " + "[email protected]"+ DNS + " sudo mke2fs -F -j "+device; 

어떤 아이디어?

+0

@를 스카핑 해 보았습니까? Runtime.exec을 통해 명령을 실행하는 것은 쉘 – woliveirajr

+0

에서 실행하는 것과 정확히 같지 않습니다. 나중에 "sudo mk ..."를 제외한 연결을 시도하고 결과를 게시하십시오. – woliveirajr

+0

은 run1 문자열 또는 문자열 []입니까? – woliveirajr

답변

0

Connection이 거부되면 SSHD가 실행되고 있지 않거나 방화벽 (또는 유사)에 의해 차단되고 있습니다.

+0

명령 줄에 직접 작성했을 때 같은 줄이 작동하더라도? – icr

+0

이렇게 보일 것입니다. '포트 22 : 연결이 거부되었습니다.'는 .exec 호출이 정확하고 22 번 포트로 ssh를 시도했지만 거절당하는 것을 의미합니다. 이상하지만 진실입니다. – ChrisBint

+0

L/P가 아닌 키를 사용하고있는 것 같습니다. 당신의 exec'ing 호출이 _could_ 문제가 될 수 있다는 것을 의미 할지도 모르지만, 확실하지 않을 수 있습니다. – ChrisBint

1

연결을 시작 했으므로 연결을 거부하기 위해 사용자가 ssh 접속을 시도하고있는 시스템이 사용자에게 ssh 액세스를 거부하고 있음을 의미합니다.

가지고 계신 시스템에 로그인하여 ssh 서버가 실행 중인지 확인하십시오. 그렇다면 방화벽이 포트 22를 차단하고 있지 않은지 확인하십시오. 왜냐하면 때로는 ssh 서버가 실행되고 있지만 방화벽은 포트 차단 규칙으로 인해 ssh 서버에 대한 네트워크 액세스를 허용하지 않기 때문입니다. 주석 질문 후 편집

--- ---

Is there a difference between ssh in the command line and using exec? Because I can 
connect to the server through the command line, which I assume is still using port 22. 
So if I can ssh that way does that mean port 22 is working? 

몇 가지 가능성이 있습니다. Java에는 기계 자원에 대한 프로그램 액세스를 거부하는 역할을하는 Security Manager가 있습니다. 보안 관리자가 하드 드라이브에 액세스하거나 다른 시스템에 연결하는 권한을 거부 할 때 원격 서버에서 다운로드 한 애플릿 코드를 안전하게 실행할 수 있습니다. 애플릿 샌드 박스에서는 원본 웹 서버에 연결을 허용하여 더 많은 코드와 이미지를 다운로드합니다.

그러나 보안 예외가 없으므로 의심되는 부분은 보안 관리자에게 전달됩니다. 메시지에서 "Connection refused"라는 단어를 사용한다는 사실은 연결하려는 SSH 서버가 사용자의 연결을 허용하지 않는다는 강력한 표시입니다.

아마도 명령 줄에서 작동하면 ssh 명령이 다른 환경이나 구성을 사용하고있는 것입니다. 명령에 별명이 있는지, ssh 연결이 키 쌍에 대해 몇 가지 가정을하는 경우를 볼 수 있습니다. 아무 것도 명령과 일치하지 않는 것 같으면 프로그램이 ssh 버전 2와 연결되어 있는지 확인합니다 (버전 1은 보안 구멍으로 인해 버전 1이 허용되지 않습니다).

그런 다음 이름 확인에있어 가능한 차이점을 찾아 보겠습니다. Java 프로그램에서 호스트 이름을 해석하는 것과 다르게 명령 행에서 호스트 이름을 해석 중일 수 있습니다. 이는 Java 프로그램이 보안 쉘 서버를 실행하지 않는 다른 시스템에 연결을 시도하고 있음을 의미 할 수 있습니다.

어느 쪽이든, 진정한 코딩 문제인지 아니면 환경 문제인지를 파악하기 위해 디버깅을해야 할 것 같습니다.

+0

ssh와 명령 행의 차이점은 무엇입니까? 명령 줄을 통해 서버에 연결할 수 있기 때문에 여전히 포트 22를 사용하고 있다고 가정합니다. 그런 식으로 ssh를 사용할 수 있다면 포트 22가 작동한다는 것입니까? – icr

+0

질문하신 내용이 너무 많아 답장을 보내지 않으므로 답변을 수정했습니다. 위와 행운을 읽으십시오. –

관련 문제