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

Python으로 SSH를 사용하는 가장 간단한 방법: Paramiko 활용 가이드

Python에서 SSH를 사용하는 가장 쉬운 방법

Python으로 SSH 연결을 수행하는 가장 간단한 방법은 paramiko 라이브러리를 사용하는 것입니다. Paramiko는 SSHv2 프로토콜을 순수 Python으로 구현한 라이브러리로, 원격 서버에 안전하게 접속하고 명령을 실행할 수 있게 해줍니다.

Paramiko 설치하기

pip를 사용하여 간단히 설치할 수 있습니다.

$ pip install paramiko

사전 준비 사항

Paramiko를 본격적으로 사용하기 전에 다음 사항을 확인해야 합니다.

1. 호스트 머신에 SSH 키가 올바르게 설정되어 있는지 확인합니다. 아직 키가 없다면 ssh-keygen 명령어로 생성할 수 있습니다.
2. Python 스크립트를 실행할 때 해당 키에 접근 가능한지 확인합니다.
3. 원격 서버의 ~/.ssh/authorized_keys 파일에 공개 키가 등록되어 있는지 점검합니다.

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

준비가 완료되면 아래 코드를 사용하여 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.read().decode())  # ls 명령의 출력 결과 출력

코드 설명:

- SSHClient(): SSH 클라이언트 객체를 생성합니다.
- load_system_host_keys(): 시스템의 known_hosts 파일을 로드하여 호스트 검증을 수행합니다.
- connect(): 지정된 사용자 계정과 서버 주소로 연결을 시도합니다.
- exec_command('ls'): 원격 서버에서 ls 명령을 실행하고, 표준 입력(stdin), 표준 출력(stdout), 표준 에러(stderr) 세 개의 스트림을 반환합니다.

위 코드를 실행하면 원격 서버의 디렉터리 목록이 출력됩니다. 참고로 exec_command는 바이트 형태의 결과를 반환하므로, read().decode()를 적용하면 사람이 읽기 좋은 문자열로 변환됩니다.

추가 팁

실제 운영 환경에서는 비밀번호 대신 SSH 키 기반 인증을 사용하는 것이 보안상 권장됩니다. 또한 여러 대의 서버를 관리해야 한다면 Fabric이나 AsyncSSH 같은 상위 수준 라이브러리도 고려해볼 만합니다.