簡體   English   中英

Net :: SSH2從Windows 7到SSH到VMWare Guest CentOS 6.2的SSH無法使用公鑰和私鑰

[英]Net::SSH2 to ssh from Windows 7 to VMWare Guest CentOS 6.2 not working with Public and Private keys

我無法從Windows 7切換到VMWare Guest CentOS 6.2

我的筆記本電腦上裝有Windows 7 64位操作系統。 在上面安裝了草莓Perl 5.16.2。 我還安裝了VMWare Player並在其上運行CentOS 6.2。

使用我在網上找到的文章,我已經成功地從UTTY到SSH無需密碼就可以從SSH到CentOS 6.2。

我在CentOS 6.2上創建了用戶perl514。 使用以下腳本,如果我使用用戶名和密碼登錄,則一切正常。 但是它不適用於我使用隨PUTTY一起提供的SSH KEYGEN工具創建的公鑰和私鑰。

以下是腳本:

    #!C:\strawberry\perl\bin\perl.exe

    use Modern::Perl;
    use Net::SSH2;


    my $hostname = '192.168.247.128';
    my $username = 'perl514';
    my $password = 'redhat';

    my $ssh2 = Net::SSH2->new();
    say "Connecting to $hostname";

    $ssh2->connect("$hostname") || die "PROBELM - $!";

    #$ssh2->auth_password("$username","$password") || die "Username/Password not #right";#COMMENTED OUT. This Works. Stuff given below does not work.
    $ssh2->auth_publickey ("perl514", "C:\\Users\\winuser\\Documents\\perl\\work\\putty_priv.ppk",
                   "C:\\Users\\winuser\\Documents\\perl\\work\\public.pub") || die "ERROR", $ssh2->error;



    my $chan = $ssh2->channel();
    $chan->blocking(0);
    $chan->exec('ls -la');
    while (<$chan>){ print } 

我收到以下錯誤:

    Connecting to 192.168.247.128
    ERROR-19LIBSSH2_ERROR_PUBLICKEY_UNVERIFIEDInvalid public key at ssh2.pl line 17.

使用用戶名和密碼,可以正常工作。 但不能使用公鑰和私鑰。

我很確定我在某個地方出錯。 請幫助我。

Net :: SSH2期望密鑰文件采用與PuTTY使用的格式不同的OpenSSH格式。

您應該能夠使用PuTTY GUI轉換為OpenSSH格式。 例如,請參閱如何將使用PuttyGen(Windows)生成的SSH密鑰對轉換為ssh-agent和KeyChain(Linux)使用的密鑰對

更新

詳細的轉換步驟:

  • 打開PuTTY密鑰生成器
  • 將私鑰加載到其中
  • 在轉換菜單上,以OpenSSH格式導出私鑰
  • " and paste it into a new file with the same name as the one you have given to the private key with ".pub" appended. 從“ ”下的框中選擇並用鼠標復制OpenSSH的粘貼到一個新文件中,該文件的名稱與使用“ .pub”指定給私鑰的名稱相同”。

很抱歉回答問題而不是發表評論,但是評論部分不允許我在其他步驟中加一個步驟。 我檢查了您的鏈接,這是我的理解:

    1.Open PuttyGen
    2.Click Load
    3.Load your private key
    4.Go to Conversions->Export OpenSSH and export your private key

我知道上面的步驟將在Windows Box上運行,但是下面的步驟呢? 它們要在CentOS Guest上運行嗎? 不知道我是否必須在CentOS 6.2 Guest OS內復制由膩子創建的私鑰。 另一個問題是由Puttygen創建的私鑰同時具有私鑰和公鑰。

     5.Copy your private key to ~/.ssh/id_dsa (or id_rsa).

     6.Create the RFC 4716 version of the public key using ssh-keygen

    ssh-keygen -e -f ~/.ssh/id_dsa > ~/.ssh/id_dsa_com.pub

     7.Convert the RFC 4716 version of the public key to the OpenSSH format:

    ssh-keygen -i -f ~/.ssh/id_dsa_com.pub > ~/.ssh/id_dsa.pub

我這樣做的原因是,一旦此測試設置成功,我將使用類似的方法登錄一些NAS陣列(基於Linux)以運行一些報告。 因此提出了問題。

我沒有在CentOS vm上安裝ssh服務器。 安裝ssh服務器后,它可以正常工作。

yum -y install openssh-server openssh-clients

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM