Ssh

重定向 SSH 使用者伺服器端

  • September 12, 2014

我知道我可以通過~/.ssh/configor在客戶端為特定使用者/伺服器創建快捷方式/etc/ssh/ssh_config,但我想做類似的事情,但在伺服器端。

也就是說,當我在客戶端上發佈時:

ssh pub@name.server.top

我實際上是 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目錄。

我在虛擬機上下文中對此進行了測試:SSH 伺服器是 Cygwin(也是 VM 主機);客戶端是 Arch Linux SSH(也是 VM 來賓)。

我使用了以下腳本。

我不是 chrooting,所以我不需要複製共享文件夾中的任何二進製文件,只需複制公鑰。無論如何,我認為,使用 internal-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%.*} $altuser@name.server.top"

如果它可以工作,你可能應該有:

  • ChrootDirectory /home/jon
  • pubin的主目錄/etc/passwd設置為/pub.

/home/jon必須由 擁有root且只能由root.

您還需要一個工作根目錄,其中包含您需要的所有內容/home/jon,例如bin(用於 shell)、lib(共享庫)、etc(用於 uid 到名稱轉換的密碼)等等。

您所追求的很可能不是 ChrootDirectory。

相反,您可以嘗試/etc/passwd使用 /home/jon 下的不同主目錄使用您希望的“別名”使用者名創建多個條目。您可以為使用者分配相同的數字 UID 和 GID jon

不過,我不確定公鑰身份驗證能否令人滿意地工作。試試看並發表評論。

引用自:https://unix.stackexchange.com/questions/155230