각 사용자의 /etc/ssh/ssh_config에서 "user-ops"를 "user-adm"으로 변경합니다.

각 사용자의 /etc/ssh/ssh_config에서 "user-ops"를 "user-adm"으로 변경합니다.

질문:이름이 모두 인 로컬 사용자 목록을 포함하는 서버 A가 있습니다 something-ops. 그러나 A에서 다른 모든 서버로 SSH 를 연결할 때 something-admin.joe-opsjoe-admin

시도:난 우리가 어디에든 있을 수 있다는 걸 알아/home/$USER/.ssh/config

Host *
    username: joe-admin

그러나 각 사용자별로 이를 설정하고 유지하는 것은 다소 번거로울 수 있습니다. 특히 가 아니라 와 $USER같기 때문입니다 .something-opssomething

스크립트 또는 변수 대체를 사용하여 각 사용자에 대해 변경을 수행할 수 있습니까 user-ops?user-adm/etc/ssh/ssh_config

답변1

래퍼 스크립트를 사용해 볼 수 있습니다.

#! /bin/sh
username=${USER%-ops}-admin
exec /usr/bin/ssh -l "$username" "$@"

에 넣거나 에서 이전에 적절한 이름의 파일에 넣습니다 /usr/local/bin/ssh(물론 가 아닌 다른 곳에 있으면 그에 따라 모든 것을 조정하십시오).ssh/usr/bin$PATHssh/usr/bin

scp유사한 래퍼 스크립트가 있으면 이를 가질 수도 있습니다. sftp스크립트를 재정의해야 하는 사용자는 실제 바이너리의 위치를 ​​호출할 수 있습니다.

답변2

틀림없이 사용자가 제대로 로그인하는 것을 기억하지 못하는 경우(및/또는 ~/.ssh/config스스로 개인 설정을 설정할 수 없는 경우) IMHO에서는 애초에 관리자 권한을 부여해서는 안 됩니다.


사용자를 만족시키고 싶다면 ~/.ssh/config 올바른 정보로 개인화된 콘텐츠를 설정하는 것이 최선의 선택입니다.

Host *
    username: login-admin

~/.ssh/config해당 홈 디렉터리 템플릿의 파일이 그대로 복사되고 메커니즘이 사용자 정의 지원을 제공하지 않기 때문에 템플릿을 사용 /etc/skel/하여 각(새) 사용자에 대해 설정할 수 없습니다 .

이 문제를 해결하기 위해 항목이 없는 모든 사용자가 처음으로 로그인할 때 해당 파일이 생성되거나 올바른 항목으로 채워지는지 ~/.ssh/config 확인 하고 싶습니다.Host *

한 가지 방법은 입니다 /etc/profile.d.

확장이 포함된 스크립트는 .sh일반적으로 사용자가 bash 로그인 셸을 사용하여 로그인할 때마다 실행됩니다. 마찬가지로 확장 기능이 있는 스크립트는 .csh 일반적으로 csh가 할당된 사용자에 대해 실행됩니다.

# /etc/profile.d/ssh-config.sh 

if ! grep -qi "host *" ~/.ssh/config 2&>1
then
   if [ ! -d ~/.ssh/ ]
   then
     # Set up .ssh dirctory with correct permissions
     mkdir ~/.ssh/  && chmod 0700 ~/.ssh/
   fi
   echo "Host *
     username: ${USER%-ops}-admin" >> ~/.ssh/config  && chmod 0600 ~/.ssh/config
fi

관련 정보