Linux 中的 SSH 入门
本教程旨在为您提供一些有关设置和使用 ssh 与远程系统交互的基本知识。
感谢我们生活的互联世界,您不再需要物理访问您的服务器。您的服务器可以位于世界任何地方,您可以从本地计算机连接到它。
为此目的开发了许多协议和工具。其中包括 telnet 和 ssh。出于安全考虑,Telnet 不是首选。另一方面,ssh 是安全连接到远程系统的流行方式。
在本文中,我将介绍 Linux 用户必须了解的一些有用的命令和工具,以便通过 ssh 使用远程系统及其资源。
请注意,您在个人本地 Linux 系统上运行的大多数命令也应该在远程系统上可用(例如 ls、cat、cd 命令等)。但与任何 Linux/UNIX 系统一样,运行它们取决于分配给远程用户的权限。
什么是 SSH?
ssh 或安全 shell 是一种网络协议,用于通过网络安全地操作网络服务。它使用加密标准来安全地连接和登录远程系统。
它在远程系统中存储公钥,在客户端系统中存储私钥。这些密钥是在数学上成对生成的。当两者都应用于双变量函数时,它将产生一个值,该值将用于检查该对是否有效或无效。这是最简单的解释。要了解更多信息,请参阅此页面。
使用 SSH 的示例
让我们开始设置 ssh 和非常酷的用例。
生成 ssh 密钥
GitHub 和 Heroku 等网站要求您提供 ssh 公钥,以便您无需输入密码即可推送/部署代码,而您不需要输入密码没有这样的密钥对吗?不用担心。您可以使用以下命令生成此类 ssh 密钥对:
ssh-keygen
它将提示输入密钥位置(保存密钥的位置)和密码(即密码)。密码是可选的。
默认情况下,ssh 密钥存储在主目录下的 .ssh 目录中。
如果密钥位置是DIR_PATH/keypairforssh,则会有两个文件
DIR_PATH/ssh 密钥对
DIR_PATH/keypairforssh.pub
1 是私钥文件,不得与任何人共享
2 是公钥文件,可以与远程系统(通过其他可信通信方式,例如邮件、物理传输和其他安全通信工具)和Github、Heroku等服务共享各自的用例。请务必彻底检查您要连接的服务。
将私钥添加到密钥代理
创建密钥对后,它仅作为两个文件的集合存在。为了连接到远程系统,必须使用私钥。因此,人们应该告知此 DIR_PATH/keypairforssh 是私钥。
这是由
ssh-add keylocation
在我们的例子中,它是
ssh-add DIR_PATH/keypairforssh
通过 SSH 连接到远程主机
如果私钥和公钥位于正确的位置,那么您可以通过这种方式连接到系统。
ssh [username]@hostname
其中用户名应该是远程系统上的有效用户,主机名是 DNS 可识别的或 IP 地址,以便 ssh 可以联系远程系统并请求连接。
例如,要使用用户名“seeni”连接到名为“linux”的系统,请使用:
ssh seeni@linux
如前所述,上述命令使用本地系统上的私钥和远程系统上的公钥,并验证这些是有效的对。当且仅当密钥对有效时它才允许登录,并生成一个 shell(类型取决于远程系统上用户的配置)供您使用。您可以像使用本地系统一样使用远程系统。
假设私钥没有添加到密钥代理中,那么可以如下进行ssh登录。
ssh -i /path/to/private/key/file username@hostname
密钥对的这种检查通常进行一次。 ssh 将远程主机添加到授权主机列表中以供将来使用。
在客户端和远程系统之间复制文件
scp 命令是构建在 ssh 之上的工具。它允许用户将文件和目录从远程复制到客户端,反之亦然。
由于 scp 命令使用 ssh,因此它需要与 ssh 相同的要求。这意味着公钥应该位于远程系统上,私钥应该位于本地系统上。
scp DIR_PATH_1 DIR_PATH_2
其中 DIR_PATH_1/DIR_PATH_2 都是远程或本地文件系统路径。例如,要将 ~/Documents/documentForLinux.txt 传输到 'linuxHandbook 的 /home/seeni/Documents 目录
scp ~/Documents/documentForLinux.txt seeni@linux:~/Documents
要反向复制同一文件,
scp seeni@linux:~/Documents/documentForLinux.txt ~/Documents
挂载远程文件系统或目录
将远程系统目录挂载到客户端,sshfs 就是为此特定目的而开发的工具。
sshfs name@server:/path/to/remote/folder /path/to/local/mount/point
上面的命令是完全直观的。这里,“name”是远程系统接受的用户名,服务器是远程“主机名”。
在某些系统中,sshfs可能不可用,如果需要,请安装它。
提示:nohup 命令允许您在断开 SSH 连接后继续运行命令。
结论
恭喜你,你确实坚持到了最后。我希望这篇文章涵盖了与 ssh 相关的所有基本命令和工具。这些工具足以开始使用 ssh 进行远程计算。
在相关文章中,您可以了解 tmate。它是一个允许您通过 SSH 共享终端会话的工具。
希望您觉得这篇文章有用。如果您有任何建议,请随时在下面的评论部分中提出。