SSH를 이용해서 원격 컴퓨터에 스크립트 실행하기

찾아보면 쉽게 찾을 수 있는 내용. 어제 화재(?) 사건을 계기로 원격지 컴퓨터를 SSH를 이용해서 끄는 방법을 찾아보았다. 리눅스의 종료 명령어는 윈도우와 마찬가지로 shutdown 이니까, 원격으로 명령어를 입력할 수 있으면 된다.

ssh -p 포트번호 계정@서버주소 'sudo shutdown'

하나의 명령어는 입력이 쉽다. 긴급 상황등의 이유로 컴퓨터가 반드시 종료되어야 하기 때문에 다음의 몇 가지 문제를 해결해야 한다.

  • Debian의 경우 기본 설정 상태라면 root 계정으로 로그인 했을 때에만 종료가 가능하다. 개인 계정으로 shutdown을 실행하기 위해서는 /etc/sudoers 에서 본인 계정에 sudo 권한을 부여해야 한다.
  • 그런데 SSH 서버 설정에서 root 접속은 기본적으로 불가능이다.
  • sudo 명령어에서 비밀번호를 요구하지 않도록 해야 한다. 개인 컴퓨터야 그냥 하루쯤 더 켜두는 문제거나, 다음 스크립트로 진행이 안되던가 하는 문제 밖에 없다. 본래의 목적인 긴급 상황에 강제 종료를 하기 위해서는 외부의 개입을 최소화 해야 한다.

/etc/sudoers를 편집하여 설정을 바꾸어 주면 된다. 접속하는 컴퓨터의 공개키를 서버에 등록시키면 비밀번호를 묻는 과정도 생략 가능하다.