SFtp验证

如题所述

第1个回答  2022-07-08
1. ip账号密码

2.密钥key方式

通过秘钥方式进行sftp连接,需要在本地生成秘钥:ssh-keygen,然后一路回车或两次输入passphrase。接着在.ssh文件夹下使用命令 ssh-copy-id 账号@118.XX.XX.XX(目标服务器ip),将公钥加入到目标服务器的authorized_keys中,接着登录服务器进行.ssh目录,chmod 664 authorized_keys,赋予权限。如果是mac系统可以使用ssh-keygen -e。

秘钥文件路径keyFile是本地的私钥路径(包含文件名)。下面简单验证一下:

我保持本地私钥文件位置正确的情况下,改变服务器的私钥位置或名字,仍能够正常访问。

在秘钥验证时,我将keyFile路径设置为一个本地不存在的文件的路径,报错如下:

我再把参数keyFile变为一个本地存在的文件,但不是私钥文件位置。报错如下:

我将passphrase参数设置任意一个值,还是可以成功连接。这一点很疑惑,不知道为啥,但成功了就高兴。

 properties.put("StrictHostKeyChecking", "no");StrictHostKeyChecking有三种选项,no、ask、yes。这三个选项代表了不同的级别,yes最高,no最低。在ssh访问服务器的过程中,会将服务器的公钥保存到本地的~/.ssh/known_hosts中,每次访问服务器都会检查此公钥是否发生变化,如果发生了变化,则这三个选项的设置如下:

no:自动将服务器新的公钥保存到known_hosts中,并发出一个警告;

ask:拒绝连接到服务器,且发出一个警告;

yes:拒绝连接到服务器,且不发出警告;

一般在测试环境下使用no,生产环境使用yes或ask。

参考: https://www.jianshu.com/p/090792e12518

https://juejin.im/post/6844904004493770759