728x90
SSH 접속 오류를 해결하는 방법(no hostkey alg)
"no hostkey alg" 에러는 원격 서버에 SSH 연결을 시도할 때 발생하는 경우가 일반적입니다. 이 오류 메시지는 원격 서버가 SSH 클라이언트에서 제공하는 호스트 키 알고리즘을 지원하지 않음을 나타냅니다. 대부분의 경우 이 문제는 클라이언트 측에서 해결할 수 있습니다.
테스트 환경
node1 | 통신 방향 | node2 | 비고 | |
역할 | Client | -> | Server | |
운영체제 | CentOS 6.3 | Ubuntu 22.04 LTS | ||
sshd(ssh server) 버전 | OpenSSH_5.3p1 | OpenSSH_8.9p1 |
SSH 접속 테스트 및 sshd 설정 편집
node1
- ssh 버전 정보 확인
$ ssh -V
OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
ssh user1@node2
$ ssh user1@node2
no hostkey alg
node2
- ssh 버전 정보 확인
$ ssh -V
OpenSSH_8.9p1 Ubuntu-3ubuntu0.1, OpenSSL 3.0.2 15 Mar 2022
- auth.log 로그 확인
tail -f /var/log/auth.log
$ tail -f /var/log/auth.log
sshd[251858]: Unable to negotiate with node1 port 44302: no matching host key type found. Their offer: ssh-rsa,ssh-dss [preauth]
"no matching host key type found" 오류는 SSH 클라이언트가 호스트 키 유형을 찾을 수 없을 때 발생합니다.
1. 서버에서 허용하는 호스트 키 알고리즘 확인
- 서버의 SSH 설정 파일(/etc/ssh/sshd_config)을 열어 허용된 호스트 키 알고리즘을 확인합니다.
sshd_config 편집
- ssh-rsa 호스트 키 알고리즘을 허용하고 ssh-rsa 알고리즘을 사용하는 공개키로 인증할 수 있습니다.
vim /etc/ssh/sshd_config
# SSH 호스트 키 알고리즘 설정
HostKeyAlgorithms ssh-ed25519,ssh-rsa
# 공개키 인증 설정
PubkeyAuthentication yes
PubkeyAcceptedKeyTypes ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
sshd 재기동
systemctl restart sshd
node1
- ssh 접속 테스트
ssh user1@node2
$ ssh user1@node2
user1@node2's password:
ssh 클라이언트에서 -c 옵션을 사용하여 지원되는 암호화 알고리즘을 선택할 수 있습니다.
대신에 chacha20-poly1305@openssh.com 암호화 알고리즘을 사용하도록 지정해보세요.
ssh -c chacha20-poly1305@openssh.com -o Protocol=2 user1@node2
위의 예시에서는 -c 옵션을 사용하여 chacha20-poly1305@openssh.com 암호화 알고리즘을 선택하고, -o Protocol=2 옵션으로 프로토콜 버전을 2로 지정합니다.
728x90
2. 클라이언트에서 사용 가능한 호스트 키 알고리즘 확인
- 클라이언트 측에서 지원하는 호스트 키 알고리즘을 확인하려면 다음 명령어를 실행합니다.
SSH 클라이언트에서 -Q 옵션을 사용하여 암호화 알고리즘 목록을 확인합니다.
- 다음 명령을 사용 가능한 암호화 알고리즘 목록을 출력합니다.
ssh -Q cipher
$ ssh -Q cipher
3des-cbc
aes128-cbc
aes192-cbc
aes256-cbc
aes128-ctr
aes192-ctr
aes256-ctr
aes128-gcm@openssh.com
aes256-gcm@openssh.com
chacha20-poly1305@openssh.com
SSH 클라이언트에서 -Q 옵션을 사용하여 키 교환 알고리즘 목록을 확인합니다.
- 다음 명령을 사용 가능한 키 교환 알고리즘 목록을 출력합니다.
ssh -Q kex
$ ssh -Q kex
diffie-hellman-group1-sha1
diffie-hellman-group14-sha1
diffie-hellman-group14-sha256
diffie-hellman-group16-sha512
diffie-hellman-group18-sha512
diffie-hellman-group-exchange-sha1
diffie-hellman-group-exchange-sha256
ecdh-sha2-nistp256
ecdh-sha2-nistp384
ecdh-sha2-nistp521
curve25519-sha256
curve25519-sha256@libssh.org
sntrup761x25519-sha512@openssh.com
SSH 클라이언트에서 -Q 옵션을 사용하여 호스트 키 알고리즘 목록을 확인합니다.
- 다음 명령을 사용 가능한 호스트 키 알고리즘 목록을 출력합니다.
ssh -Q key
위 명령을 실행하면 해당 알고리즘의 목록이 표시됩니다. 이 목록은 SSH 클라이언트가 현재 사용 가능한 알고리즘을 나열한 것입니다.
3. 호스트 키 알고리즘 재설정
- 클라이언트에서 -oHostKeyAlgorithms=+ssh-rsa 옵션을 사용하여 명령을 실행합니다.
node1에서 node2로 접속이 불가능하며 node2에서 node1로 접속하여 파일을 가져왔습니다.
- ssh 접속 테스트
ssh -oHostKeyAlgorithms=ssh-rsa user1@node1
- scp 명령으로 test.txt 파일 가져오기
scp -oHostKeyAlgorithms=ssh-rsa user1@node1:/tmp/test.txt .
- rsync 명령으로 test.txt 파일 가져오기
rsync -avz -e "ssh -oHostKeyAlgorithms=ssh-rsa" user1@node1:/tmp/test.txt .
728x90
'리눅스' 카테고리의 다른 글
[draft] Vault SSH 플러그인을 설치하는 방법 (0) | 2023.06.01 |
---|---|
[리눅스] httpie 명령어 (0) | 2023.05.31 |
[리눅스] ssh "no hostkey alg" 오류 (0) | 2023.05.31 |
chown 명령어 (0) | 2023.05.30 |
[draft] 우분투에서 고정 IP 주소를 설정하는 방법 (0) | 2023.05.26 |