모든 사용자가 내 서버에 대한 모든 종류의 액세스에 공개/개인 키를 사용할 수 있기를 바랍니다. SSH 구성에서는 3개의 그룹을 설정하겠습니다.
sshaccess
: 사용자는 셸, SFTP 및 터널을 사용할 수 있습니다.sftpaccess
: 사용자는 셸을 사용할 수 없지만 SFTP는 사용할 수 있습니다.mysqlaccess
: 사용자는 셸을 사용할 수 없지만 포트 3306으로 TCP 전달을 사용할 수 있습니다.
다음 3개 그룹에 대한 SSH 연결만 허용하겠습니다.
AllowGroups sshaccess sftpaccess mysqlaccess
그룹이 있는 사용자의 경우 sftpaccess
SFTP를 강제하고 홈 폴더에 사용자를 잠급니다.
Match Group sftpaccess
ForceCommand internal-sftp
ChrootDirectory %h
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
그룹이 있는 사용자의 경우 mysqlaccess
포트 3306에서 터널링을 허용합니다.
Match Group mysqlaccess
Banner no
PermitTunnel yes
AllowTcpForwarding yes
PermitOpen 127.0.0.1:3306
그러나 사용자가 있고 caique
그에게 다음이 필요하다고 가정해 보겠습니다.
- 홈 폴더에 잠겨 있는 SFTP에 액세스하세요.
- 자격 증명을 사용하여 연결하려면 MySQL 터널에 액세스하세요.
SFTP용 사용자와 MySQL Tunnel용 사용자를 각각 생성하고 싶지 않습니다. 이를 달성하는 가장 좋은 방법은 무엇입니까?
MySQL 포트를 노출하고 싶지 않기 때문에 MySQL Tunnel을 사용합니다. 그러나 테스트에서 연결된 사용자와 함께 터널을 사용할 수 없습니다 sftpaccess
. 무엇을 놓치고 있습니까?
답변1
다음과 같은 섹션은 어떻습니까?
Match Group sftpaccess Group mysqlaccess
ForceCommand internal-sftp
ChrootDirectory %h
AllowAgentForwarding no
Banner no
PermitTunnel yes
AllowTcpForwarding yes
PermitOpen 127.0.0.1:3306
물론, 이 작업은 반복되어야 하며 sshd가 모든 사용자 그룹을 로드하는지 여부에 따라 작동할 수도 있고 작동하지 않을 수도 있습니다(그렇다고 생각합니다).
또는 사용자별 사용자를 생성할 수도 있습니다 Match
(이는 이러한 사용자를 더 많이 확보하지 못할 것이라고 가정하는 경향이 있습니다.
나는 규칙의 순서가 중요하다고 생각하지만 이것이 (다른 두 규칙에 비해) 첫 번째인지 마지막인지는 확실하지 않습니다. 제 생각에는 그것이 1위가 되어야 한다고 생각합니다.