본문 바로가기

DevOps __

SSH copy-id 자동화 방법?

ssh-copy-id -i [key_path] [user]@[host]

 

우선 수동으로 authorized_keys 파일에 pub key 를 넣어주는 방법도 존재한다.

 

그러나 이 명령어를 통해 자동으로 target host에 pub key 주입이가능한데,,

 

 

 

이 과정을 할때 보면 번거로운 점이 있는데,

 

첫째, 해당 커맨드로 pub key 를 보내기 위해선 이미 패스워드로 ssh 접근이 가능해야함.

 

둘째, 당연하게도 패스워드 입력이당.

 

셋째, 처음 접근 시  Are you sure you want to continue connecting (yes/no)?  입력..

 

 

그래서 자동화 스크립트를 생각해보았다.

 

 

[target host] 

# 임시적으로 패스워드 설정

 

sudo sed -i 's/^PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config

 

sudo systemctl restart sshd

 

echo 'bazzi:1234' | sudo chpasswd               # 패스워드 변경 

 

 

 

### 여기까지 작업 후 key copy 시작 = 이정도 스크립트를 부팅시 여러 방법을 통해 한번만 실행되게끔? 하면 된다. 방법은 아직 음..

 

 

 

&& ID / PW , IP 는 각 개인별껄 이용

[ansible server]

 

# expect 이용한 자동화

 

yum -y install expect

 

 

# vi ssh_auto_key.exp

 

-----------

#!/usr/bin/expect

 

 

set timeout 5

spawn ssh-copy-id -o StrictHostKeyChecking=no -i /home/bazzi/.ssh/id_rsa.pub jayce@10.151.74.4

 

expect {

      "bazzi@10.151.74.4's password: " { # 프롬프트에 password: 항목이 뜨는 경우 

          send "1234\r"

          exp_continue

      }

}

---------

 

chmod +x ssh_auto_key.exp

 

./ssh_auto_key.exp

 

작업 원격서버들 password 기반 ssh 옵션 원복 sshd restart 

 

---------------------------------------

 

간단한 작업을 복잡하게 만들어가는듯 하네여.. -_-;

 

뭔가... pub key 를 넣어준 VM 이미지 하나를 떠서 -o StrictHostKeyChecking=no 옵션으로 사용하거나,

ssh-keyscan 을 통해 known_hosts 파일을 만들어둔다거나 해도 괜찮을거 같네여..

 

또 다른 아주 심플한 방법이 이미 존재하겠지만 서도..

 

저의 의식의 흐름의 따라 구성을 생각해보았습니다.

 

이상 -초보자-

( _ _ )

'DevOps __' 카테고리의 다른 글

Ubuntu 20.04 보안 취약점 조치 playbook  (0) 2021.12.31
Ansible 서버 window 호스트 관리.  (1) 2020.10.26
Kubernetes - 구성  (0) 2020.04.22
GCP LB ssl offload  (0) 2019.11.04
ELK 설치 및 실행  (0) 2019.11.04