
제가 일하는 회사에는 누구나 SSH를 통해 특정 작업을 수행하는 데 사용할 수 있는 특정 공유 계정이 있습니다. 현재로서는 사용자가 너무 많고 각 사용자는 셸 별칭 등과 같은 고유한 사용성 특전을 가지고 있습니다.
내가 하려는 것은 ~/.bash_profile
실제로 로그인한 사람에 따라 사용자가 서로 다른 쉘 설정을 가질 수 있도록 하는 것입니다. 예를 들어 Jonathan이 로그인하면 쉘이 추가로 실행되도록 ~/.Jonathan_profile
하고 Bob의 경우 쉘을 소스 ~/.Bob
프로파일로 실행하도록 합니다.
그러나 SSH를 사용하여 로그인한 사용자의 원격 시스템에 있는 계정 이름을 알 수 있는 방법이 있는지는 확실하지 않습니다.
어떤 힌트라도 대단히 감사하겠습니다.
답변1
클라이언트가 알려주지 않기 때문에 클라이언트가 어떤 계정을 사용하고 있는지 알 수 없습니다. 하지만 당신은 이런 것들이 있습니다~할 수 있다하다:
별도의 계정을 만들고 sudo를 사용하여 사용자에게 공유 계정에 대한 액세스 권한을 부여합니다. 이는 최상의 감사(누가 무엇을 하는지 항상 기록됨)를 제공하고 사용자가 자신의 계정에 원하는 모든 유틸리티를 넣을 수 있는 정말 선호되는 옵션입니다. 그러나 그것은 또한 대부분의 작업입니다.
공개 키 인증만 사용하고 다음 구문을 사용하여 거기에서 환경 변수를 설정합니다.
environment="END_USER=whoever" ssh-rsa asdfasdfr...
안에
.ssh/authorized_keys
.$END_USER
에서 보는 것보다.profile
. 분명히 로그인에 사용되는 각 공개 키에 대해 이를 설정해야 합니다.옵션 을 사용하여 클라이언트에서 환경 변수를 설정하도록 모든 사람에게 지시합니다
SendEnv
(서버에 해당AcceptEnv
설정이 있어야 함). 다시 에서 변수를 확인합니다.profile
.변수 에서 소스 IP와 포트를 가져와서 실제 소스 사용자를 가져오는 데
SSH_CONNECTION
사용합니다 .ident
그러나identd
클라이언트에서 실행되어야 하며 요즘에는 거의 사용되지 않습니다. 왜냐하면 그다지 유용하지는 않지만 잠재적인 공격자가 시스템에 대한 일부 정보를 얻는 데 유용하기 때문입니다.단일 계정 내에서 보다 복잡한 사용자 정의를 위해 사용자 정의 셸 래퍼를 작성하고
command
인증된 키의 속성과 함께 사용하는 것이 항상 가능합니다. 그것도 꽤 손이 많이 가는 작업이지만, 별도의 계정을 만들지 않고도 거의 모든 제한과 감사를 구현하는 데 사용할 수 있습니다.
참고: 공개 키만 사용하고 비밀번호를 비활성화하는 것이 좋습니다. 이렇게 하면 누군가의 액세스를 취소하려면 해당 키를 제거하면 됩니다.