don't stop believing

ssh 패스워드 없이 자동 로그인 본문

Linux/Ubuntu

ssh 패스워드 없이 자동 로그인

Tongchun 2018. 1. 2. 18:39

뭔가 한참을 해매다 간단한 방법을 찾았습니다.

Linux 서버에 접속하기 위해서는 ssh를 이용하며 비번이 필요 합니다.

ssh 공개키를 서버에 간단하게 배포하고 비번없이 접속하는 방법을 확인해 봅시다.


우선 접속하려는 클라이언트 Linux에 sshpass를 설치합니다.

$ sudo apt-get install sshpass

그리고 클라이언트 Linux에 ssh 키를 생성합니다.

$ ssh-keygen

그리면 .ssh/ 경로에 id_rsa id_rsa.pub 두 개의 파일이 생성됩니다.

.ssh/id_rsa 파일은 개인키 파일이고 .ssh/id_rsa.pub 파일은 공개키 파일입니다.


이제 sshpass를 이용해 서버 Linux에 접속해 봅니다.

$ sshpass -p "password1234" ssh macaron@192.168.1.12

-p 옵션으로 패스워드를 입력해 접속할 수 있습니다.

서버측 Linux에 접속 확인 되었다면 ssh-copy-id 명령을 이용해 공개키를 서버측에 전달합니다.

$ sshpass -p "password1234" ssh-copy-id macaron@192.168.1.12

이제 서버측 Linux에서 .ssh에 대한 권한을 변경해 줘야 합니다.

$ chmod 700 ~/.ssh/
$ chmod 600 ~/.ssh/authorized_keys

이제 클라이언트 Linux에서 ssh로 접속해 봅니다.

$ ssh macaron@192.168.1.12

비밀번호 입력 없이 서버측 Linux에 접속되는 것을 확인할 수 있습니다.



** Jenkins에서 Build의 execute shell 등에서 사용할 경우 jenkins 계정으로 ssh 키를 만들고 배포해야 합니다. **

우선 Jenkins 서버에서 아래 명령으로 jenkins 계정으로 변경합니다.

$ sudo su -s /bin/bash jenkins

이후 ngle에 대한 비번을 입력하면 됩니다. 이후 변경된 jenkins 계정으로 ssh-keygen 으로 key를 생성해 줍니다. 생성된 key는 /var/lib/jenkins/.ssh에 있습니다. 해당 경로로 이동 후 ssh-copy-id로 key를 넘겨주면 됩니다.

$ cd /var/lib/jenkins/
$ sshpass -p "password1234" ssh-copy-id macaron@192.168.1.12
$ ssh macaron@192.168.1.12


Comments