En ce qui concerne la 3ème stratégie suggérée, autre que la lecture useradd -o -u userXXX
attentive des options recommandées par @jlliagre, je ne suis pas habitué à exécuter plusieurs utilisateurs avec le même identifiant utilisateur. (Par conséquent, si vous continuez avec cela, je serais intéressé si vous pouviez mettre à jour le message avec tout problème (ou succès) qui pourrait survenir ...)
Je suppose que ma première observation concernant la première option "La clé publique SSH de tout le monde est placée dans ~ root / .ssh / allowed_keys2" est la suivante: à moins que vous ne travailliez jamais sur aucun autre système;
- puis au moins une partie du temps , vous allez devoir travailler avec des comptes d'utilisateurs et
sudo
La deuxième observation serait que, si vous travaillez sur des systèmes qui aspirent à la conformité HIPAA, PCI-DSS, ou à des logiciels tels que CAPP et EAL, vous devrez contourner les problèmes de sudo car:
- C’est une norme de l’industrie de fournir des comptes d’utilisateur individuels non root, pouvant être audités, désactivés, expirés, etc., généralement à l’aide d’une base de données d’utilisateurs centralisée.
Alors; Utiliser des comptes personnalisés et sudo
Il est regrettable qu'en tant qu'administrateur système, presque tout ce que vous aurez besoin de faire sur une machine distante va nécessiter des autorisations élevées. Cependant, il est ennuyeux que la plupart des outils et utilitaires basés sur SSH soient interrompus pendant votre séjour. sudo
Par conséquent, je peux vous transmettre certaines astuces que j’utilise pour contourner les inconvénients de ce sudo
que vous avez mentionné. Le premier problème est que si la connexion root est bloquée à l'aide PermitRootLogin=no
ou si vous n'avez pas la racine à l'aide de la clé ssh, alors les fichiers SCP ressemblent à un PITA.
Problème 1 : Vous voulez scp des fichiers du côté distant, mais ils nécessitent un accès root, cependant vous ne pouvez pas vous connecter directement à la boîte distante en tant que root.
Solution ennuyeuse : copiez les fichiers dans le répertoire de base, chown et scp down.
ssh userXXX@remotesystem
, sudo su -
etc, cp /etc/somefiles
to /home/userXXX/somefiles
, chown -R userXXX /home/userXXX/somefiles
utilisez scp pour récupérer des fichiers à distance.
Très ennuyeux en effet.
Solution moins ennuyeuse : sftp supporte le -s sftp_server
drapeau, vous pouvez donc faire ce qui suit (si vous avez configuré sudo sans mot de passe /etc/sudoers
);
sftp -s '/usr/bin/sudo /usr/libexec/openssh/sftp-server' \
userXXX@remotehost:/etc/resolv.conf
(Vous pouvez aussi utiliser ce bidouillage avec sshfs, mais je ne suis pas sûr que ce soit recommandé ... ;-)
Si vous ne possédez pas de droits sudo sans mot de passe, ou si, pour une raison quelconque, la méthode ci-dessus est rompue, je peux vous suggérer une méthode de transfert de fichier moins ennuyeuse pour accéder aux fichiers racine distants.
Méthode Ninja Port Forward :
Connectez-vous à l'hôte distant, mais spécifiez que le port distant 3022 (qu'il soit libre ou non réservé aux administrateurs, c'est-à-dire> 1024) doit être renvoyé au port 22 du côté local.
[localuser@localmachine ~]$ ssh userXXX@remotehost -R 3022:localhost:22
Last login: Mon May 21 05:46:07 2012 from 123.123.123.123
------------------------------------------------------------------------
This is a private system; blah blah blah
------------------------------------------------------------------------
Obtenez racine de manière normale ...
-bash-3.2$ sudo su -
[root@remotehost ~]#
Maintenant, vous pouvez scp les fichiers dans l'autre sens en évitant l'étape fastidieuse de faire une copie intermédiaire des fichiers;
[root@remotehost ~]# scp -o NoHostAuthenticationForLocalhost=yes \
-P3022 /etc/resolv.conf localuser@localhost:~
localuser@localhost's password:
resolv.conf 100%
[root@remotehost ~]#
Problème 2: Transfert d’agent SSH : Si vous chargez le profil racine, par exemple en spécifiant un shell de connexion, les variables d’environnement nécessaires pour le transfert d’agent SSH telles que SSH_AUTH_SOCK
réinitialisées, le transfert d’agent SSH est donc "interrompu" sudo su -
.
Réponse à moitié cuite :
Tout ce qui charge correctement un shell root va réinitialiser correctement l'environnement. Cependant, il existe une légère solution de contournement que vous pouvez utiliser lorsque vous avez besoin à la fois de la permission root ET de la possibilité d'utiliser l'agent SSH, EN MÊME TEMPS.
Cela crée une sorte de profil de chimère, qui ne devrait vraiment pas être utilisé, car c’est un hack méchant , mais qui est utile lorsque vous avez besoin de fichiers SCP de l’hôte distant en tant que root, vers un autre hôte distant.
Quoi qu'il en soit, vous pouvez indiquer à votre utilisateur de conserver ses variables ENV en définissant les paramètres suivants dans sudoers:
Defaults:userXXX !env_reset
Cela vous permet de créer de mauvais environnements de connexion hybrides comme ceci;
connectez-vous normalement;
[localuser@localmachine ~]$ ssh userXXX@remotehost
Last login: Mon May 21 12:33:12 2012 from 123.123.123.123
------------------------------------------------------------------------
This is a private system; blah blah blah
------------------------------------------------------------------------
-bash-3.2$ env | grep SSH_AUTH
SSH_AUTH_SOCK=/tmp/ssh-qwO715/agent.1971
créer un shell bash, qui s'exécute /root/.profile
et /root/.bashrc
. mais conserveSSH_AUTH_SOCK
-bash-3.2$ sudo -E bash -l
Donc, ce shell a les permissions root et root $PATH
(mais un répertoire personnel encombré ...)
bash-3.2# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) context=user_u:system_r:unconfined_t
bash-3.2# echo $PATH
/usr/kerberos/sbin:/usr/local/sbin:/usr/sbin:/sbin:/home/xtrabm/xtrabackup-manager:/usr/kerberos/bin:/opt/admin/bin:/usr/local/bin:/bin:/usr/bin:/opt/mx/bin
Mais vous pouvez utiliser cette invocation pour effectuer des tâches qui requièrent une racine sudo distante, mais également l’accès de l’agent SSH comme tel;
bash-3.2# scp /root/.ssh/authorized_keys ssh-agent-user@some-other-remote-host:~
/root/.ssh/authorized_keys 100% 126 0.1KB/s 00:00
bash-3.2#
-o
drapeau dans lauseradd
page de manuel. Cet indicateur est là pour permettre à plusieurs utilisateurs de partager le même uid.