本文主要是介绍Java使用Jsch与sftp服务器实现ssh免密登录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本次验证是通过jsch配置rsa私钥路径的思路进行的。详细步骤如下:
1、引用依赖jar
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.51</version>
</dependency>
2、代码参考:
//从环境变量或配置文件中读取 目标服务器ip、端口、用户名、私钥路径
String ftpHost = System.getEnv("sftpHost");
String sftpPort= System.getEnv("sftpPort");
String sftpUserName = System.getEnv("sftpUserName");
String sftpPrivatekey= System.getEnv("sftp_privatekey");//建立JSch对象
JSch jsch = new JSch();
Session session = null;
ChannelSftp channelSftp = nulltry{//添加私钥jsch.addIdentity(sftpPrivatekey);session=jsch.getSession(sftpUserName, ftpHost, sftpPort);Properties sessionConfig = new Properties();//SSH 公钥检查机制 no、ask、yessessionConfig.put("StrictHostKeyChecking", "no");session.connect();channelSftp = (ChannelSftp) session.openChannel("sftp"); // 打开SFTP通道channelSftp.connect();//进行操作 如进入指定文件夹channelSftp.cd(path);
}catch (JSchException e) {logger.error("sftp getConnect error : "+e);
}
3、配置私钥的步骤
1、在linux下执行ssh-keygen -t rsa 生成一对对应公私钥。 输入命令后按三下回车。
2、检查~/用户名/.ssh目录下是否有id_rsa、id_rsa.pub、authorized_keys三个文件。
注意:生成文件的目录建议默认,如果没有authorized_keys文件需要手工新建下,或者直接把id_rsa.pub复制为authorized_keys。检查并设置id_rsa、authorized_keys文件的权限为600。
cp id_rsa.pub authorized_keys
chmod 600 id_rsa
chmod 600 authorized_keys
stat –c “%a %n” 文件夹或文件名
3、root用户检查/etc/ssh/sshd_config下面是否有配置HostKey对应的rsa文件路径,如果存在其他rsa结尾的路径,建议把新生成的id_rsa文件的绝对路径配置到sshd_config中,如果没有可以忽略。
注意:修改sshd_config后需要重启sshd服务。
sudo systemctl restart sshd
4、把生成的id_rsa文件放到代码中配置的sftp_privatekey路径下一份。
5、免密登录是否配置成功检查
ssh –i id_rsa绝对路径 sftp用户@sftp地址
感觉各位博主的分享:
<Linux>《OpenSSH 守护进程配置文件sshd_config详解》
Linux免密登录设置(22端口和非默认端口)
详解Java使用Jsch与sftp服务器实现ssh免密登录
linux ssh配置文件和密钥文件
【authorized_keys配置及常见问题】
jsch session(ssh)
这篇关于Java使用Jsch与sftp服务器实现ssh免密登录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!