환경은 Ubuntu Server 12.04입니다.
로그 파일에서 tail -f를 실행하고 프로그램이 종료되면 (ctrl + c) 세션을 닫는 쉘로만 ssh 할 수있는 서버에서 사용자를 작성하고 싶습니다.
이것을 달성 할 수있는 방법이 있습니까?
답변
pedantic하기 위해서는 ctrl + c가 아니지만 SIGHUP
(ctrl + d에 더 가까운) 앱을 죽입니다.
본질적으로 사용자 쉘에 원하는 것을 넣을 수 있습니다 /etc/passwd
. 사용자 passwd 행의 기본값 (아마도 /bin/bash
)을 다른 프로그램 으로 바꾸십시오 . 해당 프로그램은 /usr/bin/tail_log_file
다음 과 같은 스크립트가 될 수 있습니다 (예 : umode 0755의 root : root 소유).
#!/bin/rbash
tail -f /path/to/logfile
rbash 이외의 일부 인터프리터를 사용할 수 있지만 이러한 경우 제한된 쉘을 사용하는 것이 좋습니다.
그것에 대해 매우 놀랍도록 스크립트 경로를에 추가해야 /etc/shells
하지만 일반적으로 어쨌든 작동합니다.
또한 사용자는 스크립트를 백그라운드에 넣거나 일부 옵션 ( ssh username@host bash
)을 사용 하여 쉘을 얻을 수 있음을 명심하십시오 . 이러한 방식으로 사용자를 제한하려면 올바른 파일 시스템 권한이 유일한 해결책입니다.
답변
키 쌍 기반 인증을 사용하면 ssh 강제 명령이 떠 오릅니다.
man authorized_keys
/command=
답변
공개 키 인증을 사용하여 로그인 할 때 선택한 명령을 실행하도록 ssh를 구성 할 수 있습니다. 이렇게하려면 키 쌍을 생성하십시오.
djs@sardinia:~$ ssh-keygen -f restricted-key
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in restricted-key.
Your public key has been saved in restricted-key.pub.
The key fingerprint is: b1:8f:26:47:c2:c5:f2:8d:ed:a0:c4:bd:9a:30:9d:08 djs@sardinia
[...]
restricted-key.pub
사용자 ~/.ssh/authorized_keys
파일 에 넣는 데 적합한 행을 포함 합니다.
ssh-rsa AAAA...UDz47Nl djs@sardinia
그러나 이것에 명령을 추가 할 수 있으며 ssh는 키로 로그인 할 때 해당 명령을 실행합니다.
command="tail -f /my/interesting/file" ssh-rsa AAAA...UDz47Nl djs@sardinia
그런 다음 사용자는를 사용하여 머신에 ssh 할 수 있습니다 ssh -i restricted-key
.