1. Téléchargez le dernier package openssh
2. Avant de mettre à niveau openssh, vous devez d'abord ouvrir le serveur telnet et vous connecter au serveur via telnet, car le processus de mise à niveau entraînera l'indisponibilité temporaire de ssh.
Ouvrez le service Telnet Linux :
Vérifiez si Telnet a été installé :
rpm -qa|grep telnet
telnet-0.17-48 .el6.x86_64
telnet-server-0.17-48.el6.x86_64
S'il n'est pas installé, installez-le via yum
[root@ leotest ~]# miam install telnet
[root@leotest ~]# yum install telnet-server
Démarrez le service telnet :
Modifiez le telnet et remplacez la désactivation par no
[root@leotest xinetd.d]# vi /etc/xinetd.d/telnet
# par défaut : on
# description : Le serveur telnet dessert les sessions telnet ; il utilise
# paires nom d'utilisateur/mot de passe non chiffrés pour l'authentification.
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
🎜>non
} Redémarrez le service xinetd : service xinetd restart ou :/etc/rc.d/init.d/xinetd restart Connectez-vous au serveur via telnet : [c:~]$ telnet 192.168.5.5 Connexion à 192.168.5.5:23...Connexion établie.Pour accéder au shell local, appuyez sur « Ctrl+Alt+] ».Red Hat Enterprise Linux Server version 6.8 (Santiago)Kernel 2.6.32-642.el6.x86_64 sur un x86_64login : testMot de passe :[test@leotest ~]$
par défauttelnet ne peut se connecter qu'aux utilisateurs ordinaires, vous devez donc vous connecter en tant qu'utilisateur ordinaire et accéder à root utilisateur
3. Sauvegardez les fichiers liés à openssh d'origine :
cp /usr/sbin/sshd /usr/sbin/ sshd.bakcp /etc/ssh/ssh_config /etc/ssh/ssh_config.bakcp / etc/ssh/sshd_config /etc/ssh/sshd_config.bakcp /etc/ssh/moduli /etc/ssh/moduli.bakRemarque : Supprimez les trois fichiers suivants, sinon une erreur sera signalée lors de l'installation :
/etc/ssh/ssh_config existe déjà, l'installation ne sera pas écrasée/etc/ssh/sshd_config existe déjà, l'installation n'écrasera pas/etc/ssh/moduli existe déjà, l'installation n'écrasera pas rm /etc/ssh/ssh_config -frrm /etc/ssh/sshd_config -frrm /etc/ssh/moduli -fr yum install pam-devel miam installez zlib-develyum install openssl-devel
4. Décompressez et installez openssh
[root@leotest softs ]# tar -zxvf openssh-7.4p1.tar.gz[root@leotest softs]# lsopenssh-7.4p1 openssh-7.4p1.tar.gz openssh-7.4p1- vs-openbsd.diff.gz[root@leotest softs]# cd openssh-7.4p1 [root@leotest openssh-7.4p1]#./configure --prefix=/usr /local/openssh --sysconfdir=/etc/ssh --with-pam --with-md5-passwords --mandir=/usr/ share/man### configure : erreur : *** zlib.h manquant – veuillez d'abord l'installer ou vérifier config.log#yum install zlib-devel ###configure : erreur : *** Impossible de trouver la libcrypto OpenSSL récente (voir config.log pour plus de détails) ***#yum install openssl openssl-develRecompiler : Nettoyer avant de recompiler Informations de compilation : make cleanldconfig[root@leotest openssh-7.4p1]#
./configure --prefix=/usr /local/openssh --sysconfdir=/etc/ssh --with-pam --with-md5-passwords --mandir=/usr/share/man
OpenSSH a été configuré avec les options suivantes :Binaires utilisateur : /usr/bin
Binaires système : /usr/sbin
Fichiers de configuration : /etc/ssh
Programme Askpass : /usr/libexec/ ssh-askpass
Pages de manuel : /usr/share/man/manX
Fichier PID : /var/run
Chemin chroot de séparation de privilèges : /var/empty
Chemin utilisateur par défaut sshd : /usr/bin:/bin:/usr/sbin:/sbin
Format de la page de manuel : doc
Prise en charge PAM : non
Prise en charge OSF SIA : non
Prise en charge KerberosV : non
Prise en charge SELinux : non
Prise en charge des cartes à puce :
Prise en charge S/KEY : non
Prise en charge du mot de passe MD5 : non
Prise en charge de Libedit : non
Prise en charge du contrat de processus Solaris : non
Prise en charge du projet Solaris : non
Prise en charge des privilèges Solaris : non
Adresse IP dans $DISPLAY hack : non
Traduire la v4 en v6 hack : oui
Prise en charge de l'authentification BSD : non
Source de nombres aléatoires : SL interne UNIQUEMENT
Style sandbox Privsep : rlimit
Hôte : x86_64-pc-linux-gnu
Compilateur : gcc
Compilateur indicateurs : -g -O2 -Wall -Wpointer-arith -Wuninitialized -Wsign-compare -Wformat-security -Wno-pointer-sign -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -ftrapv -fno-builtin-memset -fstack-protector -all -fPIE
Drapeaux du préprocesseur :
Drapeaux de l'éditeur de liens : -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack -fstack-protector-all - pie
Bibliothèques : -lcrypto -lrt -ldl -lutil -lz -lcrypt -lresolv
make && make install
/etc/init. d/sshd restart
5.覆盖旧的文件
cp -p /softs/openssh-7.4p1 /contrib/redhat/sshd.init /etc/init.d/sshd
chmod u+x /etc/init.d/sshd
chkconfig --add sshd
cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd
[root@pttlstydb openssh-7.4p1]# cp /usr/local/openssh/sbin/sshd /usr/sbin/ sshd
cp : écraser `/usr/sbin/sshd' ? y
cp : impossible de créer un fichier normal `/usr/sbin/sshd' : Fichier texte occupé
文件正在被使用
[root@pttlstydb openssh-7.4p1]# ps -ef|grep sshd
root 14111 1 0 10:05 ? 00:00:00 sshd : root@pts/0
root 14865 1 0 10:22 ? 00:00:00 sshd : root@notty
root 24182 14779 0 10:30 pts/1 00:00:00 grep sshd
[root@pttlstydb openssh-7.4p1]# kill -9 14865
[root@pttlstydb openssh-7.4p1]# ps -ef|grep sshd
root 24227 14779 0 10:31 pts/1 00:00:00 grep sshd
重新覆盖:
cp /usr/local/openssh/bin/ssh /usr/bin/ssh
[root @leotest openssh-7.4p1]# service sshd restart
Arrêt de sshd : [ OK ]
ssh-keygen : option illégale -- A
utilisation : ssh-keygen [ options]
Options :
cat /etc/init.d/sshd
start()
{
# Créer des clés si nécessaire
/usr/bin/ssh-keygen -A
if [ -x /sbin/restorecon ]; puis
/sbin/restorecon /etc/ssh/ssh_host_key.pub
/sbin/restorecon /etc/ssh/ssh_host_rsa_key.pub
/sbin/restorecon /etc/ ssh/ssh_host_dsa_key.pub
/sbin/restorecon /etc/ssh/ssh_host_ecdsa_key.pub
fi
echo -n $"Démarrage de $prog :"
$SSHD $OPTIONS && succès || échec
RETVAL=$?
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/sshd
echo
}
因为默认低版本的ssh-keygen没有-A参数
解决方法:
cp /usr/local/openssh/bin /ssh-keygen /usr/bin/ssh-keygen
重启sshd服务:
[root@leotest ssh]# service sshd restart
Arrêter sshd : [ OK ]
Démarrage de sshd : [ OK ]
Démarrage de sshd:/etc/ssh/sshd_config ligne 81 : option non prise en charge GSSAPIAuthentication
/etc/ssh/sshd_config ligne 83 : option non prise en charge GSSAPICleanupCredentials
原因:新版本的openssh不支持以上参数,需要修改sshd的配置文件
[root@leotest openssh-7.4p1]# vi /etc/ssh/sshd_config
##去掉前面的注释,允许root通过ssh登录
PermitRootLogin oui
##注释掉下面三个参数
#GSSAPIAuthentication oui
#GSSAPICleanupCredentials oui
#UsePAM oui
##在文件末尾加上如下信息,否则还是无法通过ssh登录linux:
导致此问题的原因是ssh 升级后,为了安全,默认不再采用原来一些加密算法,我们手工添加进去即可。
Chiffres aes128-cbc,aes192-cbc,aes256-cbc, aes128-ctr,aes192-ctr,aes256-ctr,3des-cbc,arcfour128,arcfour256,arcfour,blowfish-cbc,cast128-cbc
MAC hmac-md5,hmac-sha1,umac-64@openssh. com,hmac-ripemd160,hmac-sha1-96,hmac-md5-96
KexAlgorithms diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1, diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group1-sha1,curve25519-sha256@libssh.org
6.重启sshd服务,测试ssh连接服务器
redémarrage du service sshd
[c:~]$ ssh 192.168.5.5
Connexion au 192.168.5.5:22...
Connexion établie.
Pour accéder au shell local, appuyez sur « Ctrl+Alt+] ».
Dernière connexion : mardi 27 décembre 00:22:10 2016 à partir de 192.168.5.2
[root@leotest ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.1e-fips 11 février 2013
7.禁用telnet
[root@leotest ~]# vi /etc/xinetd.d/telnet
# par défaut : activé
# description : Le serveur telnet dessert les sessions telnet ; il utilise
# des paires nom d'utilisateur/mot de passe non cryptées pour l'authentification.
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
serveur 🎜>
log_on_failure += USERIDdésactiver = oui
}Arrêterxinetd Service :
[root@leotest ~]# service xinetd stopArrêt de xinetd :Arrêter le démarrage automatique à boot :
[root@leotest ~]# chkconfig --list xinetdxinetd n'a pas démarré automatiquement :off3:on 4:on 5:on6:off
[root@leotest ~]# chkconfig xinetd off[root@leotest ~]# chkconfig --list xinetdxinetd 0:off 1 :off 2:off3:off 4:off 5:off 6:off
Le problème a été résolu après la mise à niveau :
Une erreur a été signalée lors de la connexion à Linux via winscp. La solution est la suivante : [root@leotest ~]# vi /etc/ssh/sshd_config# remplacer la valeur par défaut d'aucun sous-système#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Commentez l'original et remplacez-le par le sftp interne suivantRedémarrez le service sshd : redémarrage du service sshdCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!