【问题标题】:$ssh2-> connect('host') how can I find what host should be?$ssh2-> connect('host') 我怎样才能找到应该是什么主机?
【发布时间】:2018-04-29 01:53:43
【问题描述】:

我正在尝试使用我在互联网上找到的这段代码通过 perl SSH2 连接到我的工作 linux 机器。当我运行它时,它返回无法连接到主机。有人可以告诉我如何找到要放入 ssh2 的主机 -> 连接。我假设 myusername-lnx 是正确的,因为这是我在我的 linux 机器上运行 >hostname 时得到的。我应该使用输出形式 >hostname 还是其他东西。如果主机名的输出是正确的,则使用任何其他关于我可能做错的建议会导致 ssh2->connect 无法工作。

#!/usr/bin/perl
use warnings;
use strict;
use Net::SSH2;

my $ssh2 = Net::SSH2->new();

$ssh2->connect('myusername-lnx') or die "Unable to connect Host \n";
$ssh2->auth_password('my_username','my_password') or die "Unable to login \n";

【问题讨论】:

  • 你和work linux box在同一个网络上吗?或使用VPN?或者您的工作机器暴露在互联网上?当您只使用主机名时,您假设您当前的框在同一个域上。确保您在工作 linux 机器可访问的网络中,您可能想要使用 FQDN 或只使用 IP。你可以通过hostname -iip a在work linux box上找到你的IP
  • 命令行中的ssh myusername-lnx 是否有效?

标签: perl ssh hostname


【解决方案1】:

根据the documentation for Net::SSH2,connect 确实需要一个主机名。您可以获得更好的错误消息,如下所示:

$ssh2->connect('myusername-lnx') or $ssh2->die_with_error;

我正在尝试连接到我的工作 linux 机器...

试试普通的ssh myusername-lnx。如果这不起作用,那么 Net::SSH2 也不起作用。

如果您不在工作,很可能您的本地计算机不知道主机 myusername-lnx 是什么。 hostname 返回机器自称的内容,但这不一定是其他任何东西所知道的。主机名可能需要完全限定,即它需要像myusername-lnx.somehost.com 这样的域部分。这有点像要求“珍妮丝”。工作中可能只有一个“珍妮丝”,但工作之外有很多珍妮丝,所以你必须更具体。

甚至有可能(实际上很可能)无法从工作网络外部联系到您的工作机器。您可能需要使用VPN 才能进入网络。

您需要弄清楚要使用的主机名或 IP 地址。不幸的是,我们不能告诉你。您应该询问您的网络管理员在工作之外如何访问工作机​​器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多