重定向 SSH 用户服务器端

重定向 SSH 用户服务器端

我知道我可以通过~/.ssh/config或在客户端为特定用户/服务器创建快捷方式/etc/ssh/ssh_config,但我想在服务器端做类似的事情。

也就是说,当我在客户端发出:

 ssh [email protected]

我实际上是 chrooted 到

/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

您还需要一个工作根目录,其中包含您需要的所有内容/home/jon,例如bin(用于 shell)、lib(共享库)、etc(用于 uid 到名称转换的 passwd)等。

它很可能不是您想要的 ChrootDirectory。

/etc/passwd您可以尝试使用您希望的“别名”用户名以及 /home/jon 下的不同主目录创建多个条目。您可以为用户分配相同的数字 UID 和 GID jon

不过,我不确定公钥身份验证能否令人满意。尝试一下并发表评论。

答案2

我在虚拟机环境中对此进行了测试:SSH 服务器是 Cygwin(也是 VM 主机);客户端是 Arch Linux SSH(也是 VM guest)。

我使用了以下脚本。
我没有 chroot,因此不需要复制共享文件夹中的任何二进制文件,只需复制公钥。无论如何,我认为,使用内部 sftp(而不是 SSH),应该减少二进制要求。

#!/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

您可能可以(ab)使用AuthorizedKeysCommand从所有主目录获取公钥的选项,尽管这似乎有点不切实际。

至于 chroot,请仔细阅读ChrootDirectorychroot 中的交互式会话需要的很多内容。

相关内容