linux远程链接工具(linux和windows的区别)

学会使用安全外壳协议连接远程计算机。

linux远程链接工具(linux和windows的区别)

现在你已经在远程计算机上安装并启用了 SSH,可以尝试使用密码登录作为测试。要访问远程计算机,你需要有用户帐户和密码。

远程用户不必与本地用户相同。只要拥有相应用户的密码,你就可以在远程机器上以任何用户的身份登录。例如,我在我的工作计算机上的用户是 sethkenlon,但在我的个人计算机上是seth。如果我正在使用我的个人计算机(即作为当前的本地计算机),并且想通过 SSH 连接到我的工作计算机,我可以通过将自己标识为sethkenlon并使用我的工作密码来实现连接。

要通过 SSH 连接到远程计算机,你必须知道其 IP 地址或可解析的主机名。在远程计算机上使用 ip命令可以查看该机器的 IP 地址:

$ ip addr show | grep "inet "inet 127.0.0.1/8 scope host loinet 10.1.1.5/27 brd 10.1.1.31 [...]

如果远程计算机没有 ip命令,可以尝试使用ifconfig命令(甚至可以试试 Windows 上通用的ipconfig命令)。

127.0.0.1是一个特殊的地址,它实际上是localhost的地址。这是一个环回loopback地址,系统使用它来找到自己。这在登录远程计算机时并没有什么用,因此在此示例中,远程计算机的正确 IP 地址为10.1.1.5。在现实生活中,我的本地网络正在使用10.1.1.0子网,进而可得知前述正确的 IP 地址。如果远程计算机在不同的网络上,那么 IP 地址几乎可能是任何地址(但绝不会是127.0.0.1),并且可能需要一些特殊的路由才能通过各种防火墙到达远程。如果你的远程计算机在同一个网络上,但想要访问比自己的网络更远的计算机,请阅读我之前写的关于在防火墙中打开端口的文章。

如果你能通过 IP 地址 主机名ping到远程机器,并且拥有登录帐户,那么就可以通过 SSH 接入远程机器:

$ ping -c1 10.1.1.5PING 10.1.1.5 (10.1.1.5) 56(84) bytes of data.64 bytes from 10.1.1.5: icmp_seq=1 ttl=64 time=4.66 ms$ ping -c1 akiton.localPING 10.1.1.5 (10.1.1.5) 56(84) bytes of data.

至此就成功了一小步。再试试使用 SSH 登录:

$ whoamiseth$ ssh sethkenlon@10.1.1.5bash$ whoamisethkenlon

测试登录有效,下一节会介绍如何激活无密码登录。

创建 SSH 密钥

要在没有密码的情况下安全地登录到另一台计算机,登录者必须拥有 SSH 密钥。可能你的机器上已经有一个 SSH 密钥,但再多创建一个新密钥也没有什么坏处。SSH 密钥的生命周期是在本地计算机上开始的,它由两部分组成:一个是永远不会与任何人或任何东西共享的私钥,一个是可以复制到任何你想要无密码访问的远程机器上的公钥。

有的人可能会创建一个 SSH 密钥,并将其用于从远程登录到 GitLab 身份验证的所有操作,但我会选择对不同的任务组使用不同的密钥。例如,我在家里使用一个密钥对本地机器进行身份验证,使用另一个密钥对我维护的 Web 服务器进行身份验证,再一个单独的密钥用于 Git 主机,以及又一个用于我托管的 Git 存储库,等等。在此示例中,我将只创建一个唯一密钥,以在局域网内的计算机上使用。

使用 ssh-keygen命令创建新的 SSH 密钥:

$ ssh-keygen -t ed25519 -f ~/.ssh/lan

-t选项代表类型,上述代码设置了一个高于默认值的密钥加密级别。-f选项代表文件,指定了密钥的文件名和位置。运行此命令后会生成一个名为lan的 SSH 私钥和一个名为lan.pub的 SSH 公钥。

使用 ssh-copy-id命令把公钥发送到远程机器上,在此之前要先确保具有远程计算机的 SSH 访问权限。如果你无法使用密码登录远程主机,也就无法设置无密码登录:

$ ssh-copy-id -i ~/.ssh/lan.pub sethkenlon@10.1.1.5

过程中系统会提示你输入远程主机上的登录密码。

操作成功后,使用 -i选项将 SSH 命令指向对应的密钥(在本例中为lan)再次尝试登录:

$ ssh -i ~/.ssh/lan sethkenlon@10.1.1.5bash$ whoamisethkenlon

对局域网上的所有计算机重复此过程,你就将能够无密码访问这个局域网上的每台主机。实际上,一旦你设置了无密码认证,你就可以编辑 /etc/ssh/sshd_config文件来禁止密码认证。这有助于防止其他人使用 SSH 对计算机进行身份验证,除非他们拥有你的私钥。要想达到这个效果,可以在有sudo权限的文本编辑器中打开/etc/ssh/sshd_config并搜索字符串PasswordAuthentication,将默认行更改为:

PasswordAuthentication no

保存并重启 SSH 服务器:

$ sudo systemctl restart sshd && echo "OK"OK$

日常使用 SSH

OpenSSH 改变了人们对操作计算机的看法,使用户不再被束缚在面前的计算机上。使用 SSH,你可以访问家中的任何计算机,或者拥有帐户的服务器,甚至是移动和物联网设备。充分利用 SSH 也意味着解锁 Linux 终端的更多用途。如果你还没有使用过 SSH,请试一下它吧。试着适应 SSH,创建一些适当的密钥,以此更安全地使用计算机,打破必须与计算机面对面的局限性。

(0)
小多多的头像小多多创始人

相关推荐

发表回复

登录后才能评论