Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python으로 SSH를 통해 원격 서버에서 명령어 실행하는 방법

Paramiko란? 설치 방법

Python에서 SSH를 사용하는 가장 간단하고 널리 쓰이는 방법은 paramiko 라이브러리를 활용하는 것입니다. 다음 명령어 하나로 손쉽게 설치할 수 있습니다.

$ pip install paramiko

SSH 키 설정 확인하기

paramiko를 본격적으로 사용하기 전에, 호스트 머신에 SSH 키가 올바르게 설정되어 있는지 먼저 확인해야 합니다. 또한 Python 스크립트를 실행할 때 이 키들에 접근할 수 있어야 정상적으로 인증이 진행됩니다. SSH 키가 아직 없다면 Atlassian 공식 문서 등에서 제공하는 가이드를 참고해 키를 생성해 두는 것이 좋습니다.

원격 서버에 접속하고 명령어 실행하기

SSH 키 설정이 완료되었다면, 아래 코드를 사용해 원격 서버에 SSH로 접속할 수 있습니다.

from paramiko import SSHClient

ssh = SSHClient()
ssh.load_system_host_keys()
ssh.connect('user@server:path')
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command('ls')
print(ssh_stdout) # ls 명령어의 출력 결과 출력

exec_command 함수를 사용하면 접속된 서버에서 지원하는 모든 명령어를 SSH를 통해 실행할 수 있습니다. 위 코드를 실행하면 원격 서버의 디렉터리 목록이 출력됩니다.

명령어 출력 결과를 문자열로 받기

실제 작업에서는 명령어의 출력 내용을 문자열 형태로 직접 다루는 경우가 많습니다. 이럴 때는 read() 메서드를 활용하면 편리합니다.

output = ssh_stdout.read().decode('utf-8')
print(output)

호스트 키 정책 설정 팁

처음 접속하는 서버의 호스트 키가 로컬에 저장되어 있지 않으면 연결이 거부될 수 있습니다. 이런 경우 아래와 같이 호스트 키 정책을 설정하면 자동으로 키를 추가해 연결 오류를 방지할 수 있습니다.

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('user@server:path')

이처럼 paramiko를 활용하면 몇 줄의 코드만으로 원격 서버에 안전하게 접속하고, 다양한 명령어를 자동화하여 실행할 수 있습니다. 서버 관리 작업이나 배포 자동화 스크립트를 작성할 때 매우 유용하게 활용할 수 있습니다.