~/.ssh/config
クライアント側で特定のユーザー/サーバーへのショートカットを作成できることを知っていますが、/etc/ssh/ssh_config
サーバー側でも同様のことをしたいと思います。
つまり、クライアント側で発行するとき:
ssh [email protected]
私は実際に次にルートを移動しました。
/home/jon/pub
name.server.top
sftpをどこで使用するかについて。
私が見た例は/etc/ssh/sshd_config
次のとおりです。
Subsystem sftp internal-sftp
Match user pub
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
次の作業は続行されますか?
ChrootDirectory /home/jon/pub
pub
仮想ユーザーを作成できますか?つまり、リモートユーザーがログインしpub
てその人の公開鍵を含むため、別のディレクトリやディレクトリを作成する必要は/home/jon/.ssh/authorized_keys
ありません。/home/pub/.ssh/authorized_keys
/home/pub
答え1
うまくいけば、おそらく次のものが必要です。
ChrootDirectory /home/jon
- ホームディレクトリ
pub
が/etc/passwd
。/pub
/home/jon
の所有でなければroot
なりませんroot
。
また、(シェルの場合)、(共有ライブラリの場合)、(UIDから名前への変換のためのパスワード)など、必要なすべてを含む/home/jon
作業ルートディレクトリも必要です。bin
lib
etc
目的の ChrootDirectory ではない可能性が高いです。
/etc/passwd
/home/jonの下に、必要な「エイリアス」ユーザー名とは異なるホームディレクトリを使用して複数のエントリを作成できます。同じ数のUIDとGIDをユーザーに割り当てることができますjon
。
しかし、公開鍵認証が満足できるかどうかはわかりません。試してみてコメントを残してください。
答え2
私はこれを仮想マシン環境でテストしました。 SSHサーバーはCygwin(VMホストでもあり)、クライアントはArch Linux SSH(VMゲストでもあります)でした。
次のスクリプトを使用しました。
chrootがないため、共有フォルダにバイナリをコピーする必要はなく、公開鍵のみをコピーするだけです。とにかく(SSHの代わりに)内部SFTPを使用すると、バイナリ要件が減ると思います。
#!/bin/sh
## Setup SFTP access on server side
## using an alias user and to a subdir of the aliased user home
## ------------------------------------------------------------
## Customise
## Shared path inside the aliased user home
sharedpath="/home/jon/pub"
## Aliased user name
altuser="pub"
## Path to the public key of aliased user
pubkey=~/.ssh/pub_rsa.pub
## Add aliased user to /etc/passwd
user=`grep ^$USER /etc/passwd`
txt="$altuser:`echo $user | cut -d: -f2-5`"
txt="$txt:$sharedpath:`echo $user | cut -d: -f7`"
echo $txt>>/etc/passwd
## Set user rules in sshd_config
txt="Match User $altuser
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
"
echo "$txt" >>/etc/ssh/sshd_config
## Copy the public key in the shared folder
mkdir -p "$sharedpath/.ssh"
cp "$pubkey" "$sharedpath/.ssh/"
## Format sftp line
echo "You can now run on the client (adjust paths accordingly):"
echo "sftp -i ${pubkey%.*} [email protected]"
答え3
AuthorizedKeysCommand
少し実用的ではないようですが、すべてのホームディレクトリから公開鍵を取得するオプションを(乱用)使用することもできます。
ChrootDirectory
chrootについては、chrootの対話型セッションに必要な多くのことを読んでください。