[JAVA] WAS 에서 다른 Server의 접근하여 명령어 사용하기

김명래·2023년 4월 18일
0

1. ssh-keygen 생성하기

ssh-keygen을 사용하면 다른 Server의 비밀번호 없이 접근할 수 있다.

키젠 생성

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/kimmyeongrae/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

경로의 default는 $HOME/.ssh/id_rsa이고 password, password확인값을 입력해주면 성공적으로 생성된것을 볼 수 있다.(이때 password를 안쓰고싶다면 그냥 엔터치면 된다.)

key 등록

ssh-copy-id user@target-server-ip

등록된 key 확인(targetServer에서)

cat ~/.ssh/authorized_keys

이후 ssh 접속이 password없이 가능하다.

JAVA Test Code

@GetMapping("/test")
    public void test(){
        try {
            String user = "targetServerUserName";
            String ldapDhcpServerIp = "targetServerIP";
            String[] cmd = {"ssh", user + "@" + ldapDhcpServerIp, "systemctl", "status", "slapd", "&&", "systemctl", "status", "isc-dhcp-server"};

            ProcessBuilder processBuilder = new ProcessBuilder(cmd);
            Process process = processBuilder.start();

            BufferedReader stdoutReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            BufferedReader stderrReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));

            String line;
            while ((line = stdoutReader.readLine()) != null) {
                System.out.println(line);
            }          
            process.waitFor();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

이렇게하면 target서버에 원하는 명령어를 던지고 받아낼 수 있다.

profile
독자보다 필자를 위해 포스팅합니다

0개의 댓글