jenkins server 연동
Publish over SSH
jenkins서버에서 id_rsa 키값 발급받아서 키 넣어두고 ( 발급 방법 구글에 찾아보자 )
ssh Server설정
위 내용 추가
remote서버 root에서 ~/.ssh/authorized_keys 에 id_rsa.pub 키 등록 후 테스트 진행
(이렇게 되면 비번없이 서버 접속이 된다.)
Test Configuration 눌렀을 때 이런 오류가 나옴
jenkins.plugins.publish_over.BapPublisherException: Failed to connect and initialize SSH connection. Message: [Failed to connect session for config [server__name]. Message [Auth fail]]
이유는 각자 jenkins ssh Server 설정에 적어놓은 userName에 해당하는 것으로 접속해야함!
1. reomote서버에서 내가 젠킨스 설정에 적은 UserName로 접속
- su - userName
- ~/.ssh/authorized_keys 여기에 jenkins서버에서 발급받은 id_rsa.pub key를 추가해줘야함
tip1!!!
서버에서 특정 계정으로 접속이 안되면...?
su - userName -s /bin/sh
userName 에 내가 원하는 계정 적어두고 저렇게 접속하기
tip 2!!!
Remote 서버의 authorized_keys에 Jenkins 서버의 id_rsa.pub의 공개키를 넣을때
.ssh파일의 권한은 700 authorized_keys는 600 이 아니면 ssh 인증이 동작하지 않는다.
그런데 또 이 이슈가 남
jenkins [Failed to connect SFTP channel. Message [java.io.IOException: Pipe closed]]
내가 써놓은 포트에 SFPT 가 닫혀있는 문제
난 젠킨스 페이지에서 ssh server 고급 설정에 22번 포트를 적어 놓았음
해결방법
22포트에서 모든 sftp접속 가능하게 해주던지
2222에서만 sftp가능하게 설정해주던지
1. 이건 /etc/ssh/sshd_config 파일에서 설정 해주면된다.
- port 22만 열어두고 모든 sftp허용하고 싶으면?
-
port 22 # 22만 추가
-
Subsystem sftp /usr/libexec/openssh/sftp-server
-
- port 22 / port 2222 둘 다 열어두고 2222에서만 sftp허용하고 싶으면?
-
port 22 Port 2222 # 둘다 추가
-
Subsystem sftp /bin/false # sftp허용을 안한다는 의미 # 2222번 포트만 허용 Mach LocalPort 2222 AllowTCPForwading no XllForwarding no ForceCommand internal-sftp -f AUTHPRIV -l VERBOSE # 대충 적어서... 구글링 해보자!
-
2. 내용 수정 후 service sshd restart
해보기
근데 또 안됨 ...!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Password 떄문에 안되는거 였음 ... expired 되었기 때문 ..
chage인가 ? 로 만기 일자 바꿔줬음 (원래 비번을 바꿔야하지만... )
그랬더니 정상적으로 success되었다
-----
2021-12-14 내용추가
1)
뭐하다가 잘못 건들여서 authorized_keys 삭제해버림....
다시 했더니 계속 안되었는데 첫번째 이유는 jenkins 서버에서 id_rsa.pub키를 잘못 복사함 ... ㅎ ssh로 시작하는데 sh부터 복사했음
그랬더니 또 아래 이슈가 나옴
jenkins [Failed to connect SFTP channel. Message [java.io.IOException: Pipe closed]]
비번 만료일때문인가 봤더니 역시나역시나~~~~
password expires가 2021-12-13까지였었음
저 값은 직접적으로 못바꾸고 "Last password change" 를 바꾸면 그 값 + "minumum number of days between~~~어쩌고" 이 값을 더한 값으로 수정됨
최근데 비번 바꾼날 이후로 내가 지정해준 날짜만큼 expired date 가 되는 것 !
chage -l jboss --- (1)
chage -d 2021-xx-xx jboss --- (2)
(1) jboss 계정의 비번설정 정보 확인 후
(2) -d 옵션으로 마지막 비번바꾼 날짜를 바꾼다.
success~~~~:)
--------
2)
스크립트에서
scp nginx@172.16.177.35:${WORKSPACE}/build/libs/*.war ./
이 부분이 계속 안됨... 이유는 ? remote 서버에서 젠킨스 서버에 있는 war 파일을 가져오려면 젠킨스 서버의 nginx계정의 authorized_keys에 id_rsa.pub 키를 추가해주어야 하기 때문 ...........................
추가해주니 success