各ユーザーの /etc/ssh/ssh_config で「user-ops」を「user-adm」に変更します。

各ユーザーの /etc/ssh/ssh_config で「user-ops」を「user-adm」に変更します。

質問:すべての名前を持つローカルユーザーのリストを含むサーバーAがありますsomething-ops。ただし、Aから他のすべてのサーバーにSSHを接続するときsomething-adminjoe-opsjoe-admin

試み:私は私たちがどこにいてもよいことを知っています/home/$USER/.ssh/config

Host *
    username: joe-admin

ただし、ユーザーごとにこれを設定して維持するのはやや面倒です。特にではなくと$USER同じだからです。something-opssomething

スクリプトまたは変数置換を使用して各ユーザーに対して変更を実行できますかuser-opsuser-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

関連情報