如何在家庭网络上使用 SSH 和 SFTP 协议

使用 SSH 和 SFTP 协议访问其他设备、高效安全地传输文件等等。
190 位读者喜欢这篇文章。
open network

Opensource.com

多年前,我决定设置一台额外的电脑(我总是有多余的电脑),这样我就可以从工作场所访问它,传输我可能需要的文件。要做到这一点,基本的第一步是让你的 ISP 分配一个固定的 IP 地址。

接下来的步骤虽然不是那么基本,但却更加重要,那就是安全地设置你的可访问系统。在这种特殊情况下,我计划只从工作场所访问它,所以我可以限制对该 IP 地址的访问。即便如此,你还是希望使用所有可能的安全功能。令人惊奇——也很可怕——的是,一旦你设置好这个系统,来自世界各地的人们会立即尝试访问你的系统。你可以通过查看日志来发现这一点。我猜想有机器人不断地在任何地方搜索可以找到的敞开的大门。

在我设置好电脑后不久,我意识到我的访问更多的是一种玩具而不是一种需求,所以我把它关掉了,让自己少了一件需要担心的事情。尽管如此,在你的家庭网络内部,SSH 和 SFTP 还有另一种用途,而且或多或少已经为你设置好了。

当然,一个要求是,你家里的另一台电脑必须是开着的,尽管是否有人登录并不重要。你还需要知道它的 IP 地址。有两种方法可以找到这个地址。一种是访问路由器,你可以通过浏览器来完成。通常,它的地址类似于 192.168.1.254。经过一些搜索,应该很容易找到当前通过 eth0 或 WiFi 连接到系统的设备。具有挑战性的是识别你感兴趣的电脑。

我发现更简单的方法是去到有问题的电脑,调出一个 shell,然后输入

ifconfig

这会吐出大量信息,但你想要的部分就在 inet 之后,可能看起来像 192.168.1.234。找到它之后,回到你想访问这台主机的客户端电脑,在命令行中输入

ssh gregp@192.168.1.234

要使这个命令生效,gregp 必须是该系统上的有效用户。然后你会被要求输入他的密码,如果你输入正确,你将连接到另一台电脑的 shell 环境。我承认我并不经常以这种方式使用 SSH。我有时会使用它,这样我就可以运行 dnf 来升级另一台电脑,而不是我正在使用的电脑。通常,我使用 SFTP

sftp gregp@192.168.1.234

因为我更需要一种简单的方法来在电脑之间传输文件。这肯定比使用 USB 闪存盘或外部驱动器更方便、更省时。

一旦你连接上,SFTP 的两个基本命令是 get,用于从主机接收文件;和 put,用于向主机发送文件。我通常会先切换到客户端上的目录,在那里我想保存从主机获取的文件或发送到主机的文件,然后再连接。当你连接时,你将在顶层目录——在本例中是 home/gregp。连接后,你可以像在客户端中一样使用 cd,只不过现在你正在更改主机上的工作目录。你可能需要使用 ls 来确保你知道你在哪里。

如果你需要更改客户端上的工作目录,请使用命令 lcd(如 local change directory 中的首字母)。同样,使用 lls 显示客户端系统上的工作目录内容。

如果主机上没有你想要的名称的目录怎么办?使用 mkdir 在其上创建一个新目录。或者你可以使用以下命令将整个文件目录复制到主机

put -r ThisDir/

这会创建目录,然后将其所有文件和子目录复制到主机。这些传输速度非常快,与你的硬件允许的速度一样快,并且没有你在互联网上可能遇到的瓶颈。要查看可以在 SFTP 会话中使用的命令列表,请查看

man sftp

我也能够在我的电脑上的 Windows VM 上使用 SFTP,这是设置 VM 而不是双启动系统的另一个优势。这让我可以将文件移动到或从系统的 Linux 部分移动。到目前为止,我只在使用 Windows 中的客户端执行此操作。

你还可以使用 SSH 和 SFTP 访问通过有线或 WiFi 连接到路由器的任何设备。有一段时间,我使用一个名为 SSHDroid 的应用程序,它以被动模式运行 SSH。换句话说,你使用你的电脑访问作为主机的 Android 设备。最近我找到了另一个应用程序,Admin Hands,其中平板电脑或手机是客户端,可以用于 SSH 或 SFTP 操作。这个应用程序非常适合备份或分享手机中的照片。

标签
Greg Pittman
格雷格是肯塔基州路易斯维尔的一位退休神经科医生,他对计算机和编程有着长期的兴趣,从 20 世纪 60 年代的 Fortran IV 开始。当 Linux 和开源软件出现时,它激发了他学习更多知识并最终做出贡献的决心。他是 Scribus 团队的成员。

7 条评论

“要做到这一点,基本的第一步是让你的 ISP 分配一个固定的 IP 地址。”

不幸的是,许多 ISP 会为此向你收取额外费用。

另一种选择是使用像 now-dns.org 这样的免费 DNS 服务;你可以拥有自己的域名,并定期(根据你的喜好,有多种工具)向他们确认你当前的 IP 地址。

你的工作单位允许你与网络外部的资源建立 SSH 连接吗?在过去 10 年左右我工作过的大多数地方,只允许连接到批准的供应商 IP。

我当时的做法是使用我的 Linux 笔记本电脑连接到工作场所的 wifi,然后从那里连接回家。

回复 ,作者:斯科特·雅各布森 (未验证)

感谢你的文章,我使用 WinSCP 来访问 unix 机器文件,对于 windows 来说是非常有用的工具,你能推荐一些适用于 linux 系统的好的替代方案吗?

我在我的家庭网络上有一个 Raspberry Pi,我用它来做备份。我在 Raspberry Pi 上运行了 sshd,并在 Pi 上挂载了一个 USB 驱动器作为 /backup。然后我使用 GNOME 的文件管理器将文件夹映射到 Pi 的 /backup over SSH。

只需点击文件管理器中的快捷方式,输入我的(Raspberry Pi)密码,它就可以使用了。这非常简单。而且透明。而且安全。

我使用 Pi 的 /backup 来存储我不希望丢失的东西的第二个副本。

为了方便在你的家庭网络上使用 ssh 和 sftp,你可以为家里的每台设备分配固定的 IP 地址,并将一个列表放在每个设备的 /etc/hosts 文件中。只需复制粘贴同一个列表即可。

这样你就可以使用机器的名称而不是数字来联系另一台机器。我甚至在我的支持 ssh 的智能手机上有一个 hosts 文件,这对于文件传输非常方便,但对于远程更新或关闭家庭 HTPC 也非常方便 ;-)

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.