blog icon indicating copy to clipboard operation
blog copied to clipboard

最好的远程编辑方案 : SFTP

Open chunpu opened this issue 7 years ago • 5 comments

写代码难免会碰到需要编辑服务器上的文件

传统的做法是 ssh 登录, 然后使用 vim 去编辑文件

这样的问题是太过麻烦, 无法使用像 sublime, vscode 这样强有力的编辑器, 而且传输文件还得用其他命令

之前想过很多方法来远程编辑文件, 比如 ftp, sshfs, samba, rsync, rmate

sftp 最大的优势

sftp 对服务器没有伤害

sftp 属于 ssh, 只要你可以使用 ssh 登录服务器, 就可以使用 sftp, 无需另外在服务器上安装和启动 ftp

这是非常关键的一个优势, ftp, samba, rmate 都需要专门在服务器启动服务, 但很多服务器开发者是没有权限开这样的服务的

而且如果是线上机器的话, 这种服务还要专门做权限控制, 非常麻烦, 因此 sftp 在这方面优势巨大

sublime 的 sftp 工作模式

安装 sftp 插件

对于项目来说 sftp 妥妥应该使用 sidebar 模式, 这种模式可以让我们像编辑本地项目一样编辑远程项目, 可以做项目查找等操作

参考文档在这里

https://wbond.net/sublime_packages/sftp/sidebar#SublimeSFTP

sftp 工作流

  1. 每次打开一个文件, sftp 插件都会自动更新远程文件至本地
  2. 每次保存一个文件, sftp 插件都会自动上传到 remote
  3. 但新文件还是需要我们自己手动右键文件夹
    1. 选择 SFTP/FTP
    2. 选择 Sync Remote -> Local

更复杂 sftp 使用可以参照这里

sftp 的更新是通过对比 local 和 remote 的 改动时间(modification times) 来确定谁是最新的改动的

注意, 直接选择双向同步(Sync Both Directions)是不会删除文件的

samba

sftp 有个缺点是需要手动同步文件, samba 则不需要

但 samba 这种映射文件的方式也有明显的缺点, 如果网络不稳定, 每次保存都会是编辑器卡顿, 因为编辑器分不清自己是在 samba 文件系统还是在本地文件系统上工作

手动同步文件有一个优点是安全, 可控

samba 使用 445 和 139 端口,经常被运营商和平台商干掉,而 ssh 端口不可能被干掉, 之前 samba 还被爆过漏洞

ftp

ftp 远程编辑被众多编辑器或者插件支持

  • Notepad++
  • EditPlus
  • Sublime Text
  • UltraEdit
  • Atom

但需要安装 ftp server 和另外控制权限实在难以容忍

sshfs

windows sshfs 安装过于麻烦

  1. 先安装 dokan
  2. 再安装 win-sshfs

linux 略显简单

sshfs -oIdentityFile=~/.ssh/mykey.id_rsa root@host:/home/public ~/workspace

unmount -f ~/workspace

sshfs 有性能问题

rmate

rmate 需要服务端操作而且只能编辑一个文件, 太傻了, 直接 pass

chunpu avatar Aug 13 '17 09:08 chunpu

66666

yutingzhao1991 avatar Aug 15 '17 01:08 yutingzhao1991

6666666,试一下

fdandan avatar Aug 25 '17 01:08 fdandan

@fdandan 你的 id 太萌了冯蛋蛋

chunpu avatar Aug 25 '17 08:08 chunpu

@chunpu 好久没发文了,终于重出江湖了啊

yutingzhao1991 avatar Aug 25 '17 08:08 yutingzhao1991

@chunpu 请教您一个问题。看到“sftp 属于 ssh, 只要你可以使用 ssh 登录服务器, 就可以使用 sftp”这句话,我想问问,由于我们公司需要加一个代理才能成功ssh到服务器,请问这种情况下,怎么利用sftp实现远程编辑,不知道在sftp中怎么设置这个代理?拜谢!

aihuoye avatar Aug 02 '19 12:08 aihuoye