2023-01-08
提携会社から自社のサーバへ定期的にファイルをアップロードしてもらう場合、SFTP(SSHプロトコルを用いたファイル転送)がよく使われる。
しかしSSHポート22番は通常利用しているので、ポート番号を変更してsshdをもう1つ立ち上げ、それをSFTPファイルアップロード専用に開放する方法。
1、専用アカウントのセットアップ
専用グループ「partner」を作成。ここでは2000番とする。
vigr partner:x:2000: vigr -s partner:!::
提携先ユーザの作成。ここではteikei01(2002番)とする。
vipw teikei01:x:2002:2000:Teikei User:/sftp-home/teikei01:/bin/bash vipw -s teikei01:*:18270:0:99999:7:::
提携先ユーザのホームディレクトリ作成。ここでは/sftp-home/teikei01とする。
このディレクトリの所有者はrootでなくてはならない。
sudo -s cd / mkdir -p sftp-home/teikei01
提携先ユーザがファイルをアップロードするディレクトリを掘る。(uploadsとする)
このディレクトリの所有者はteikei01とし、誰でも読み書き可能とする。
cd sftp-home/teikei01 mkdir uploads chown teikei01:partner uploads chmod a+w uploads
提携先ユーザのパスワードを設定する。
passwd teikei01
2、ポートを変更したsshdのデュアル立ち上げ
従来システムにあるsshdはそのままに、設定ファイル・起動ファイルすべて別に用意した別ポートsshdを立ち上げる。
ここでは新ポート番号 22522番 とする。
★設定ファイル作成
cd /etc/ssh cp -p sshd_config sshd_22522_config vi sshd_22522_config <変更箇所> Port 22522 PermitRootLogin no PasswordAuthentication yes PermitEmptyPasswords no PidFile /var/run/sshd_22522.pid Subsystem sftp internal-sftp Match User teikei01 ChrootDirectory /sftp-home/teikei01 ForceCommand internal-sftp
ポートを22522、pidを別に、パスワード認証をOKとし、teikei01ユーザが来たらホームディレクトリに閉じ込める設定。
★自動起動サービスデフォルトファイル作成
cd /etc/default cp -p ssh ssh_22522 vi ssh_22522 <変更箇所> SSHD_OPTS="-f /etc/ssh/sshd_22522_config"
★自動起動スクリプトファイル作成
cd /etc/init.d cp -p ssh ssh_22522 vi ssh_22522 <変更箇所> # Provides: sshd_22522 if test -f /etc/default/ssh_22522; then . /etc/default/ssh_22522 # /run/sshd は /run/sshd_22522 へすべて変更(↓sed例) sed 's/\/run\/sshd/\/run\/sshd_22522/g' # "sshd" は "sshd_22522" へすべて変更(↓sed例) sed 's/"sshd"/"sshd_22522"/g' status_of_proc -p /run/sshd_22522.pid /usr/sbin/sshd sshd_22522 && exit 0 || exit $? Usage: /etc/init.d/ssh_22522
★自動起動サービスファイル作成
cd /lib/systemd/system cp -p ssh.service ssh_22522.service vi ssh_22522.service <変更箇所> EnvironmentFile=-/etc/default/ssh_22522 Alias=sshd_22522.service
これにて準備完了、ssh_22522の起動が可能なはず。
# 起動 systemctl start ssh_22522 # ステータス表示 systemctl status ssh_22522 # 終了 systemctl stop ssh_22522 # 自動起動登録 systemctl enable ssh_22522 # /etc/systemd/system/sshd_22522.serviceが生成される # 自動起動解除 systemctl disable ssh_22522
これ以降は/etc/init.dでも操作可能
/etc/init.d/ssh_22522 {start|stop|restart}
提携先に教えるのは、ユーザー名 teikei01、パスワード、ホスト名、ポート番号(22522)で、
sftpでログインしてもらって、uploadsディレクトリにファイル置いといてください、という感じになる。
ファイアウオール内の場合ルーターを適切に設定すること。表向きは22番とする場合、22番を開放し、
このサーバーの22522番へポートフォワードする設定になる。
3、テストの要点
・まずsshで接続を試みて、コンソールを握れないことを確かめる。握れてしまったらセキュリティホールになる。
ssh -p 22522 teikei01@127.0.0.1 teikei01@127.0.0.1's password: This service allows sftp connections only. Connection to 127.0.0.1 closed.
となればOK。
・次にsftp接続して、uploadsディレクトリにファイルputができるかどうか確認。自分のhomeのtest.txtをアップしてみる。
sftp -oPort=22522 teikei01@127.0.0.1 teikei01@127.0.0.1's password: Connected to 127.0.0.1. sftp> dir uploads sftp> cd uploads sftp> lcd /home/hogeuser sftp> put test.txt Uploading test.txt to /uploads/test.txt sftp> dir test.txt sftp> quit
などとなればOK。
※本記事内容の無断転載を禁じます。
ご連絡は以下アドレスまでお願いします★
Windowsのデスクトップ画面をそのまま配信するための下準備
WindowsでGPUの状態を確認するには(ASUS系監視ソフトの自動起動を停止する)
CORESERVER v1プランからさくらインターネットスタンダートプランへ引っ越しメモ
さくらインターネットでPython MecabをCGIから使う
さくらインターネットのPHPでAnalytics-G4 APIを使う
インクルードパスの調べ方
【Git】特定ファイルを除外する.gitignore
【Ubuntu/Debian】NVIDIA関係のドライバを自動アップデートさせない
【Python】Spacyを使用して文章から出発地と目的地を抜き出す
Windows11+WSL2でUbuntuを使う【2】ブリッジ接続+固定IPの設定
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
【Apache】サーバーに同時接続可能なクライアント数を調整する
Windows版Google Driveが使用中と言われアンインストールできない場合
【C/C++】小数点以下の切り捨て・切り上げ・四捨五入
【Linux】iconv/libiconvをソースコードからインストール
VirtualBoxの仮想マシンをWindows起動時に自動起動し終了時に自動サスペンドする
Ubuntu Server 21.10でイーサリアムブロックチェーン【その5】
Googleファミリーリンクで子供の端末の現在地がエラーで取得できない場合