Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: Capturing SSH output in an array.

by perl514 (Pilgrim)
on Nov 20, 2012 at 16:06 UTC ( #1004747=note: print w/ replies, xml ) Need Help??


in reply to Capturing SSH output in an array.

Hi Salva,

 

The script works fine if I include the username and password, but fails when I use the key_path => "/home/$user/.ssh/id_dsa"); option.

Here's the script:

#!/usr/bin/perl use Modern::Perl; use Net::SSH::Any; my $hostname = '192.168.247.128'; my $username = 'perl514'; my $password = 'redhat'; say "Trying to connect to $hostname . Might take a while"; my $ssh = Net::SSH::Any->new($hostname, user => $username, key_path => + "/home/$username/.ssh/id_dsa"); if ($ssh->error) { say "whee...something wrong here: " . $ssh->error; } else { say " I am connected to $hostname!!!"; my @out = $ssh->capture("ls -la"); say "The files and directories of $username on $hostname are given + below"; say "@out"; }

And here is the error message

perl anytest1.pl Trying to connect to 192.168.247.128 . Might take a while whee...something wrong here: Authentication failed

This is slightly modified version of your script and I am running this on my office laptop that has Windows 7 installed with DWIM Perl. The script is pointing to CentOS 6.2 running as Guest OS inside of VMWare Player. I am able to ping to it as well as putty into it, so no issues there.I thought that there could be issues with the way  $username is being interpolated, but that's not the issue. The /home/$user/.ssh/id_dsa refers to id_dsa inside the CentOS 6.2. I am able to login to the Guest OS using the same username and password mentioned in the script, so any issues due wrong username and password are ruled out as well.

So I tried similar stuff using the  Net::SSH2 module, because from what I understand,  Net::SSH::Any module would use either  Net::OpenSSH or  Net::SSH2 in the backend. tried with  Net::SSH2 and same error was observed. Not sure where I am going wrong. Please help me.

Perlpetually Indebted To PerlMonks


Comment on Re: Capturing SSH output in an array.
Select or Download Code
Re^2: Capturing SSH output in an array.
by salva (Abbot) on Nov 20, 2012 at 16:25 UTC
    The argument to key_path is the place where the private key is located in the local machine (in your case, the Windows 7 host).

    And BTW, you should write your replies attached to the node you are actually replying, not under the root query node. Otherwise the monk you are replying to may not notice it.

      Hi Salva,

       

      I earlier used to reply to the person who answered, but was told to reply to the root thread, but I see your point and hence replying to you.

      It was pretty dumb of me not to understand where the key_path is coming from. I googled up and found a few solutions to set up ssh keys working in Windows. Will surely keep you posted.

      Perlpetually Indebted To PerlMonks

      W7 at Work, SL6.3 at home.

        An easy way to set up public key authentication from a Windows machine:
        1. Generate the public/private key pair in a linux box using ssh-keygen without passphrase. For instance:
          $ ssh-keygen -f win_id_rsa Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in win_id_rsa. Your public key has been saved in win_id_rsa.pub. The key fingerprint is: df:25:e9:a5:12:b1:ea:bf:fa:41:23:62:88:cb:4b:1e salva@topo The key's randomart image is: +--[ RSA 2048]----+ | | | | | . | | . . o . | | . . o S = o o | | . . . . = = = | | E . + + | | o o . o | | o o++. | +-----------------+
        2. Copy both the public and the private keys in some private folder in your Windows machine (you can use scp from the command line or WinSCP or FileZilla).
        3. For every server and every account where you want to log using public key authentication, append the contents of the file with the public key (i.e. win_id_rsa.pub) into the file ~/.ssh/authorized_keys.
        4. When using Net::SSH::Any, pass the path to the file containing the private key (i.e. win_id_rsa) via key_path.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1004747]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (5)
As of 2014-12-27 08:49 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (176 votes), past polls