단일 세션 동안 특정 사용자에게 SSH 액세스 권한을 부여할 수 있는 도구/수정된 ssh-server/ssh 옵션이 있는지 궁금합니다. 내가 피하고 싶은 것은 특정 손님을 위한 사용자 계정과 비밀번호를 생성하는 것입니다. 대신 특정 액세스 권한이 있는 기존 사용자 계정을 사용하여 한 번만 설정할 수 있습니다. 나는 액세스 권한을 부여한 모든 사람과 동일한 계정 정보를 공유하고 싶지 않습니다. 액세스는 지정된 간격 후에 한 번만 작동하거나 시간 초과되어야 합니다. 그렇지 않으면 도구에서 액세스가 감지되었는지, 액세스 권한을 부여할지 묻는 메시지를 표시해야 합니다. 아이디어는 라인을 공유하는 것입니다.
ssh tempuser001@host
누가 tempuser001
액세스를 시도하고 있지만 실제 사용자와 일치하지 않는 서버를 알려줍니다. 사용자는 임시 권한을 사용하여 ssh를 통해 연결할 수 있으며 scp
, rsync
와 같은 터널을 통해 작동하는 모든 작업을 수행할 수 있습니다 vnc
. 이는 원격 사용자가 할 수 있는 방법인 팀뷰어에서 영감을 받았습니다. 나는 그 사람과 ID를 공유했고 내 데스크톱에 액세스할 수 있었습니다.
답변1
한 가지 해결책은 SSH 키를 사용하는 것입니다.
특정 SSH 키를 사용하여 서버에 로그인할 때마다 실행할 명령을 지정할 수 있습니다. 이를 간단한 로그인 스크립트와 결합하면 필요한 모든 액세스 제어를 얻을 수 있습니다.
다음은 특정 날짜까지 액세스 권한을 부여하는 간단한 예입니다.
사용자의 SSH를 대상 사용자의 authorized_keys
파일에 추가하십시오. 이 예에서는 사용자가 더 이상 액세스할 수 없는 날짜를 추가했습니다.
~/.ssh/authorized_keys
command="/etc/ssh/access.sh 2013-04-05" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDc7nKsHpuC6WW8sBbf1j0snelmBsPAN5GQdJ86sJCyCsDzykvB2i2anLS/U131p0yDf0bU8W8kdsLE9pHQ5NLWlxlyWmFxdKujg4B+WxyHFKO0PHKfQhXEwMrYE4m9QwGYtsQrrWXBg4vQwUvOQDA4cNhdvNrIf/V+BGcdWtCXO/JGy7vkyKLd8LLHcZGsG3Pq5trHAKHaWkQgBN8P+atIX3FbwwQl4Ja020P7LW0ddPuUJxltOS11ZjdsG04s/xpL6JX3xi9FdDpO13SkQ5cqD0GIFkI+CLksqGYvvvpC7/22Rl4hc3nAcOIiwekylSB5rpU4LawF1IxCk0sg0BGr
실행할 로그인 스크립트를 만듭니다.
/etc/ssh/access.sh
#!/bin/bash
until="$1"
if (( $(date --date="$until" +%s) < $(date +%s) )); then
echo "Your login has expired"
exit
fi
exec ${SSH_ORIGINAL_COMMAND:--a -${SHELL##*/} $SHELL}
chmod a+x /etc/ssh/access.sh
(생성 후 잊지 마세요)
액세스 권한이 만료되면 다음과 같이 표시됩니다.
PROMPT # ssh localhost
Your login has expired
Connection to localhost closed.
PROMPT #
답변2
예S/Key 외에 Linux에 실제 일회용 비밀번호(OTP)가 있습니까?(특히 S/Key, OPIE 및OTPW) 도움이 되는?