Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.
1. oozie에서 제공하는 ssh action을 이용하여 다른 서버에 패스워드 없이 ssh로그인 하여 그 안에 있는 shellscript호출하는 설정하는 방법은 다음과 같다.
oozie서버 : oozieserver.gooper.com <- client이면서 출발지 서버(호스트명 oozieserver)
ssh로 접속하려는 서버 : sshserver.gooper.com <- 목적지 서버(호스트명 sshserver)
ssh접속 계정 : hadoop
1. 설정
centos 8이전 버젼에서는 /etc/hosts.allow에 ssh: 접속허용IP 형태로 등록해주고 출발지와 목적지 서버간 22번 포트에 대한 방화벽을 오픈한다.
2. oozie계정에 대한 key생성(공개키/개인키 기반의 키를 생성함)
sudo -u oozie ssh-keygen -t rsa
3. 2번에서 생성한 oozie계정용 key를 sshserver.gooper.com서버에 있는 hadoop계정의 authorized_keys에 추가 (home폴더는 /var/lib/계정 의 위치에 생성될 수도 있음)
sudo -u oozie ssh-copy_id i /home/oozie/.ssh/id_rsa.pub hadoop@sshserver.gooper.com
4. 패스워드 없이 접속 가능한지 접속 테스트
sudo -u oozie ssh hadoop@sslserver.gooper.com
* 참고#1 : oozie 프로세스에서 다른 서버에 hadoop게정으로 접속하는 경우 hadoop계정의 키를 생성해서 배포하고 hadoop계정으로 접속하거나 oozie서버의 oozie서비스 프로세스 기동한 계정인 oozie계정의 public key를 3번 처럼 목적지 서버에 배포한 후 4번처럼 ssh접속하면 패스워드를 따로 묻지 않고 접속됨.
참고#2: 외부서버에서 oozie서버에 ssh접근하는 경우는 외부 서버의 shellecript실행할 os계정(예, msl)의 공개키를 받아서 oozie서버의 /home/msl2/.ssh/authorized_keys파일에 수동 등록해주면
외부 서버에서 sudo -u msl ssh msl2@oozieserver.gooper.com 처럼 msl계정으로 shellscript를 수행후 shellscript안에서 msl2계정으로 oozie서버에 패스워드 없이 ssh접근이 가능함)