LittleFox

  • 博客
  • 收藏
  • 关于
  • 订阅本站
LittleFox
Simple & Naïve
  1. 首页
  2. 挨踢
  3. 正文

拯救一台禁止联网的小鸡

2021年3月23日 147点热度 0人点赞 0条评论

因为工作原因,经常需要用一台远程服务器,之前一直可以联网,就通过rclone备份数据,git pull同步文件。直到某一天,数据中心以安全为由把网给掐了,只留下ssh端口可以通过跳板机中转连接,给我整傻眼了。不过经过不懈努力,终于曲线救国实现了差不多的功能,这里记录一下。

Rclone备份

由于只有ssh可以用嘛,我没有找到建立反向ssh连接的方法,所以本机中转可以PASS掉了,只能依靠本机到远程服务器的连接实现,于是我想到了sshfs,即把远程服务器通过ssh挂载到本地。先安装一下(所有操作均在Ubuntu 20.04实现):

$ sudo apt install fuse sshfs

假设你已经配置好了ssh连接,使用下面的方法挂载远程目录到/mnt/remote(以pubkey登录为例,<>圈起来的部分根据实际修改):

$ sudo mkdir /mnt/remote
$ sudo sshfs -p <PORT> <USERNAME>@<REMOTE_HOST>:<DIR> /mnt/remote -o IdentityFile=<PRIV_KEY> -o allow_other

在/mnt/remote应该可以看到远程服务器的文件,然后就可以用rclone备份了:

$ rclone sync /mnt/remote <RCLONE_HOST>:<DIR> --ignore-existing --progress

测试没问题的话,写个脚本放cron里就可以了,sshfs偶尔会掉线,脚本里最好先加个判定。

git pull

同步文件同样依赖sshfs,原理上讲很简单,但是实操中遇到了很多问题。比如说,中转节点做了负载均衡,每次连接的时候都要接受新密钥,解决方法也比较简单,在~/.ssh/config里加入两行即可,总的结构是这样的:

Host <HOSTNAME>
 HostName <REMOTE_HOST>
 Port <PORT>
 User <USERNAME>
 IdentityFile <PRIV_KEY>
 StrictHostKeyChecking no 
 UserKnownHostsFile /dev/null

然后ssh <HOSTNAME>应该就可以跳过了,当然这个操作很不安全,能不使用还是不要使用了。

另外一个问题是我用来操作的小鸡在国内,访问github丢包能丢到90%,基本不可用,参照这篇文章修改/etc/hosts即可,之后用sudo systemd-resolve --flush-caches刷新缓存,就快很多了。至于如何获取合适的IP,如果你的小鸡可以用远程桌面,按照文中操作即可,不能的话我们还有万能的curl(以github.com为例):

$ curl https://github.com.ipaddress.com/ > github.html

然后把github.html下载下来,在本机打开就看到IP了。

同步的操作就变成了:

$ git pull
$ rclone sync <LOCAL_DIR> /mnt/remote/<DIR> --checksum --progress

理论上讲也可以git clone在sshfs挂载的远程目录下,然后直接git pull就好了,但是为了稳妥起见我还是在本地中转了一下。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: VPS
最后更新:2021年5月12日

Fox

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

公告

由于主题和插件冲突,暂时关闭了评论的第三方登录功能。

分类
  • 挨踢 / 39篇
  • 日常 / 2篇
  • 随想 / 8篇
  • 默认分类 / 1篇

COPYRIGHT © 2022 littlefox.me. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang