我经常使用 SSH。我每天都会登录到多个服务器和 Pis (它们可能和我处在同一个房间,也可能通过互联网连接)。我需要访问许多设备,并且访问的要求各不相同,因此除了使用各种 SSH/SCP 命令选项之外,我还必须维护一个包含所有连接详细信息的配置文件。
随着时间的推移,我想出了一些省时技巧和工具,你可能会觉得有用。
SSH 密钥
SSH 密钥是一种无需密码即可验证 SSH 连接的方法,可以加快你的访问速度,或者作为一种安全措施(如果你关闭密码访问并确保只允许授权密钥)。要创建 SSH 密钥,请运行以下命令
$ ssh-keygen
这将在 ~/.ssh/ 中创建一个密钥对(一个公钥和一个私钥)。将私钥 (id_rsa) 保存在 PC 上,切勿共享。你可以与他人共享公钥 (id_rsa.pub) 或将其放置在其他服务器上。
ssh-copy-id
如果我在家或工作中操作 Pi,我倾向于将 SSH 设置保留为默认设置,因为我不关心内部受信任网络上的安全性,并且我通常将我的 SSH 密钥复制到 Pi,以避免每次都必须使用密码进行身份验证。为此,我使用 ssh-copy-id 命令将其复制到 Pi。这会自动将你的密钥添加到 Pi
$ ssh-copy-id pi@192.168.1.20
在生产服务器上,我倾向于关闭密码身份验证,只允许授权的 SSH 密钥。
ssh-import-id
另一个类似的工具是 ssh-import-id。你可以使用它通过从 GitHub 导入密钥来授予你(或其他人)访问计算机或服务器的权限。例如,我已经将我的各种 SSH 密钥注册到我的 GitHub 帐户,因此我可以无需密码即可推送到 GitHub。这些公钥是可用的,因此 ssh-import-id 可以使用它们从我的任何计算机授权我
$ ssh-import-id gh:bennuttall
我也可以使用它来授予其他人访问服务器的权限,而无需向他们索要密钥
$ ssh-import-id gh:waveform80
storm
我还使用一个名为 Storm 的工具,它可以帮助你将 SSH 连接添加到 SSH 配置中,这样你就不必记住所有连接。 你可以使用 pip 安装它
$ sudo pip3 install stormssh
然后,你可以使用以下命令将 SSH 连接添加到你的配置中
$ storm add pi3 pi@192.168.1.20
然后你可以直接使用 ssh pi3 来获取访问权限。 类似地,scp file.txt pi3: 或者 sshfs pi pi3:
你还可以使用更多 SSH 选项,例如端口号
$ storm add pi3 pi@192.168.1.20:2000
你可以使用 Storm 的 文档轻松地列出、搜索和编辑已保存的连接。 Storm 实际上所做的只是管理 ~/.ssh/config 中的 ssh 配置文件中的条目。一旦你了解了这些条目的存储方式,你可能会选择手动编辑它们。config 中的示例连接如下所示
Host pi3
user pi
hostname 192.168.1.20
port 22
结论
SSH 是系统管理的重要工具,从 Raspberry Pi 到最大的云基础设施都是如此。熟悉密钥管理将永远有用。你还有其他 SSH 技巧可以补充吗?我很乐意让你在评论中分享它们。
3 条评论