侧边栏壁纸
博主头像
七哥的技术博客

You got a dream, you gotta to protect it!

  • 累计撰写 85 篇文章
  • 累计创建 76 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

beyond compare通过sftp远程对比文件

admin
2025-02-14 / 0 评论 / 0 点赞 / 32 阅读 / 0 字

对比方式

beyond compare 支持远程文件夹的对比,非常方便,远程对比有几种方式

1、服务端开启 ftp 的方式

服务端开启 ftp 服务,新增 21 端口的监听,beyond compare 通过 ftp 连接到服务端,ftp 是基于明文传输的,因此不是很安全

还有一个升级版本 ftps,即在 ftp 的基础上,通过 SSL/TLS 加密来保护 FTP 通信的协议,相对安全一些

2、使用 sftp 的方式

服务端复用了 ssh 的端口,没有额外开放端口,使用 sftp 的方式可以通过密码连接,也可以通过配置免密连接

免密连接

配置免密连接比密码登录相对安全很多,免密操作和之前提到的是一样的,可以参考 这里

本地环境生成公私钥,将公钥配置到 ubuntu 中,经过测试,本地可以通过 ssh 免密连接到 ubuntu

本地测试 ssh 的连接命令

ssh -v -i ~/.ssh/id_rsa [email protected]  

在这里需要将 /etc/ssh/sshd_config 的 PubkeyAuthentication 配置设置为 yes ,然后重启生效

配置 beyond compare

在 beyond compare 的 “工具” -> “配置档” 中,添加 sftp 的配置(复用 ssh 的端口,不用开启新的 ftp 端口)

配置指定私钥文件为前面生成经过验证的私钥

但是在连接的时候依旧提示要输入密码(没有更多的认证方式可用)

ssh服务端日志

/etc/ssh/sshd_config 增加日志级别 LogLevel DEBUG3 ,重启生效 systemctl restart ssh

再次通过 beyond compare 尝试 sftp 连接 ubuntu,查看服务端打印日志如下

这里看到从 method 从 none 直接走到了 password 认证,直接跳过了 publickey 的认证方式

正常流程应该是有 publickey 的环节,失败了才可能走到 password 认证

格式转换

经过了解,问题就出在私钥的格式上,windows下的私钥是通过 cygwin 下的 ssh-keygen 命令生成的

生成的私钥格式是基于 OpenSSH 格式的,而 beyond compare 要求的应该是传统 PEM 格式

初始生成的私钥格式文件开始有 OPENSSH 字样

使用命令 ssh-keygen -p -m PEM -f ~/.ssh/id_rsa 将前面的私钥转换为 PEM 格式

转换后的私钥文件的前面显示为 RSA 字样

另外 ubuntu 上的 /etc/ssh/sshd_config 配置还需要增加接受 RSA 的格式验证,重启 ssh 使配置生效

PubkeyAcceptedAlgorithms +ssh-rsa

使用转换后格式的私钥,beyond compare 就可以通过 sftp 连接 ubuntu 了

也可以在生成公私钥的时候,通过增加 -m 参数,来实现一步直接生成 PEM 格式的密钥,这样就不需要进行转换了

ssh-keygen -t rsa -P '' -m PEM

回车换行

对比文件之后,很重要的一个操作就是对文件进行复制同步

在 linux/windows 跨系统的时候,回车换行是一个绕不开的话题,在 beyond compare 中默认会自动转换

大部分情况下这不会有问题,但是自动转换会导致文件的 md5 发生变化,有时候需要禁止转换

在 beyond compare 的配置页面上,选择 “传输”,勾选 “二进制” 禁止转换

0

评论区