LoginSignup
4
3

More than 1 year has passed since last update.

SFTP環境構築メモ - RHEL8系

Posted at

SFTPサーバーの構築とクライアント処理の自動化

鍵認証を使ったSFTP環境を構築します。

環境

  • Server OS: Rocky Linux release 8.4
  • Client OS: Rocky Linux release 8.4

サーバー側の設定

SFTPサーバー設定

公開鍵認証を有効にする

/etc/ssh/sshd_config
PubkeyAuthentication yes

公開鍵の保存場所を指定する

/etc/ssh/sshd_config
AuthorizedKeysFile      .ssh/authorized_keys

OpenSSHでSFTPを有効にする

/etc/ssh/sshd_config
Subsystem       sftp    /usr/libexec/openssh/sftp-server

設定ファイルの構文チェック

問題無ければ何も出力されません。異常が見つかった場合はエラーが出力されます。

$ sudo /usr/sbin/sshd -t

SFTP設定を反映するためにサービス再起動

$ sudo systemctl restart sshd

ユーザー

SFTP接続するユーザーをサーバーにて作成します。

ユーザー作成
$ sudo useradd [username]

作成したユーザーに切替
$ sudo su - [username]

鍵作成
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/xxxx/.ssh/id_rsa): このままエンター
Enter passphrase (empty for no passphrase): このままエンター
Enter same passphrase again: このままエンター

※今回は自動化するため、パスフレーズは空にしています

authorized_keysに公開鍵を登録する
$ cd .ssh/
$ cat id_rsa.pub >> authorized_keys
$ chmod 600 authorized_keys

作成したユーザーのホームディレクトリ配下にある以下の秘密鍵ファイルをクライアントの同ディレクトリにコピーします
~/.ssh/id_rsa

※SCPなどでファイル転送するか中身はテキストなのでそのまま文字列をコピペします

クライアント

秘密鍵ファイルの権限設定

$ chmod 600 ~/.ssh/id_rsa

バッチファイルの作成

$ vi sftp.bat
cd data
put test.csv
bye

※コマンドをそのまま上から順番に書きます

手動実行

$ sftp -b sftp.bat -i ~/.ssh/id_rsa username@[IPaddress or FQDN]

スケジュール実行用のシェルスクリプト作成

$ cat << EOT >> sftp.sh
#!/bin/bash
sftp -b sftp.bat -i ~/.ssh/id_rsa username@[IPaddress or FQDN]
EOT

$ chmod +x sftp.sh

スケジュール設定

$ crontab -e
30 12 * * * /home/username/sftp.sh

sftpコマンドの注意点

  • sftpコマンドはパスワード認証に対応していない → 鍵認証にする必要がある
  • sftpコマンドのバッチファイル実行はパスフレーズ有りの鍵認証に対応していない → パスフレーズ無しにする必要がある
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3