피드로 돌아가기
Dev.toDevOps
원문 읽기
macOS Keychain 연동 및 expect 시퀀스로 SSH 접속 및 root 권한 획득 자동화
I built a terminal SSH manager because I was tired of scrolling bash history
AI 요약
Context
반복적인 SSH 접속 및 sudo 권한 획득 과정에서 발생하는 bash history 검색과 패스워드 중복 입력의 비효율성 존재. 특히 다양한 인증 방식(Key, Password)과 환경별 root 권한 필요성이 혼재된 워크플로우의 병목 지점 파악.
Technical Solution
- macOS security CLI를 통한 패스워드 저장 및 macOS Keychain 연동으로 평문 저장소 제거
- sshpass 환경 변수(SSHPASS) 활용을 통한 디스크 I/O 없는 패스워드 전달 구조 설계
- expect 라이브러리를 이용한 '로그인 프롬프트 대기 -> 패스워드 입력 -> shell 프롬프트 감지 -> sudo -i 실행'의 연속적 자동화 시퀀스 구현
- 0400 권한의 임시 파일 생성 및 finally 블록 기반 즉각 삭제 로직을 통한 fallback 보안 강화
- 서버 메타데이터(JSON)와 민감 정보(Keychain)를 분리하여 보안성과 관리 편의성 동시 확보
실천 포인트
1. 민감 정보 저장 시 OS 레벨의 Secure Store(Keychain, Secret-tool 등) 활용 여부 검토
2. 인터랙티브 쉘 자동화 시 expect 시퀀스를 통한 프롬프트 기반 상태 제어 적용
3. 패스워드 전달 시 환경 변수 우선 사용 및 임시 파일 사용 시 최소 권한 설정과 즉각적인 삭제 로직 구현