Ventura 업데이트후 ssh 연결 불가
회사에서 업무를 하다보니 언제부터인가 소프트웨어 업데이트 문구가 보여 무시하다. 시간이 날 때 기회가 되어 업데이트를 하고 나니 그 순간 부터 ssh가 연결이 안되는 문제가 발생하였다...
ssh 연결을 하려고 하니 다음과 같은 문구를 맞닥트릴수 있었는데 해당 문구는 다음과 같다
debug1: load_hostkeys: fopen /Users/nhn/.ssh/known_hosts: No such file or directory
debug1: load_hostkeys: fopen /Users/nhn/.ssh/known_hosts2: No such file or directory
debug1: load_hostkeys: fopen /etc/ssh/ssh_known_hosts: No such file or directory
debug1: load_hostkeys: fopen /etc/ssh/ssh_known_hosts2: No such file or directory
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: diffie-hellman-group-exchange-sha256
debug1: kex: host key algorithm: (no match)
Unable to negotiate with 10.161.128.186 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss
마지막 문구를 접근하지 못하는 이유를 알 수가 있다. 검색을 해보니 macOS에서 소프트웨어 업그레이드를 하면 종종 발생하는 문제였던거 같다.
no matching host key type found. Their offer: ssh-rsa,ssh-dss
우선 나의 경우 접속을 먼저 해야핬길래 ssh 접근에 옵션을 추가해주었다.
ssh -o HostKeyAlgorithms=+ssh-dss 계정
우선 이렇게 옵션을 추가하여 로그인은 하였지만 설정을 변경하여 해결을 해주려고 한다.
해결책 /etc/ssh/ssh_config
해당 방법은 시스템 전체에 적용되는 해결방법이라고 한다.
config 파일을 열어 수정을 해주어야한다.
# MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160
# Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
다음과 같은 문구를 찾아서 다음과 같이 '#' 문자를 제거해준다.
MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
그리고 마지막에는 다음 문구를 추가해준다.
HostkeyAlgorithms ssh-dss,ssh-rsa
KexAlgorithms +diffie-hellman-group1-sha1
그러면 전체적으로 다음과 같은 파일이 만들어질 것이다.
# $OpenBSD: ssh_config,v 1.35 2020/07/17 03:43:42 dtucker Exp $
# This is the ssh client system-wide configuration file. See
# ssh_config(5) for more information. This file provides defaults for
# users, and the values can be changed in per-user configuration files
# or on the command line.
# Configuration data is parsed as follows:
# 1. command line options
# 2. user-specific file
# 3. system-wide file
# Any configuration value is only changed the first time it is set.
# Thus, host-specific definitions should be at the beginning of the
# configuration file, and defaults at the end.
# This Include directive is not part of the default ssh_config shipped with
# OpenSSH. Options set in the included configuration files generally override
# those that follow. The defaults only apply to options that have not been
# explicitly set. Options that appear multiple times keep the first value set,
# unless they are a multivalue option such as IdentityFile.
Include /etc/ssh/ssh_config.d/*
# Site-wide defaults for some commonly used options. For a comprehensive
# list of available options, their meanings and defaults, please see the
# ssh_config(5) man page.
# Host *
# ForwardAgent no
# ForwardX11 no
# PasswordAuthentication yes
# HostbasedAuthentication no
# GSSAPIAuthentication no
# GSSAPIDelegateCredentials no
# BatchMode no
# CheckHostIP yes
# AddressFamily any
# ConnectTimeout 0
# StrictHostKeyChecking ask
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa
# IdentityFile ~/.ssh/id_ecdsa
# IdentityFile ~/.ssh/id_ed25519
# Port 22
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
MACs hmac-md5,hmac-sha1,umac-64@openssh.com
# EscapeChar ~
# Tunnel no
# TunnelDevice any:any
# PermitLocalCommand no
# VisualHostKey no
# ProxyCommand ssh -q -W %h:%p gateway.example.com
# RekeyLimit 1G 1h
# UserKnownHostsFile ~/.ssh/known_hosts.d/%k
Host *
SendEnv LANG LC_*
HostkeyAlgorithms ssh-dss,ssh-rsa
KexAlgorithms +diffie-hellman-group1-sha1
그리고 다른 해결책?
일단은 기본적으로는 위와 같은 해결책이 기본이 될거 같아서 정리는 이정도로만 하려고한다.
그리고 아래 다른 해결방법들도 있는거 같아 조금 소개정도만 하려고 한다.
세번째... ~/.ssh/known_host 파일의 제거
~/.ssh 디렉토리를 들어가보면 known_host 파일이 존재하는데 해당 파일을 제거해주면 자연스럽게 로그인이 된다고 한다.(해보지는 않았습니다. 위와같이 해결을 하였기에..)
두번째 ~/.ssh/config
특정 사용자나 호스트, 서브넷 별로 설정할 수 있는 해결책이라고 한다.
~/.ssh/config 혹은 $HOME/.ssh/config 파일을 우선 열어준다.
해당 config를 작성(수정)해서 조금씩 호스트, 서브넷 별로 다르게 설정을 해줄수 있다고한다.
ServerAliveInterval 300
ServerAliveCountMax 3
Host 192.168.1.100
RemoteForward 52698 127.0.0.1:52698
# 192.168.1.0 네트워크의 모든 호스트에 아래 알고리즘 허용
Host 192.168.1.*
HostKeyAlgorithms=+ssh-dss
# 아래 2개의 호스트만 암호화 허용
Host 192.168.2.1, 192.168.2.2
Ciphers aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
# 아래 1개의 서브넷과 1개 호스트만 암호화, 알고리즘 허용
Host 192.168.3.0.*, 192.168.4.100
HostKeyAlgorithms=+ssh-dss
Ciphers 3des-cbc
KexAlgorithms +diffie-hellman-group1-sha1
이렇게 하면 각 호스트별 특정 알고리즘을 적용해서 설정을 해줄 수있다고 한다.
사실 이 또한 적용해보지는 않았다;;;ㅎㅎ....
추후 적용할 기회가 생길수도 있기 때문에 기록용으로 남겨본다.
'기억하기' 카테고리의 다른 글
연말정산::세액계산하기 (0) | 2022.01.29 |
---|---|
연말정산::소득공제 vs 세액공제 (0) | 2022.01.27 |
[macOS]특수문자 사용하기 (0) | 2021.11.11 |
[macOS]JAVA 설치하기 (0) | 2021.07.20 |
[Tistory]수식 추가하기 (0) | 2021.07.20 |