Python ssh 프로토콜 paramiko 라이브러리 알아보기

오늘은 Python으로 ssh2 프로토콜이 구현된 paramiko 패키지에 대하여 알아보려 합니다.

paramiko 설치

우선 virtualenv로 파이썬 환경을 분리해줍니다.

pip3 install virtualenv
virtualenv -mvenv env

env라는 이름의 가상 환경을 생성합니다.

source env/bin/activate

가상환경을 폴더에서 활성화합니다.

pip3 install --upgrade pip
pip install paramiko

pip로 paramiko를 설치합니다.

ssh 접속

from paramiko.py3compat import input
import paramiko
import getpass
import sys

패키지들은 가져옵니다.

paramiko.util.log_to_file("logging.log")

로그를 남길 파일을 지정합니다.

hostname = input("Host: ")

호스트 이름을 입력 받습니다.

if len(hostname) == 0:
    sys.exit(1)

만약 호스트 이름으로 입력된 값이 없다면 종료합니다.

if hostname.find(":") >= 0:
    hostname, port_str = hostname.split(":")
    port = int(port_str)

호스트 이름을 받을 때에 포트 이름도 같이 넣어져 있다면 분리합니다.

default_username = getpass.getuser()

환경의 유저 이름을 가져옵니다.

username = input("Username: ")
if len(username) == 0:
    username = default_username

유저 이름을 입력받고 못 받는다면, getpass에 의해 받은 기본 유저 이름을 사용합니다.

password = getpass.getpass("Password: ")

비밀번호를 입력합니다.

client = paramiko.SSHClient()

ssh 클라이언트 객체를 생성합니다.

client.load_system_host_keys()

시스템에서 호스트 키를 불러옵니다.

client.set_missing_host_key_policy(paramiko.WarningPolicy())

호스트 키가 없을 때에 사용할 정책을 정합니다.

client.connect(hostname, port, username, password)

적은 호스트 이름과 포트 그리고 유저 이름과 마지막으로 비밀번호를 가지고 ssh 접속합니다.

client.close()

모든 작업이 완료되면 클라이언트 객체를 소멸합니다.

Written on April 19, 2019