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スクリプトからパスフレーズを指定する必要があります。