워낙 잘 정리된 문서가 있어 문서를 보고 따라해보고 있었는데 내가 겪은 문제는 따로 언급되지 않아 정리했다.

Jenkins 로 private 서브모듈이 포함되어 있는 레포지토리를 clone 받아 이를 빌드하는 것까지는 성공했다. 이제 생성한 jar 파일을 배포 서버에게 보내기 위해 Publish over ssh 플러그인을 설치했다. 배포 서버로 ssh 접근을 테스트해봤는데 에러가 발생하였다.

Untitled

Failed to connect or change directory

jenkins.plugins.publish_over.BapPublisherException: Failed to connect and initialize SSH connection. Message: [Failed to connect session for config [momo-api]. Message [Auth fail]]

‘권한’ 문제로 배포 서버에 접근할 수 없다는 에러였다. 대체 어느 권한이 없다는 건지 AWS 의 온갖 설정을 뒤졌지만 알 수가 없었다. 그러다 ssh 접근에 대한 로그 파일도 있다는 것을 알아내고(이곳저곳 찾아다녔더니 링크를 잃어버렸다..) 로그 파일을 확인해보았다.

sshd[40804]: userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]
sshd[40804]: error: Received disconnect from 13.125.170.162 port 53286:3: com.jcraft.jsch.JSchException: Auth fail [preauth]
sshd[40804]: Disconnected from authenticating user ubuntu 13.125.170.162 port 53286 [preauth]

Jenkins 에서 등록했던 키는 rsa 알고리즘으로 암호화된 키이다. 에러를 보니 ssh-rsa 알고리즘으로 된 키가 등록되지 않았다는 의미인거같았다. 그래서 ssh 의 설정파일에 관련 설정을 추가해주었다.

/etc/ssh/sshd_config

PubkeyAcceptedAlgorithms +ssh-rsa
sudo systemctl restart sshd

설정 파일을 수정한 후 재시작해준다.

Untitled

그러면 SSH 테스트에 성공했다는 메시지를 확인할 수 있다. ㅠ_ㅠ