2016-01-19 25 views
1

我在AWS上有一個羣集,我想用SSH登錄到boto.cmdshell。但是也許我不理解要傳遞的參數。使用botocmdshell將ssh轉換爲AWS EC2實例

該節點擁有用戶ubuntu並且沒有密碼設置。

[Errno 2] No such file or directory: 'C:\\Users\\Neil/.ssh/known_hosts'

此錯誤是沒有意義的我:

ssh_client = sshclient_from_instance(instanceobj, 
       ssh_key_file =r'C:\Users\Neil\Downloads\sparkcluster.pem', 
       user_name ='ubuntu')` 

當我運行代碼,我得到這個錯誤/我想我應該提供PEM關鍵ssh_key_file參數。我錯過了什麼嗎?我知道用膩子工作很好。

任何幫助將會很棒!

+0

從putty終端顯示ls -l〜/ .ssh是什麼? –

+0

只提供了一個有效的路徑到'sshclient_from_instance(host,key_file =「path_to_file」,...)中的hostkey文件或一個空白文件''參見https://github.com/boto/boto/blob/master/boto /manage/cmdshell.py。請注意,這是known_hosts文件,而不是您的私鑰。如果你沒有一個空白文件,就創建一個空白文件。 – tintin

+0

@RodrigoM ls -l in .ssh顯示,-rw ------- 1 ubuntu ubuntu 1606 Jan 16 10:34 authorized_keys -rw ------- 1 ubuntu ubuntu 1679 Jan 16 10:01 id_rsa -rw-r - r-- 1 ubuntu ubuntu 404 Jan 16 10:01 id_rsa.pub -rw-r - r-- 1 ubuntu ubuntu 2664 Jan 18 01:21 known_hosts – Neil

回答

0

據我所知,根據github code of boto,還有一個參數叫做host_key_file,如果調用者沒有指定它的默認值是~/.ssh/known_hosts。在你的情況下,你的主目錄C:\Users\Neil沒有這個文件。因此,你會得到這個錯誤。

如果連接從一個Ubuntu或者基於Linux機器
添加以下線在/etc/ssh/ssh_config文件的末尾:

Host IP_YOU_WANT_TO_CONNECT 
    IdentityFile path/keyname.pem 
    StrictHostKeyChecking no 

或做到這一點:

sudo touch ~/.ssh/known_hosts 

ssh-keyscan -H [hostname],[ip_address] >> ~/.ssh/known_hosts 

在第一種情況,您可能需要指定/etc/ssh/ssh_config作爲host_key_file。在第二種情況下,默認參數值將起作用。

還有一個等效的窗口選項。如果你搜索,你可以得到很多信息。 從我所知道的,你可以安裝openSSH的Windows和C:\Program Files\OpenSSH\etc\ssh_config是相當於我上面發佈的窗口。在該文件中填寫上面的信息。然後您可以將其指定爲host_key_file。
我想你也可以在你的主目錄C:\Users\Neil上手動創建一個.ssh/ssh_config文件,並執行類似於上面爲linux所做的ssh-keyscan。但是,我從來沒有試過這個。

+0

我以爲known_hosts應該是在你的Linux服務器不在Windows桌面上? – Neil

+0

有沒有這樣的事情。它只是一個ssh設置,允許在特定主機上使用ssh。您可以在stackoverflow,superuser和serverfault上檢查與windows上的known_hosts相關的其他問題。 – phoenix

+0

也是如此,即使您已經擁有該文件,也可以傳遞完整路徑,C:\ Users \ Neil \ .ssh \ known_hosts – phoenix