Linux SSH

ssh 协议

ssh 是一个加密的应用层的协议,在当前互联网时代,它被广泛的应用。比如我们使用 puttyxshell 等软件连接上 Linux 的终端,其实它背后的通信,使用的就是 ssh 协议。还有很多协议,也是基于 ssh 的实现,比较有名的 openSSH,我们连接到 github ... 等等的背后都是 ssh,所有学会这个很重要。


ssh 命令

这个命令能让我们使用 ssh 协议连接到远程 Linux 主机。

ssh 用户名@IP地址 // 例如 ssh root@0.0.0.0,之后根据提示输入密码就可以

autossh

使用 ssh 连接到远程终端,有时会因为网络不稳定而断开连接,使用 autossh 这个工具可以解决我们这个问题。它会在建立一个新的端口然后监测我们的服务,如果发生我们的服务断开了,会自动修复。

autossh -M 5678 用户名@IP // 开启端口:5678\监听ssh状态

公钥

还有一个问题,我们每次使用 ssh 连接到远程服务器,都需要密码,省略这个步骤,可以通过给目标服务器配置一个 公钥。就像我们初次使用 Github,它也要求我们要配置一个 ssh 都公钥一样,之后就可以省略密码。

$ ssh-keygen // 生成公钥

生成的文件在 ~/.ssh 这个目录里面,id_rsa.pub 是公钥,id_rsa 是私钥。我们打开 id_rsa.pub,把里面都信息复制到目标服务器的 ~/.ssh/authorized_keys,这样就能获得目标服务器的信任。


隧道

ssh 协议还有另外一个特别好用到功能 隧道,它能帮助我们代理转发些东西。举个容易理解到例子,一般我们的宽带是没有提供外网IP的,这就说明,我们是不能通过网络访问到我们家里到电脑,但是如果利用 ssh 隧道,就能做到这一点。但完成这个步骤的前提,必须是要有一个可以访问外网的第三方的主机。通信的流程是这样的,外网 - 第三方主机 - 家里的网络。这台第三方的主机就相当于一个跳板,作为我们访问家里的代理服务器。

autossh -f -N -C -R 0.0.0.0:2222:127.0.0.1:22 root@1.2.3.4

上面这条命令,通过家里的服务器去执行,我们使用 autossh 保证了连接不被断开。它的意思是,ssh 到 1.2.3.4:2222 这个地址,就能与家里的服务器连通。

更多教程 HTML5 教程 CSS3 教程 JavaScript 教程 JQuery 教程 React.js 教程 Node.js 教程 Koa2 教程 Python 教程 Linux 教程