මගේ පැත්තෙන් මෙය සිදුවන්නේ ssh
නව ( OpenSSH_7.9p1
සහ ඉහළ) සේවාදායකයින්ගේ දෝෂයක් ලෙස මා සලකන දෙයක් නිසාය , එය වඩා ecdsa
පැරණි සේවාදායක යතුරක් ඉගෙන ගැනීමට උත්සාහ කරන විට පැරණි rsa
වර්ගයේ යතුරක් දැනටමත් දන්නා කරුණකි. එය පසුව මෙම නොමඟ යවන පණිවිඩය ඉදිරිපත් කරයි!
මේ සඳහා හොඳ විසඳුමක් මා නොදනිමි rsa
, සේවාදායකයාට "නව වඩා ආරක්ෂිත ecdsa
යතුරු" නැවත ඉගෙන ගත හැකි වන පරිදි "හොඳ නමුත් පැරණි යතුරු" ඉවත් කිරීම මට ඇති එකම විසඳුමයි . ඒ නිසා:
පළමු පියවර වන්නේ හොඳ පැරණි RSA යතුරු ඉවත් කිරීමයි ( අවවාදයයි! මෙය MitM වෙතින් ආරක්ෂාව නැති කරයි ):
$ sed -i '/ ssh-rsa /d' ~/.ssh/known_hosts
දෙවන පියවර වන්නේ සියලුම ධාරක යතුරු නැවත ඉගෙනීමයි, එය නැවත එක් එක් IP සමඟ සම්බන්ධ කිරීමෙන් අතින් කළ යුතුය ssh
.
මෙන්න මම නිරීක්ෂණය කරන දේ:
$ sftp test@136.243.197.100
Connected to test@136.243.197.100
sftp>
$ sftp test@valentin.hilbig.de
Connected to test@valentin.hilbig.de.
sftp>
දැන් දැනටමත් දන්නා මෙම හොඳ සේවාදායකයේ අලුතින් හඳුන්වා දුන් අන්වර්ථ නාමයකට සම්බන්ධ වීමට උත්සාහ කරන්න:
$ sftp test@gcopy.net
Warning: the ECDSA host key for 'gcopy.net' differs from the key for the IP address '136.243.197.100'
Offending key for IP in /home/test/.ssh/known_hosts:45
Matching host key in /home/test/.ssh/known_hosts:44
Are you sure you want to continue connecting (yes/no)?
කරුණාකර IP ලිපිනය දෙස බලන්න. එය ඉහත IP ය! එබැවින් (දන්නා) IP හි (හොඳ) යතුර හදිසියේම අමනාප වී ඇති බව පෙනේ ( ssh
සේවාදායකයා නොගැලපෙන යතුරු දෙකක් මිශ්ර කරන බැවින් , පහත බලන්න).
දැන් අපි එය නිවැරදි කිරීමට උත්සාහ කරමු:
$ ssh-keygen -R 136.243.197.100
# Host 136.243.197.100 found: line 45
/home/test/.ssh/known_hosts updated.
Original contents retained as /home/test/.ssh/known_hosts.old
නැවත උත්සහ කරමු:
$ sftp test@gcopy.net
Warning: Permanently added the ECDSA host key for IP address '136.243.197.100' to the list of known hosts.
Connected to test@gcopy.net.
$ sftp test@valentin.hilbig.de
Warning: the RSA host key for 'valentin.hilbig.de' differs from the key for the IP address '136.243.197.100'
Offending key for IP in /home/test/.ssh/known_hosts:45
Matching host key in /home/test/.ssh/known_hosts:10
Are you sure you want to continue connecting (yes/no)?
WTF? මෙහි සිදු වූ දේ? සේවාදායකයෙන් ඉගෙන ගත් නව නැවුම් යතුර නැවත අසමත් වේද? ගැටලුව පවා පැති මාරු කළාද?!?
නෑ, එය යතුර හෝ සේවාදායකය නොවේ. සියල්ල නිවැරදි ය!
එය තියෙන්නේ ssh
නිවැරදි ප්රධාන තහවුරු කිරීමට අසමත් වූ සේවාදායකයා! ප්රවේශය 45
තුළ known_hosts
දැන් වර්ගය ප්රධාන උසුලාගෙන ecdsa-sha2-nistp256
, සේවාදායකයා විසින්, සේවාදායකය වෙතින් ඇද තිබූ යතුර, වර්ගයේ වන අතර rsa-sha2-512
(සහ ඒ අනෙක් ප්රධාන නොගැලපේ හැක!).
$ sftp -v test@valentin.hilbig.de
පෙන්වයි:
debug1: kex: host key algorithm: rsa-sha2-512
අතර
$ sftp -v test@gcopy.net
පෙන්වයි:
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
පෙනෙන විදිහට ssh
සේවාදායකයාට කොහේ හරි දෝෂයක් තිබේ! එක් ප්රභේදයකට වඩා පවතින ධාරක යතුර සමඟ එයට මුහුණ දිය නොහැක! නැතහොත් යතුරක යල් පැන ගිය ප්රභේදයක් ඉල්ලා සිටීම උගුලට වැටේ.
නිවැරදි කරන්නේ කෙසේද?
මට ඇත්තටම කිසිම අදහසක් නැහැ. මෙය බොහෝ විට සවි කළ හැක්කේ ඉහළට පමණි.
නමුත් අතින් නමුත් අවුල් සහගත ක්රියාමාර්ගයක් ඇත:
ඔබ පැරණි වර්ගයේ යතුරේ සියලුම අංශු අතින් ඉවත් කළ යුතුය rsa
. ප්රශ්නයේ යතුර ප්රතිදානයේ පෙන්වා ඇත, නමුත් එය ගැටළුව ලෙස කෙලින්ම සලකුණු කර නැත:
Warning: the RSA host key for 'valentin.hilbig.de' differs from the key for the IP address '136.243.197.100'
Offending key for IP in /home/test/.ssh/known_hosts:45
Matching host key in /home/test/.ssh/known_hosts:10
චෙක් පත:
awk 'NR==45 { print $2 }' /home/test/.ssh/known_hosts
awk 'NR==10 { print $2 }' /home/test/.ssh/known_hosts
ලබා දෙයි
ecdsa-sha2-nistp256
ssh-rsa
එබැවින් මෙහි ගැලපෙන ධාරක යතුර වරදක් වන අතර වරද කළ යුතු යතුර නිවැරදිව තබා ගත යුතුය! එබැවින් වැරදි (ගැලපෙන) එකක් ඉවත් කරමු:
ssh-keygen -R valentin.hilbig.de
# Host valentin.hilbig.de found: line 10
/home/test/.ssh/known_hosts updated.
Original contents retained as /home/test/.ssh/known_hosts.old
දැන් නැවත පරීක්ෂා කරන්න:
$ sftp test@valentin.hilbig.de
The authenticity of host 'valentin.hilbig.de (136.243.197.100)' can't be established.
ECDSA key fingerprint is SHA256:tf7lwe10C2p1lK2UG9p//m/4sUBCpX+i9k5Ub63c6Os.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'valentin.hilbig.de' (ECDSA) to the list of known hosts.
Connected to test@valentin.hilbig.de.
sftp>
$ sftp test@gcopy.net
Connected to test@gcopy.net.
sftp>
sftp test@136.243.197.100
Connected to test@136.243.197.100.
sftp>
YAY! ගැටලුව අවසානයේ පහව ගියේය. නමුත් ඇතුළත් කිරීම් 100 ක් සමඟින් .ssh/known_hosts
, මෙම “විසඳුම” සැබවින්ම ප්රධාන PITA බවට පත්වේ (සහ එල්ම් වීදියේ දෝෂ සහිත ආරක්ෂක නපුරු සිහිනයක්. YMMV.)
The ECDSA host key for server has changed
. මගේ ක්රමය වන්නේ වසම පිළිබඳ අදාළ හැඹිලි නූල ඉවත් කිරීමයි~/.ssh/known_hosts
. එවිට ssh ක්රියා කරයි.