MENU
やすひら
やすひらと申します。
長靴を履いたタヌキ(ITエンジニア)です。
モノ作りの楽しさを発信中。
X(旧Twitter)のフォローもお願いします。

[Python]paramikoを用いたSFTPによるファイル送受信

Pythonでは、SFTP(SSH File Transfer Protocol)を利用して安全にファイルを送受信できます。
SFTPはSSHを通じてファイルの転送を行うため、暗号化された安全な通信が可能です。
本記事では、Pythonでparamikoを用いたSFTPによるファイル送受信について紹介します。

やすひら

paramikoを用いたSFTPによるファイル送受信について紹介します

この記事でわかること
  • SFTPとは
  • paramikoを用いたSFTPによるファイル送信
  • paramikoを用いたSFTPによるファイル受信
目次

SFTPとは

SFTP(SSH File Transfer Protocol)は、暗号化技術を利用して安全にファイルを送受信できます。
SFTPは、クライアント-サーバー間の通信を第3者に盗聴されても、通信内容が暗号化されているため、通信内容が傍受される可能性が低くなります。

sftpのログイン方法はパスワード認証と鍵認証がありますが、鍵認証の方がキーとなる文字列が多いため、よりセキュアです。
sshの標準ポートは22ですが、22以外に設定することも可能です。

SFTPの設定方法

SFTPの設定は、SSHと共通設定なので、SSHの設定を行うことで、設定変更することができます。
よりセキュアな通信を行うために、鍵認証によるログインと、ポート番号を変更することを推奨します。

SFTPコマンド

SFTPは、Linuxコマンドでも実行することができます。
PythonによるSFTPを実行する前に、sftpコマンドで接続方法やファイル送受信を実行してみることを推奨します。

paramikoライブラリとは

PythonでのSFTPは、paramikoライブラリを用いて実行することができます。
paramikoライブラリは、SFTPを含むSSH通信を扱うことができるライブラリです。

paramikoライブラリは、インストールする必要があります。

コマンドライン

pip install paramiko

pipでparamikoライブラリをインストールできます。

paramikoを用いたSFTPによるファイル送信

paramikoを用いたSFTPによるファイル送信を紹介します。

ソースコード

import paramiko

# 認証情報
host = '111.111.111.111'
port = 65535  # ポートを指定
username = 'user'
private_key = '/home/user/.ssh/id_rsa'  # 認証鍵ファイル

# ローカルファイルとリモートの保存先
local_file = '/home/user/hogehoge.txt'
remote_path = '/home/user/hogehoge.txt'

# SFTP接続を確立
try:
    key = paramiko.RSAKey.from_private_key_file(private_key)
    transport = paramiko.Transport((host, port))
    transport.connect(username=username, pkey=key)

    # SFTPセッションを開く
    sftp = paramiko.SFTPClient.from_transport(transport)

    # ファイルをアップロード
    sftp.put(local_file, remote_path)
    print(f"File {local_file} has been successfully uploaded to {remote_path}")

finally:
    sftp.close()
    transport.close()

コマンド実行例

$ python3 -B python-paramiko-sftp-put.py
File /home/user/hogehoge.txt has been successfully uploaded to /home/user/hogehoge.txt

ポート指定で認証鍵を使用してSFTP接続を確立し、ローカルファイルをリモートサーバーに送信しました。

paramikoを用いたSFTPによるファイル受信

paramikoを用いたSFTPによるファイル受信を紹介します。

ソースコード

import paramiko

# 認証情報
host = '111.111.111.111'
port = 65535  # ポートを指定
username = 'user'
private_key = '/home/user/.ssh/id_rsa'  # 認証鍵ファイル

# ローカルファイルとリモートの取得元
remote_file = '/home/user/hogehoge.txt'
local_path = '/home/user/hogehoge.txt'

# SFTP接続を確立
try:
    key = paramiko.RSAKey.from_private_key_file(private_key)
    transport = paramiko.Transport((host, port))
    transport.connect(username=username, pkey=key)

    # SFTPセッションを開く
    sftp = paramiko.SFTPClient.from_transport(transport)

    # ファイルをダウンロード
    sftp.get(remote_file, local_path)
    print(f"File {remote_file} has been successfully downloaded to {local_path}")

finally:
    sftp.close()
    transport.close()

コマンド実行例

$ python3 -B python-paramiko-sftp-get.py 
File /home/user/hogehoge.txt has been successfully downloaded to /home/user/hogehoge.txt

ポート指定で認証鍵を使用してSFTP接続を確立し、リモートサーバーからローカルにファイルをダウンロードしました。

まとめ

paramikoを用いたSFTPによるファイル送受信について紹介しました。

paramikoを用いたSFTPは
  • SSHの設定でSFTP設定ができる
  • paramikoライブラリのインストールが必要
  • ファイル送信ができる
  • ファイル受信ができる

SFTPは、セキュアにファイルを送受信するために重要な通信方法です。
paramikoライブラリを用いることで、PythonでSFTPによる安全なファイル送受信を実行することができます。

  • URLをコピーしました!
目次