记录一下如何让家里的电脑 / 服务器能够随时被 SSH 远程登陆访问。话说以前本科的实验室 GPU 服务器只能在内网访问,宿舍离实验室又很远,炎炎烈日,我只能动一动手配置反向代理,让我能在凉爽的宿舍里 SSH 到我实验室的服务器上炼丹。
开启 SSH Server
在非服务器版的 Ubuntu 上,默认是没有 SSH 服务器的,因此需要安装和启用 openssh-server
|
|
安装好之后默认会启动 SSH Server,可以通过命令查看服务状态,显示 Active
应该就是正常启动了
|
|
还需要在防火墙中允许 SSH 的连接
|
|
之后我们需要知道本机在内网中的 IP 地址
|
|
我们会看到有几张不同的网卡,找到你使用的网卡下面诸如 inet 192.168.1.27/24
的一串地址,说明子网的地址即为 192.168.1.27
此时,可以测试一下 SSH 服务器是否设置成功了,在另一台连接了同一个路由器的电脑中用 SSH 连接: $ ssh [email protected]
,不出意外的话已经可以 SSH 进去了。下一步我们需要让它能被其它不在同一网络下的设备访问到。
配置路由器端口转发
如果你的运营商提供了公网 IP,比如 68.175.xxx.xx
,那之后的问题就好办了,我们只需要在路由器上配置端口转发(Port Forwarding),这样就能够 $ ssh [email protected]
来访问 Ubuntu 电脑了。
因路由器的不同,需要在路由器中找到端口转发的设置项,将路由器接收到的 TCP / UDP 的 22 端口转发到子网 192.168.1.27
的 22 端口,也就是将 SSH 的连接直接转到 Ubuntu 机器上。示意图如下:
配置好了之后,将另一台电脑连接其它网络(如手机热点),通过 $ ssh [email protected]
,如果遇到 ssh connection
的错误,可以重启 SSH 服务 $ sudo service ssh restart
配置 frp 反向代理
如果没有公网 IP,或者路由器不支持端口转发,或者像我以前在实验室一样,没有路由器的权限,这时候可以考虑用开源的 frp 配置反向代理。
和之前不一样的是,我们需要一个拥有公网 IP 的云服务器
在服务器端配置 frp 的 server 部分,然后在 Ubuntu 的电脑上配置 frp 的 client 部分,这样就在 Ubuntu 电脑和云服务器之间建立了连接。之后,其它电脑可以通过配置的端口 SSH 访问云服务器,frp 就会将连接转发到 Ubuntu 电脑上的相应端口。详细的配置这里不展开,frp 中文文档 有非常详细的说明。
其它
在 Ubuntu 下,byobu 是非常好用的终端会话管理工具,万一 SSH 断开,你还可以重新连接并恢复之前的会话。
可以参考 How To Install and Use Byobu for Terminal Management on Ubuntu 16.04 的使用介绍。