スポンサーリンク

[python] SFTPサーバをsftpserverライブラリを使って構築する

pythonで、SFTPサーバを立てるのにsftpserverライブラリを使えば簡単に構築できます。

SFTPサーバをローカルで使いたい時や、テスト用にSFTPサーバを使いたい場合に利用できます。

 

環境

Windows 10

python 3.7.1

sftpserver 0.3

 

sftpserverのインストール

まずはpipコマンドでsftpserverをインストールします。

pip install sftpserver

 

OpenSSLのインストール

sftpserverでは認証に秘密鍵を必要とするので、openSSLで作ります。

Windowにはopensslコマンドがないので下記を参考に設定してください。

opensslコマンドをWindowsで使えるようにする

 

OpenSSLで秘密鍵の生成

下記のコマンドで秘密鍵の生成を行います。

まず、秘密鍵を保存しておくフォルダを作ります。

秘密鍵の保存先は、「/tmp/test_rsa.key」なので

通常はC:/にtmpフォルダを作ります。

その後、以下のコマンドを実行して秘密鍵を作成します。

openssl req -out CSR.csr -new -newkey rsa:2048 -nodes -keyout /tmp/test_rsa.key

 

tmpフォルダに作られたtest_rsa.keyをテキストエディタで開きます。

先頭行にある—–BEGIN PRIVATE KEY—–を—–BEGIN RSA PRIVATE KEY—–に変更します。

これは、pythonがRSAのファイルと認識するために必要です。

 

実際にSFTPサーバを立ち上げ、pythonで接続してみる

コマンドプロンプトを起動し、SFTPサーバのトップディレクトリして扱うパスに移動して、

下記のコマンド実行してSFTPサーバを起動します。

sftpserver -k /tmp/test_rsa.key

 

では、下記のpythonファイルを使って実行してみてください。

sftpserverコマンドを実行している所のファイル、ディレクトリが出力されるはずです。

サンプルコード

 

実行結果例

 

解説

sftpserverのホストはlocalhost, ポート番号は3373がデフォルト設定で決められています。

その情報と、秘密鍵を使って認証してSFTPサーバに接続しています。

 

 

pythonでsftpserverコマンドを実行させ、SFTPサーバを起動させる。

コマンドプロンプトから起動させるのではなく、

pythonでsftpserverを起動させます。

 

sftpserver起動のモジュール sftp_server.py

 

sftip_serverのモジュールの使用例

サンプルコード

サンプルコードを実行すると、ルートディレクトリ内のファイル、ディレクトリが出力されます。

 

 

参考

sftpserver · PyPI

SFTPのモックサーバをたてユニットテストをする – 断章10100

 

 

Python
スポンサーリンク
シェアする
trelab