phpseclib를 사용하여 cisco SF308 스위치에 연결하려고합니다. 일부 HP 스위치에 성공적으로 연결하기 위해이 라이브러리를 사용하고 있지만, 어떤 이유로 든 내 cisco에서는 작동하지 않습니다. 코드는 다음과 같습니다.phpseclib - cisco 스위치에 연결할 수 없습니다.
set_include_path(get_include_path() . PATH_SEPARATOR . '/var/www/phpseclib');
include('/var/www/phpseclib/Net/SSH2.php');
define('NET_SSH2_LOGGING', NET_SSH2_LOG_COMPLEX); //add near include lines
$cisco = new Net_SSH2('10.10.10.10');
if (!$cisco->login('username', 'password')) {
exit('Login Failed');
}
echo $cisco->write('\n');
echo $cisco->write('help');
echo $cisco->read('/([0-9A-Z\-])*(#)(\s*)/i', NET_SSH2_READ_REGEX);
echo $cisco->data;
echo $cisco->getLog();
echo $cisco->disconnect();
로그인 실패 오류 메시지는 항상 사라집니다.
NET_SSH2 라이브러리 자체에 디버그 문을 추가하고 'NET_SSH2_MSG_USERAUTH_FAILURE'로 정의 된 오류 번호 51로 인해 그 코드가 죽어 가려고했습니다.
HP 스위치와이 cisco간에 다른 점 중 하나는 수동으로 연결할 때 hp가 초기 ssh 명령에서 사용자 이름을 선택하기에 충분히 "똑똑"하다는 것입니다. 명령 프롬프트에서이 작업을 수행하는 경우 예를 들어, :
ssh [email protected]
를 한 후 Enter 키를 누르십시오, 그것은 사용자 이름으로 "이름"을 선택할 것, 그리고 그것은 단지 암호를 입력하라는 메시지가 표시됩니다. cisco 스위치 (SF302-08 모델)는 사용자 이름과 암호를 입력하라는 메시지를 표시합니다. 두 번째 사용자 이름과 암호를 입력하면 스위치에 연결할 수 있습니다.
이것이 문제의 원인인지 확실하지 않지만 두 스위치간에 분명히 다른 것이 있습니다. 나는이 문서를 변경하는 방법이 있는지/초기 연결 요청에서 사용자 이름을 선택하도록 cisco의 설명서를 찾으려고합니다. 하지만 다른 제안이 있으시면 알려주세요. 나는 모든 귀이다.
감사합니다.
EDIT 1
내가 복잡한 로깅을 설정하고 실패 어디에의 전체 세부 사항을 가지고, 경우에이 도움이됩니다./그래서
Login FailedError message is:
<-
->
<- NET_SSH2_MSG_KEXINIT (0.0118s)
-> NET_SSH2_MSG_KEXINIT (0s)
-> NET_SSH2_MSG_KEXDH_INIT (0s)
<- NET_SSH2_MSG_KEXDH_REPLY (0.7912s)
-> NET_SSH2_MSG_NEWKEYS (0s)
<- NET_SSH2_MSG_NEWKEYS (0s)
-> NET_SSH2_MSG_SERVICE_REQUEST (0s)
<- NET_SSH2_MSG_SERVICE_ACCEPT (0.4927s)
-> NET_SSH2_MSG_USERAUTH_REQUEST (0s)
<- NET_SSH2_MSG_USERAUTH_FAILURE (0.0059s)
이 스위치를 접촉되지만 사용자 이름을 인증하는 동안 내 최초 게시물에 언급, 그것은 실패 것 :
set_include_path(get_include_path() . PATH_SEPARATOR . '/var/www/phpseclib');
include('Net/SSH2.php');
define('NET_SSH2_LOGGING', true); //turn on logging.
$ssh = new Net_SSH2('10.10.10.10'); //starting the ssh connection to localhost
if (!$ssh->login('username', 'password')) { //if you can't log on...
echo('Login Failed');
echo 'Error message is: <br>';
$log = $ssh->getLog(NET_SSH2_LOG_COMPLEX);
foreach ($log as $logitem) {
echo $logitem.'<br>';
}
이 다음과 같은 출력이 반환 여기 내 최신 코드입니다 암호.
응답 해 주셔서 감사합니다. 나는 수동으로 할 때 모든 것이 작동한다는 것을 내 포스트에 암시하려고했다. 내 게시물을 더 명확하게 편집 할 것입니다. 하지만 그렇습니다. 올바른 IP 주소와 자격 증명을 가지고 있습니다. – dot