1. 程式人生 > 程式設計 >Java連線Linux伺服器過程分析(附程式碼)

Java連線Linux伺服器過程分析(附程式碼)

這篇文章主要介紹了Java連線Linux伺服器過程分析(附程式碼),文中通過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

pom檔案新增依賴

<!-- https://mvnrepository.com/artifact/ch.ethz.ganymed/ganymed-ssh2 -->
<dependency>
  <groupId>ch.ethz.ganymed</groupId>
  <artifactId>ganymed-ssh2</artifactId>
  <version>build210</version>
</dependency>

一、伺服器登陸公鑰祕鑰設定

步驟如下:

1、本機生成私鑰公鑰檔案

本機進入到.ssh目錄下,c:/Users/zhufengyan/.ssh, 在該目錄下執行

$ ssh-keygen -t rsa

然後一路回車即可。

說明:如果原先./ssh目錄下有id_rsa id_rsa.pub這兩個檔案,以上的一路回車操作會生成新的id_rsa id_rsa.pub來覆蓋原來的key檔案。

2、將本地生成的公鑰資訊放到伺服器

將本地生成的公鑰資訊放置到需要訪問的伺服器,操作如下:

本地獲取公鑰資訊,複製資訊

Xshell登入伺服器,加入你有root許可權,

Cd /root/.ssh

Vi authorized_keys

將以上覆制的內容貼上到檔案尾部。Ok完成。

說明:假設你的伺服器上沒有authorized_keys這個檔案,那麼就自己建立一個,建立完後將公鑰資訊貼上到這個檔案中,儲存,還需要進行授權,chmod 600 authorized_keys。

另外:ssh公鑰生效需滿足至少下面兩個條件:
1 .ssh目錄的許可權必須是700;
2 .ssh/authorized_keys檔案許可權必須是600;

二、連線伺服器

步驟如下

1、 將私鑰檔案放到專案的resources目錄下

則程式碼中訪問的路徑是

private String privateKeypath = "src/main/resources/sshkey/id_rsa";

2、 程式碼實現連線伺服器

/**
 * 建立與伺服器的連線
 * @param host 伺服器IP String host = "192.168.178.1";
 * @param port 埠  int port = 22;(預設的,直接用即可)
 * @param userName 登入伺服器的使用者名稱(work)
 * @param password 登入伺服器的密碼(為空就行)
 * @param privateKeyFile 與伺服器公鑰對應的私鑰檔案 String pubkeypath = "src/main/resources/sshkey/id_rsa";
 * @return 返回登入的連線, 在使用的最後一定記得關閉connect資源
 * @throws IOException
 */
 public static Connection getSSHConnection(String host,int port,String userName,String password,String privateKeyFile) throws IOException {
  Connection connection = new Connection(host,port);
  connection.connect();
  File file = new File(privateKeyFile);
  boolean b = connection.authenticateWithPublicKey(userName,file,password);
  if (b){
    return connection;
  }else {
    System.out.println("登入連線失敗,請檢查使用者名稱、密碼、私鑰檔案");
    return null;
  }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。