Как я могу определить, доступна ли служба scp на удаленном хосте без отправки файла? - PullRequest
2 голосов
/ 12 июня 2009

Не могли бы вы предложить способ определения, доступна ли служба scp на сервере без необходимости учетной записи и / или пароля?

Я пытаюсь понять, как определить, если

 Net::SCP->new( "hostname", "username" );

функция не может подключиться к удаленному, потому что служба недоступна на удаленном хосте или из-за сбоя аутентификации.

Ответы [ 4 ]

5 голосов
/ 12 июня 2009

sshd будет работать на порту 22. Telnet к нему, чтобы увидеть, отвечает ли он.

Чтобы проверить сервер без какого-либо кодирования, введите в командной строке:

telnet host.example.com 22

Если служба ssh доступна, ответ будет выглядеть примерно так:

Trying host.example.com...
Connected to host.example.com.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.1p1 Debian-5ubuntu1

Если нет, вы увидите:

Trying host.example.com...
telnet: Unable to connect to remote host: Connection refused
1 голос
/ 23 августа 2010

используйте Net :: SSH2 или Net :: OpenSSH вместо Net :: SCP

1 голос
/ 12 июня 2009

Net :: SCP не использует пароли, если вы не используете интерактивный режим, он использует ключи RSA или DSA. В тот момент, когда вы используете get () или put (), эти функции возвращают true или false в случае успеха или неудачи.

Возможно, вы захотите проверить Net :: SCP :: Expect, если вам нужно использовать пароли вместо аутентификации по ключу. У perldoc для обоих модулей есть хорошие примеры для подражания.

0 голосов
/ 14 августа 2013

У Чедвика это правильно, но если вы считаете, что оно должно работать, а sshd работает, проверьте следующее:

  1. Маршрут в порядке? Попробуйте

    ping host.example.com
    
  2. Установлен ли файл hosts.allow на host.example.com для разрешения соединения? Он должен быть в состоянии разрешить входящее соединение, если вы используете DNS имена.

  3. На хосте host.example.com работает брандмауэр? Попробуйте

    iptables -L
    

    в Linux или проверьте брандмауэр в Windows.

...