云计算百科
云计算领域专业知识百科平台

java代码sftp免密登录_详解Java使用Jsch与sftp服务器实现ssh免密登录

1. 准备工作
  • 生成SSH密钥对:在客户端机器上生成一对SSH密钥,包括一个私钥和一个公钥。可以使用ssh-keygen -t rsa命令在终端中生成。

  • 上传公钥到SFTP服务器:将生成的公钥(如id_rsa.pub)添加到SFTP服务器上对应用户的~/.ssh/authorized_keys文件中。

  • 设置文件权限:确保服务器上的~/.ssh目录权限为700,authorized_keys文件权限为600。

  • 引入JSch依赖:在Java项目中引入JSch库的依赖,以便使用其提供的SSH和SFTP功能。

    • import com.jcraft.jsch.ChannelSftp;
      import com.jcraft.jsch.JSch;
      import com.jcraft.jsch.Session;
      import java.util.Properties;

      public class SftpUtil {
          private static final String SFTP_HOST = "your_sftp_host"; // SFTP服务器地址
          private static final int SFTP_PORT = 22; // SFTP服务器端口号,默认为22
          private static final String SFTP_USER = "your_sftp_user"; // SFTP用户名
          private static final String SFTP_PRIVATE_KEY_PATH = "path_to_your_private_key"; // 私钥文件路径

          public static void main(String[] args) {
              JSch jsch = new JSch(); // 创建JSch对象
              Session session = null;
              ChannelSftp channelSftp = null;

              try {
                  // 添加私钥,用于免密登录
                  jsch.addIdentity(SFTP_PRIVATE_KEY_PATH);

                  // 创建会话
                  session = jsch.getSession(SFTP_USER, SFTP_HOST, SFTP_PORT);
                         // 设置会话配置,关闭严格主机密钥检查

      ​​​​​​​           session.setConfig(config);\\
                  // 连接服务器
                  session.connect();

                  // 打开SFTP通道
                  channelSftp = (ChannelSftp) session.openChannel("sftp");
                  channelSftp.connect();

                  // 进行SFTP操作,例如上传文件、下载文件等
                  // 这里可以添加你的具体业务逻辑

                  System.out.println("SFTP免密登录成功!");
              } catch (Exception e) {
                  e.printStackTrace();
              } finally {
                  // 关闭通道和会话
                  if (channelSftp != null && channelSftp.isConnected()) {
                      channelSftp.disconnect();
                  }
                  if (session != null && session.isConnected()) {
                      session.disconnect();
                  }
              }
          }
      }

                  Properties config = new Properties();
                  config.put("StrictHostKeyChecking", "no");          config.put("PreferredAuthentications", "publickey,keyboard-interactive,password");                    config.put("PreferredAuthentications", "publickey,keyboard-interactive,password");

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » java代码sftp免密登录_详解Java使用Jsch与sftp服务器实现ssh免密登录
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!