2016-06-26 152 views
0

我可以通過ssh這樣的命令發送到服務器登錄名和密碼:通過ssh發送命令與發佈SSH密鑰,沒有密碼

Net::SSH.start("1.2.3.4", "user_name", password: "1234") do |ssh| 
    res = ssh.exec!("ls") 
    end 

但是,如果我想避免提供密碼如果我已將我的公用ssh密鑰添加到該服務器,我該如何擺脫密碼?我應該從函數調用中刪除它,還是應該讓服務器知道我想通過ssh公鑰進行身份驗證?

回答

1
Net::SSH.start("1.2.3.4", "user_name", keys: ['~/.ssh/id_rsa.pub']) do |ssh| 
    res = ssh.exec!("ls") 
end 

如果上面會不會爲你工作,這樣做:

Net::SSH.start("1.2.3.4", "user_name", 
       keys: ['~/.ssh/id_rsa.pub'], 
       # host_key: "ssh-rsa", # default value 
       # encryption: "blowfish-cbc", # default value 
       verbose: :debug 
) do |ssh| 
    res = ssh.exec!("ls") 
end 

,看看有什麼是錯的。