使用“authorized_密钥”与Ruby进行SSH连接,但不使用用户名`
我已经使用使用“authorized_密钥”与Ruby进行SSH连接,但不使用用户名`,ruby,ruby-on-rails-3,shell,command-line-arguments,net-ssh,Ruby,Ruby On Rails 3,Shell,Command Line Arguments,Net Ssh,我已经使用authorized_keyspush对服务器进行了身份验证,因此我可以从我的系统运行命令ssh 192.168.1.101,并可以通过服务器进行连接 现在,我尝试了图书馆,但它对我不起作用 Net::SSH.start("192.168.1.209",username) do |ssh| @output=ssh.exec!("ls -l") end 如前所述,此用户名字段是必需的。我想要没有用户名的 所以,我试过这个 system('ssh 192.168.1.2
authorized_keys
push对服务器进行了身份验证,因此我可以从我的系统运行命令ssh 192.168.1.101
,并可以通过服务器进行连接
现在,我尝试了图书馆,但它对我不起作用
Net::SSH.start("192.168.1.209",username) do |ssh| @output=ssh.exec!("ls -l") end
如前所述,此用户名字段是必需的。我想要没有用户名的
所以,我试过这个
system('ssh 192.168.1.209 "ls -l"')
它为我运行命令。但我希望输出是一个变量,如第一个示例中的
@output
。是否有任何命令、gem或任何方式可以获得解决方案?任何ssh连接都需要用户名。默认值是您的系统帐户名或您要连接的主机的.ssh/config
中指定的任何名称
如果需要访问,则应将当前用户名设置为ENV['USER']
如果您想知道该连接使用的是什么用户名,请尝试使用
ssh-v
查找详细模式,以解释发生的情况。任何ssh连接都需要用户名。默认值是您的系统帐户名或您要连接的主机的.ssh/config
中指定的任何名称
如果需要访问,则应将当前用户名设置为ENV['USER']
如果您想知道用于该连接的用户名是什么,请尝试使用
ssh-v
,这是一种详细的模式来解释所发生的事情。反引号的工作原理与“system”函数非常相似,但有着重要的区别。在反引号之间包含的Shell命令将以标准输出执行
所以,下面的语句应该执行ssh 192.168.1.209“ls-l”,并将目录文件列表放入@output变量中:
@output = `ssh 192.168.1.209 "ls -l"`
反引号的工作原理与“系统”功能非常相似,但有重要区别。在反引号之间包含的Shell命令将以标准输出执行 所以,下面的语句应该执行ssh 192.168.1.209“ls-l”,并将目录文件列表放入@output变量中:
@output = `ssh 192.168.1.209 "ls -l"`
您可以将参数传递到%x[]中,如下所示:
1. dom = ‘www.ruby-rails.in‘
2. @whois = %x[whois #\{dom\}]
您可以将参数传递到%x[]中,如下所示:
1. dom = ‘www.ruby-rails.in‘
2. @whois = %x[whois #\{dom\}]
此外,我需要在请求中运行5-10个命令。此外,我需要在请求中运行5-10个命令。实际上,在shell提示符中,我可以运行
ssh 192.168.1.209
it connect而不询问username,因为我复制了密钥并将其添加到授权密钥中。即使有授权密钥,也始终需要用户名,因为密钥不一定告诉服务器哪个用户正在登录。很可能ssh
是从操作系统或配置文件中获取用户名的。确切地说,您可以连接,而无需请求用户名,但这并不意味着它实际上在shell提示符中没有使用用户名,我能够运行ssh 192.168.1.209
it connect而不询问用户名,因为我复制了密钥并将其添加到授权密钥中。即使使用授权密钥,用户名也始终是必需的,因为密钥不一定告诉服务器哪个用户正在登录。很可能ssh
是从操作系统或配置文件获取用户名的。确切地说,您可以连接而不需要用户名,但这并不意味着它没有使用用户名