スポンサーリンク

PythonでSSH接続を公開鍵認証、ユーザー認証で行う方法

PythonでSSH接続を公開鍵認証、ユーザー認証で行う方法を記載していきます。

SSH接続の準備

SSH接続するには、paramikoというモジュールが必要なため、コマンドでインストールします。

pip install paramiko

 

ユーザー認証

下記のコードを参考に、ホスト、ポート、ユーザー、パスワードを自分の設定に合わせることでSSH接続できます。今回はSSH接続でポートを設定し、SFTPサーバに接続しています。

import paramiko

HOST = '127.0.0.1'
PORT = 22 # SFTPのポート
USER = 'user'
PASSWORD = 'password'

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(HOST, PORT, USER, PASSWORD)

ssh.close()

 

公開鍵認証

接続先に公開鍵、接続元に秘密鍵ファイルの設定がされていることが前提に記載しています。

公開鍵認証を利用することで、パスワードを必要とするユーザー認証は行いません。

 

import paramiko

HOST = '127.0.0.1'
PORT = 22 # SFTPのポート
USER = 'user'
KEY_FILE = 'id_rsa' # 秘密鍵ファイル
PASSPHRASE = 'passphrase'

# 秘密鍵ファイルからキーを取得
rsa_key = paramiko.RSAKey.from_private_key_file(KEY_FILE)
# 秘密鍵ファイルにパスフレーズを設定している場合は下記
# rsa_key = paramiko.RSAKey.from_private_key_file(KEY_FILE, PASSPHRASE)

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(HOST, PORT, USER, pkey=rsa_key) # キーを指定することでパスワードは必要なし

ssh.close()

秘密鍵ファイルにパスフレーズを設定している場合は、

Pythonスクリプトからパスフレーズを指定する必要があります。

関連記事