J'ai un problème reproductible sur les machines virtuelles Linux Ubuntu (14.04 LTS) créées dans Azure.
Après avoir installé le systemd
package via le script, le système refuse infiniment les nouvelles connexions ssh.
Le système démarre.
Connexion fermée par xxx.xxx.xxx.xxx
La connexion ssh active est cependant maintenue. Aucun /etc/nologin
fichier n'est présent dans le système.
La seule option que je vois est une réinitialisation matérielle qui résout le problème. Mais comment l'éviter?
Voici le script que j'utilise:
#!/bin/bash
# Script input arguments
user=$1
server=$2
# Tell the shell to quote your variables to be eval-safe!
printf -v user_q '%q' "$user"
printf -v server_q '%q' "$server"
#
SECONDS=0
address="$user_q"@"$server_q"
function run {
ssh "$address" /bin/bash "$@"
}
run << SSHCONNECTION
# Enable autostartup
# systemd is required for the autostartup
sudo dpkg-query -W -f='${Status}' systemd 2>/dev/null | grep -c "ok installed" > /home/$user_q/systemd-check.txt
systemdInstalled=\$(cat /home/$user_q/systemd-check.txt)
if [[ \$systemdInstalled -eq 0 ]]; then
echo "Systemd is not currently installed. Installing..."
# install systemd
sudo apt-get update
sudo apt-get -y install systemd
else
echo "systemd is already installed. Skipping this step."
fi
SSHCONNECTION
Réponses:
Je soupçonne qu'il existe un
/etc/nologin
fichier (dont le contenu serait «Le système démarre») qui n'est pas supprimé après l'installation de systemd.[mise à jour] Ce qui vous affecte est un bug qui a été signalé sur le BTS d'Ubuntu en décembre dernier. Cela est dû à un
/var/run/nologin
fichier (=/run/nologin
puisqu'il/var/run
s'agit d'un lien symbolique vers/run
) qui n'est pas supprimé à la fin de l'installation de systemd./etc/nologin
est le fichier nologin standard./var/run/nologin
est un autre fichier qui peut être utilisé par lenologin
module PAM (man pam_nologin
).Notez qu'aucun des
nologin
fichiers n'affecte les connexions par racine utilisateur, seuls les utilisateurs réguliers ne peuvent pas se connecter.la source
/etc/shadow
et le compte n'est pas verrouillé@xhienne m'a donné la bonne direction.
Après avoir cherché dans le système de fichiers, j'ai trouvé le fichier
/run/nologin
(@xhienne suggéré / etc / nologin), ce qui a résolu le problème.La condition existait dans
/usr/lib/tmpfiles.d/systemd.conf
Je vais inclure cette étape dans mon script.
la source
Le suivi des bogues de distribution de Mageia semble avoir un problème connexe ouvert: Bogue 21080 - connexion ssh désactivée par / run / nologin après un redémarrage .
Après avoir rencontré ce problème assez fréquemment, la recherche de l'outil de suivi a permis d'identifier une solution de contournement qui pourrait être plus appropriée que la simple suppression du fichier / run / login .
Voici quelques données relatives aux requêtes d'informations dans ce traqueur de bogues:
L'outil de suivi des bogues et les informations ci-dessus semblent montrer que le problème est dû en fait à l'échec du démarrage du démon systemd-user-sessions.service .
C'est en fait ce qui se passe dans mon cas, donc la solution de contournement suivante corrige temporairement la condition de connexion interdite:
Après cela, le fichier / run / nologin n'est plus présent et on peut SSH depuis un autre système. Notez, cependant, que ce n'est pas fiable car parfois l'utilisateur n'a pas accès à la console du système affecté.
la source
J'ai eu exactement le même problème mais je pense que plusieurs scénarios peuvent le créer.
Dans mon cas, pour réactiver l'accès à distance, j'ai dû demander à KVM un accès direct à notre serveur distant, puis:
Mais sur l'écran KVM, j'ai pu voir qu'il avait démarré en mode d'urgence!
Auparavant, j'avais fait des changements de disque / partition (augmentation des inodes) qui ont généré un nouvel UUID et oublié de l'ajouter le fichier / etc / fstab.
Après avoir lancé la commande:
... et copiez en collant le nouvel UUID sur le fichier fstab, j'ai pu redémarrer le serveur sans aucun problème et l'accès SSH à distance allait bien après cela.
la source
Dans le fichier / etc / ssh / sshd_config, définissez UsePAM sur no
la source