Как я вижу из вашего %params
, вы используете ключ DSA для проверки подлинности на удаленном сервере. У вас действительно нужно использовать встроенную реализацию Perl SSH, которую Net::SSH::Perl
предоставляет? Это полезно в некоторых случаях, когда вы не можете просто обернуть обычный вызов ssh
(например, если вам нужно предоставить текстовый пароль для подключения к серверу), но в нем не так много полезных параметров SSH - вы только что нашли один из их.
Я полагаю, что вы пытаетесь использовать Net::SSH
вместо (который является очень простой оболочкой для ssh
двоичных систем) и дать ему ConnectTimeout
и ServerAliveInterval
варианты с -o
или Net::OpenSSH
которых отнесено @ChankeyPathak выше и использовать его check_master
метод (как я понимаю из описания, он выглядит так, как вам нужно).
руководства имеет хорошее описание ConnectTimeout
(который определяет время ожидания при установлении соединения) и TCPKeepAlive
и ServerAliveInterval
(который обнаружить таймауты установленного соединения).
Для справки: здесь приведен полный список опций, реализованных в Net::SSH::Perl
, и с его Config.pm
. Если вам нужно использовать любой другой параметр, не указанный здесь, используйте какой-либо другой модуль SSH.
BindAddress
Host
BatchMode
ChallengeResponseAuthentication
Cipher
Ciphers
Compression
CompressionLevel
DSAAuthentication
GlobalKnownHostsFile
HostKeyAlgorithms
HostName
IdentityFile
NumberOfPasswordPrompts
PasswordAuthentication
PasswordPromptHost
PasswordPromptLogin
Port
Protocol
RhostsAuthentication
RhostsRSAAuthentication
RSAAuthentication
StrictHostKeyChecking
UsePrivilegedPort
User
UserKnownHostsFile
В соответствии с указанной ссылкой пользователь пытается использовать параметр ConnectTimeout в Net :: SSH :: Perl, и он не работает. Итак, временное решение состоит в том, чтобы добавить setsockopt в Perl.pm. Поскольку у меня нет прав на изменение Perl.pm, я не могу его реализовать. Во всяком случае, для вас работает опция ConnectTimeout? – Hema
Я не тестировал его, поэтому не знаю, работает ли это на моей машине или нет. Я использую Net :: OpenSSH, вы можете попробовать это. Также см. Это: http://stackoverflow.com/a/2851593/257635 –
Даже если этот вариант был реализован в Net :: SSH :: Perl, это не помогло бы автору. Он определяет ConnectTimeout, например. таймаут для установления соединения и то, что хочет автор, на самом деле ServerAliveInterval, который также не реализован в Net :: SSH :: Perl. – afenster