2025-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。
※本記事内容の無断転載を禁じます。
ご連絡は以下アドレスまでお願いします★
CUDA13環境下でGPU使用版のllama.cppを導入しC++ライブラリを使う
CUDA13環境下でGPU使用版のllama-cpp-pythonを導入する
CUDA13環境下でGPU使用版のPyTorchを導入する
LetsEncrypt/certbotの証明書自動更新がエラーになる場合
Wav2Lipのオープンソース版を改造して外部から呼べるAPI化する
Wav2Lipのオープンソース版で静止画の口元のみを動かして喋らせる
【iOS】アプリアイコン・ロゴ画像の作成・設定方法
オープンソースリップシンクエンジンSadTalkerをAPI化してアプリから呼ぶ【2】
オープンソースリップシンクエンジンSadTalkerをAPI化してアプリから呼ぶ【1】
CUDA13環境下でGPU使用版のPyTorchを導入する
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
【ウマ娘】デイリーレースに雨の状態で出走するには
【Debian】apt updateでCD-ROMがどうのこうの言われエラーになる場合
GitLabにHTTPS経由でリポジトリをクローン&読み書きを行う
PostgreSQLをソースコードからインストールしてsystemdのサービスとして動かす
Windows11+WSL2でUbuntuを使う【2】ブリッジ接続+固定IPの設定
Windows11でMacのキーボードを使うには
【Swift UI】右から登場し右へ消えるアニメーションボタンビュー