0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

おうちサーバー構築報告:公開鍵の送付手段・専用ユーザーでsftp

Posted at

能書き

おうちサーバー構築報告:予告からのおうちサーバー構築の続きです。

オレオレ認証局を構築し、それで認証した証明書も作成できるようになりました。今回はその鍵の送付手段です。以前もやりましたが、今回はシェルスクリプトにまとめてみました。

目標

  • 公開鍵をsftpで運搬できるようにする
    • sftp用のユーザーを用意
    • ディレクトリなどを用意し、手順を確立
  • ユーザーやディレクトリの用意をシェルスクリプトにまとめる

参考文献

サーバー設定

ユーザーについては下記の条件を満たすように設定します。

  • ユーザー名はtransporter
  • ホームディレクトリ無し
  • ログイン禁止

送付用ディレクトリは下記にします。

  • ディレクトリは/srv/transport/publickey
  • /srv/transportrootの所有とする
サーバー172.16.1.101:ユーザーroot
cd
cat <<"___" >buildTransporter.sh
#!/bin/bash
USERNAME=$1
DIRPATH=$2
PUBLICDIR=$3

useradd -s /usr/sbin/nologin -M $USERNAME
passwd $USERNAME
mkdir -p $DIRPATH/$PUBLICDIR
chgrp $USERNAME $DIRPATH/$PUBLICDIR
chmod g+w $DIRPATH/$PUBLICDIR

cat >/etc/ssh/sshd_config.d/$USERNAME.conf <<___A
Match User $USERNAME
  X11Forwarding no
  AllowTcpForwarding no
  PermitTTY no
  PasswordAuthentication yes
  ForceCommand internal-sftp
  ChrootDirectory $DIRPATH
___A
systemctl restart sshd
___
chmod 755 buildTransporter.sh
サーバー172.16.1.101:ユーザーroot
./buildTransporter.sh transporter /srv/transport publickey

確認

接続と転送

実験用に、公開鍵ではないテキストファイルを置きます。

サーバー172.16.1.101:ユーザーroot
cd /srv/transport
echo hello,world >hello.txt

別マシンからサーバーへtransporterユーザーでssh接続します。私はWin10マシンで実行しました。172.16.1.101が今回のサーバーマシンです

下記のように、これは失敗します。

クライアントWindows
>ssh transporter@172.16.1.101
The authenticity of host '172.16.1.101 (172.16.1.101)' can't be established.
ED25519 key fingerprint is SHA256:nqgBLKW5g6KIa1wWE1fXVtWeT4P/4pErkSH+iyNRxHc.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '172.16.1.101' (ED25519) to the list of known hosts.
transporter@172.16.1.101's password:
PTY allocation request failed on channel 0
This service allows sftp connections only.
Connection to 172.16.1.101 closed.

scpは成功しました。前回までは失敗していたんですが…何でしょうね。

クライアントWindows
>scp transporter@172.16.1.101:/hello.txt .
transporter@172.16.1.101's password:
hello.txt                                                                             100%   12     0.8KB/s   00:00

sftpも成功しますが、画面表示が前回と微妙に違います。仕様が少し変わったのかな。

クライアントWindows
>sftp transporter@172.16.1.101
transporter@172.16.1.101's password:
Connected to 172.16.1.101.
sftp> pwd
Remote working directory: /
sftp> ls -l
-rw-******    ? root     root           12 Dec 29 17:15 hello.txt
drwx******    ? root     1001            2 Dec 29 17:07 publickey
sftp> get hello.txt
Fetching /hello.txt to hello.txt
hello.txt                                                                             100%   12     0.8KB/s   00:00
sftp> cd publickey
sftp> put hello.txt
Uploading hello.txt to /publickey/hello.txt
hello.txt                                                                             100%   12     2.9KB/s   00:00
sftp> ls -l
-rw-******    ? 1001     1001           12 Dec 29 17:21 hello.txt
sftp> pwd
Remote working directory: /publickey
sftp> exit

putしたhello.txtを確認。

サーバー172.16.1.101:ユーザーroot
cd /srv/transport/publickey/
ls -l
cat hello.txt

hello.txtが存在する事を確認します。

サーバー172.16.1.101:ユーザーroot
# cd /srv/transport/publickey/
# ls -l
total 1
-rw-rw-r-- 1 transporter transporter 12 Dec 29 08:21 hello.txt
# cat hello.txt
hello,world

動作確認が終了したら、不要なファイルは削除しましょう。

クライアントWindows
del hello.txt
サーバー172.16.1.101:ユーザーroot
cd /srv/transport
rm hello.txt
cd publickey
rm hello.txt

仕舞い

動作確認できたら/etcをSubversion登録しましょう。

サーバー172.16.1.101:ユーザーroot
svn st /etc | grep "^?" | cut -b9- | sudo xargs -I{} find {} -type f -or -type d -or -type l | sudo xargs -t svn add
svn ci /etc -m"add user 'transporter'"

これで、サーバーマシンとクライアントマシンの間で公開鍵を送付する手段を確保できました。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?