질문:이름이 모두 인 로컬 사용자 목록을 포함하는 서버 A가 있습니다 something-ops
. 그러나 A에서 다른 모든 서버로 SSH 를 연결할 때 something-admin
.joe-ops
joe-admin
시도:난 우리가 어디에든 있을 수 있다는 걸 알아/home/$USER/.ssh/config
Host *
username: joe-admin
그러나 각 사용자별로 이를 설정하고 유지하는 것은 다소 번거로울 수 있습니다. 특히 가 아니라 와 $USER
같기 때문입니다 .something-ops
something
스크립트 또는 변수 대체를 사용하여 각 사용자에 대해 변경을 수행할 수 있습니까 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
$PATH
ssh
/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