公司报表要用SFTP SSH协议信任免密码上传到指定报表服务器...

  • 坑1、FTP与SFTP不等同于HTTP与HTTPS;
  • 坑2、免密码不是简单的不设置密码在路由开白名单IP;
  • 坑3、freeSSHd.exe搭建SFTP服务器就这么简单不要想那么复杂;
  • 坑4、puttygen.exe生成密钥对为什么两天两夜不前进;
  • 坑5、拿到的公钥为什么不对;
  • 坑6、拿到的私钥为什么又不对;

到此只想深深的吸口气感慨一句“好怀念那些年在大树下玩耍的日子”。

1、坑1可以直接阅读各种百科有详细的教程;坑2完全是被同事误导不提也罢。

2、SFTP服务器的搭建

  1.下载freeSSHd一键安装好后,检查下进程与服务把FreeSSHDService.exe进程关闭,服务FreeSSHDService先停止。

  2.管理员运行FreeSSHd,选择Users标签添加用户,这里的login名字很重要后面创建公钥要用

java sftp登录多久失效 java sftp免密登录_服务器

 

  3.开启日志

java sftp登录多久失效 java sftp免密登录_服务器_02

  4.SHH视情况修改,如:端口被占用等都可以自行修改

java sftp登录多久失效 java sftp免密登录_密钥对_03

  5.方便公钥管理可以加一级目录

java sftp登录多久失效 java sftp免密登录_运维_04

  6.上传目录可以更改个

java sftp登录多久失效 java sftp免密登录_运维_05

  7.点击应用并去Server status启动服务(多点几次没毛病)

java sftp登录多久失效 java sftp免密登录_服务器_06

到此SFTP服务器就设置成功了。真的成功了一点不复杂。

 3、生成密钥对,生成密钥对有很多方式这里用puttygen.exe(网上搜索PuTTY)生成,因为简单方便,不粗心根本不会像我一样开机傻等了两天两夜。

java sftp登录多久失效 java sftp免密登录_服务器_07

java sftp登录多久失效 java sftp免密登录_java sftp登录多久失效_08

java sftp登录多久失效 java sftp免密登录_密钥对_09

保存私钥1

java sftp登录多久失效 java sftp免密登录_密钥对_10

保存密钥2

java sftp登录多久失效 java sftp免密登录_密钥对_11

保存公钥1(不会用到)

java sftp登录多久失效 java sftp免密登录_运维_12

保存公钥2,选择公钥字符串复制到文件夹下建立一个文本文件并命名为SFTP服务器上创建的登录名(这里用的是test1)并去除后缀。

java sftp登录多久失效 java sftp免密登录_上传_13

java sftp登录多久失效 java sftp免密登录_运维_14

到此密钥对获取完成。

坑5、拿到的公钥为什么不对?

答:因为SFTP服务器上公钥要使用 保存公钥2 的形式。为此比较下两个公钥有什么不一样:

java sftp登录多久失效 java sftp免密登录_java sftp登录多久失效_15

接着把公钥2(test1)传到SFTP服务器公钥管理目录

java sftp登录多久失效 java sftp免密登录_服务器_16

java sftp登录多久失效 java sftp免密登录_服务器_17

这时用SFTP连接工具链接SFTP服务,连接私钥用 保存私钥1 就能链接上了。

java sftp登录多久失效 java sftp免密登录_服务器_18

到此就完了吗?没有完全没有,我们的目的是在代码里面生成报表,再用代码上传,这就出现了

坑6、拿到的私钥为什么又不对?

答:先看上面保存私钥1与保存私钥2的区别

java sftp登录多久失效 java sftp免密登录_密钥对_19

PCSK与PEM上,在代码里面我们要用到PEM形式的私钥来进行连接,连接类库推荐用SSH.NET

java sftp登录多久失效 java sftp免密登录_上传_20

到此完成。