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를 안쓰고싶다면 그냥 엔터치면 된다.)
ssh-copy-id user@target-server-ip
cat ~/.ssh/authorized_keys
이후 ssh 접속이 password없이 가능하다.
@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서버에 원하는 명령어를 던지고 받아낼 수 있다.