如何在家庭网络上使用 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
Greg 是肯塔基州路易斯维尔的一位退休神经科医生,他对计算机和编程有着长期的兴趣,从 1960 年代的 Fortran IV 开始。当 Linux 和开源软件出现时,它点燃了他学习更多知识的决心,并最终做出贡献。他是 Scribus 团队的成员。

7 条评论

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

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

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

你的工作场所允许你建立到非网络资源的 SSH 连接吗?在过去 10 年左右的时间里,我工作过的大多数地方只允许连接到批准的供应商 IP。

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

回复 作者 Scott Jacobson (未验证)

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

我的家庭网络上有一台 Raspberry Pi,我使用它的一个用途是备份。我在 Raspberry Pi 上运行了 sshd,并在 Pi 上挂载了一个 USB 驱动器作为 /backup。然后我使用 GNOME 的文件管理器将文件夹映射到 Pi 的 /backup,通过 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.