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 这个地址,就能与家里的服务器连通。

Linux 教程 Linux 用户 Linux 基础命令 Linux 文件权限 Linux 文件查找 Linux 文件归档 Linux vim Linux 管道和重定向 Linux 进程 Linux 运行状态 Linux 服务管理 Linux 定时任务 Linux 磁盘 Linux LVM Linux 网络配置 Linux 软件管理 Linux iptables Linux SSH Linux curl