ssh6 버젼 이하에서 기본적으로 지원하던 key exchange method 등의 옵션들을
보안강화로 인해 ssh7 버젼 이상에서는 옵션을 별도로 추가해야하기 때문에 발생하는 문제이다.
ssh 버젼을 확인하거나 옵션을 추가하는 행위는 리눅스 서버에 접속해야 가능하기 때문에
먼저, 아래 명령어로 리눅스 서버에 접속해보았다.
포트를 설정하지 않는 경우 기본포트인 22번 포트로 접속한다.
ssh -p {포트번호} {host ID}@{IP주소}
위와 같이 'no matching key exchange method found.' 라는 오류 메세지가 뜨고
'Their offer' 이후에 상대 장치에서 요구하는 알고리즘의 종류를 나열해준다.
콤마로 구분되어있는 알고리즘 중 하나를 지정하여 ssh 접속을 시도해본다.
//diffie-hellman-group1-sha1 알고리즘 지정
ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -p {포트번호} {host ID}@{IP주소}
이번에는 'no matching cipher found.' 라는 오류메세지가 뜨고
'Their offer' 이후에 상대 장치에서 요구하는 암호도구의 종류를 나열해준다.
동일하게 콤마로 구분되어있는 암호도구 중 하나를 지정하여 ssh 접속을 시도해본다.
//diffie-hellman-group1-sha1 알고리즘 지정
//aes128-cbc 암호도구 지정
ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -c aes128-cbc -p {포트번호} {host ID}@{IP주소}
정상적으로 접속되는 것을 확인 할 수 있다 🥳
아래 명령어로 sftp도 동일하게 활용할 수 있다.
//대문자 P로 포트설정
sftp -oKexAlgorithms=+diffie-hellman-group1-sha1 -c aes128-cbc -P {포트번호} {host ID}@{IP주소}
정상접속이 되었다면, ssh 버젼을 확인해보자.
ssh -V
나의 경우에는, 'OpenSSH_7.4pl' 로 ssh7 버젼 이상임을 확인 할 수 있었다.
어떤 옵션을 추가해주어야할까?
먼저, 아래 명령어로 ssh 설정파일을 열자.
vi /etc/ssh/sshd_config
설정파일 내 아래의 옵션을 추가한 후 저장한다. (옵션은 ssh 접속 시 error 로그 확인 후 추가!👌)
KexAlgorithms +diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
Ciphers +aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael128-cbc,rijndael192-cbc,rijndael256-cbc,rijndael-cbc@lysator.liu.se
sshd 를 재시작한 뒤, 기본 명령어로 ssh 접속 테스트를 해본다.
systemctl restart sshd
ssh -p {포트번호} {host ID}@{IP주소}
정상적으로 접속된다면 설정이 완료된 것이다😻