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의 대화형 세션에 필요한 많은 사항을 읽어보세요 .

관련 정보