要在您每次重新启动计算机时启动SSH守护程序,请使用以下命令:
sudo systemctl enable sshd
在远程计算机上,我们使用以下命令。
-R(反向)选项告诉ssh必须在远程计算机上创建新的SSH会话。 “43022:LOCALHOST:22”告诉SSH,本地计算机上端口43022的连接请求应该转发到远程计算机上的端口22。之所以选择端口43022,是因为它被列为未分配。这不是一个特殊的号码。 dave@sulaco.local是远程计算机将在本地计算机上连接到的用户帐户。
ssh -R 43022:localhost:22 dave@sulaco.local
您可能会收到一条警告,提示您以前从未连接过本地计算机。或者,当连接详细信息添加到已识别的SSH主机列表中时,您可能会看到一条警告。您看到的内容(如果有的话)取决于是否已从远程计算机连接到本地计算机。
系统将提示您输入用于连接到本地计算机的帐户密码。
请注意,连接完成后,命令提示符从dave@Howtogeek更改为dave@sulaco。
我们现在已从远程计算机连接到本地计算机。这意味着我们可以向它发出命令。让我们使用who命令查看本地计算机上的登录。
who
我们可以看到,拥有名为Dave的用户帐户的用户已经登录到本地计算机,并且远程计算机已经从IP地址192.168.4.25连接(使用相同的用户凭据)。
相关:如何在Linux中确定当前用户帐户
正在连接到远程计算机
因为来自远程计算机的连接成功,并且它正在侦听连接,所以我们可以尝试从本地计算机连接到远程计算机。
远程计算机正在侦听本地计算机上的端口43022。因此,有些与直觉相反的是,为了建立到远程计算机的连接,我们要求SSH在端口43022上连接本地计算机。该连接请求将被转发到远程计算机。
ssh localhost -p 43022
系统提示我们输入用户帐户密码,然后从本地计算机连接到远程计算机。我们的Manjaro电脑高兴地说,“欢迎使用Ubuntu 18.04.2 LTS”。
请注意,命令提示符已从dave@sulaco更改为dave@Howtogeek。我们已经实现了与难以访问的远程计算机建立SSH连接的目标。
将SSH与密钥一起使用
为了更方便地从远程计算机连接到本地计算机,我们可以设置SSH密钥。
在远程计算机上,键入以下命令:
ssh-keygen
系统将提示您输入密码。您可以按Enter键忽略密码问题,但不建议这样做。这意味着远程计算机上的任何人都可以与您的本地计算机建立SSH连接,而无需询问密码。
由符号分隔的三四个单词将构成一个健壮的密码短语。
将生成您的SSH密钥。
我们需要将公钥传输到本地计算机。使用此命令:
ssh-copy-id dave@sulaco.local
系统将提示您输入要登录的用户帐户的密码,在本例中为dave@sulaco.local。
当您第一次请求从远程计算机连接到本地计算机时,您必须提供密码。在以后的连接请求中,只要终端窗口保持打开状态,您就不必再次输入密码。
相关:如何从Linux Shell创建和安装SSH密钥
并不是所有的隧道都很可怕
有些隧道可能是黑暗和扭曲的,但是如果您能够保持头脑中远程计算机和本地计算机之间的关系,反向SSH隧道就不会太难导航。那就把它倒过来。