SSHユーザーサーバー側リダイレクト

SSHユーザーサーバー側リダイレクト

~/.ssh/configクライアント側で特定のユーザー/サーバーへのショートカットを作成できることを知っていますが、/etc/ssh/ssh_configサーバー側でも同様のことをしたいと思います。

つまり、クライアント側で発行するとき:

 ssh [email protected]

私は実際に次にルートを移動しました。

/home/jon/pub

name.server.topsftpをどこで使用するかについて。

私が見た例は/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作業ルートディレクトリも必要です。binlibetc

目的の 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少し実用的ではないようですが、すべてのホームディレクトリから公開鍵を取得するオプションを(乱用)使用することもできます。

ChrootDirectorychrootについては、chrootの対話型セッションに必要な多くのことを読んでください。

関連情報