사용자 정의 Openssh 셸


8

환경은 Ubuntu Server 12.04입니다.

로그 파일에서 tail -f를 실행하고 프로그램이 종료되면 (ctrl + c) 세션을 닫는 쉘로만 ssh 할 수있는 서버에서 사용자를 작성하고 싶습니다.

이것을 달성 할 수있는 방법이 있습니까?

답변:


8

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)을 사용 하여 쉘을 얻을 수 있음을 명심하십시오 . 이러한 방식으로 사용자를 제한하려면 올바른 파일 시스템 권한이 유일한 해결책입니다.


빠르고 정확한 답장을 보내 주셔서 감사합니다.
Ablue

2
/etc/shells쉘에 다른 것을 가진 사용자가 쉘을 이것으로 설정할 수 있도록 하기 위해 무언가를 추가하고 싶은 유일한 이유 는; 수퍼 유저 ( root)는 항상 누군가의 셸을 원하는 것으로 변경할 수 있습니다.
Jonathan Callen

1
@JonathanCallen이 말한 것을 추가하려면 : 실제로 /etc/shells사용자가 자신의 쉘을 변경할 수 있도록 스크립트를 추가하는 것은 보안 누출입니다 ( /usr/bin/tail_log_file따라서 "제한되지 않은 쉘"로 간주 되기 때문에 )!
Joachim Sauer

알겠습니다. 제거하겠습니다.
Ablue

1
너무 복잡합니다. 강제 명령 (@tink의 답변 참조)이 방법입니다.
Reinstate Monica-M. Schröder

10

키 쌍 기반 인증을 사용하면 ssh 강제 명령이 떠 오릅니다.

man authorized_keys
/command=

2

공개 키 인증을 사용하여 로그인 할 때 선택한 명령을 실행하도록 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.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.