如何远程登录家里的Ubuntu电脑(命令行模式)?

如果能实现的话,我就能在任何电脑上登录自己家的电脑了。例如vim和其他命令可以在不外带电脑的前提下用到。具体是如何实现?
关注者
421
被浏览
25374

25 个回答

让我来,ssh隧道什么的真心太复杂,如果没有外网IP,动态域名都是没用的,所以ngrok出来了
ngrok - secure introspectable tunnels to localhost
文档: ngrok - secure introspectable tunnels to localhost
一点都不复杂,你需要做的只是下载程序然后
ngrok -proto=tcp 22
这个不能后台执行,你可以配合tmux 或则
ngrok -log=stdout -proto=tcp 22 &
-------------------------------------
1. 对于你的情况,你需要在你家里的Ubuntu系统上面安装openssh-server(sshd)记下sshd监听的端口(默认是22)
2. 在你的Ubuntu上下载ngrok(ngrok.com/), 然后运行
ngrok -proto=tcp 22
你对得到下图的运行结果
3. 然后你在外网的机器上
ssh user@ngrok.com -p36756 
注意上面的user是你ubuntu系统的用户(可以是root或则你自己的用户),然后会提示你输入密码,就是你本机上user的密码
这时我在我的aws(外网)ssh我刚才那台内网机器的结果。

全部过程跟路由器没有一点关系


ngrok默认使用的是ngrok.com的服务器(在国外),肯定会有点慢,如果你有外网的服务器,可以用他提供的源码编译server端(ngrok/DEVELOPMENT.md at master · inconshreveable/ngrok · GitHub

最后,但愿楼主不要这么做,你电脑一直开着费电啊。为减少地球的消耗做点贡献吧。
方法一:
1. 确保你拥有公网 IP;
2. 有一台支持 DDNS 的路由器;
3. 搞一个免费的动态域名,比如 3322 啥的,设置到路由器上;
4. 在路由器上做一个端口转发,比如来自 WAN 的 XXXX 端口转发到内网的 a.b.c.d 的 22 端口,a.b.c.d 是你电脑的内网 IP 地址;
5. 在公网上用 ssh 域名 -p XXXX 来访问。

(当然,如果你电脑直接连入公网,就不需要路由器了,直接在你电脑上设置 DDNS)

方法二:
1. 搞一个 VPS;
2. 在上面架设一个 VPN,并设置允许连入 VPN 的客户端之间通讯;
3. 两台电脑分别连入 VPN。
为什么?