업체명 아니다.
아니 싯팔 조선부터 키워온 클라이언트에서 최신 SSH 접속해야 하는 일이 생겼다.
Github 의 경우 CentOS 6 같은 구닥다리 클라이언트에 접속하려 하면 안 될 것이다. Gitlab 도 얄짤없다.
만약 조선 서버에서 요즘 서버로 ssh
접속하려 하면 딸랑 이 메시지만 뜰 것이다.
no hostkey alg
그리고 너의 얼굴은 이렇게 되겠지.
심지어 인터넷 차단된 업무 서버인 케이스가 대부분일테니 SSH 업데이트는 물건너갔다.
자, 얼마나 구닥다리인지 체크해보자.
$ ssh -Q key
조선 서버라면 안먹힐 것이다. CentOS 기준으로 7 나온 시점부터 생긴 옵션이거든.
그렇다면, 다음으로는 아래 명령어로 지원 알고리즘을 확인한다.
$ ssh -vvvv 127.0.0.1
어자피 로컬로 로컬 접속하면 실패 뜬다. 걱정 말고 실행해 보자.
만약 요즘 SSH 쓴다면 아래 메시지가 반드시 포함될 것이다. 아주 친절하게 호스트가 지원하는 알고리즘을 뿌려준다.
debug2: host key algorithms: 어쩌고저쩌고...
하지만 조선 서버에서는 안 뿌려준다. kex_parse_keyinit
문항으로 알고리즘을 파악해야 하는데, 대충 이렇게 뿌릴 것이다.
debug2: kex_parse_kexinit: ssh-rsa,ssh-dss
앙상하네...
하지만 길은 있다. 다행으로 생각하라. 호스트에 알고리즘을 요구할 수 있다. 그런 옵션이 있다.
$ ssh -o HostKeyAlgorithms=+ssh-rsa git@github.com
그러면 니가 가진 RSA 키파일을 사용하여 Github 에 대충 "인증 성공" 메시지가 뜰 것이다. 축하한다. 고조선 서버는 아니다.
하지만 매번 -o
옵션을 넣는다는 건 꽤 번거로운 일이다. 그래서 SSH 클라이언트에도 설정 파일을 제공한다.
만약 Github 을 여러 계정으로 써봤다면 아~ 할 것이다.
$ vi ~/.ssh/config
vi
쓰던 nano
쓰던 뭐 편한 편집기로 열어서 대충 아래 내용 추가하면 된다.
Host github.com
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
아예 Host *
와일드카드 써서 모든 서버에 적용할 수도 있는데... 일단은 그냥 안되는 서버에 쓰도록 하자.
그리고 그냥 평소대로
$ ssh git@github.com
실행하면 똑같이 대충 인증 성공하고 끝나는 눈물겨운 모습을 볼 수 있다.
아직 조선 서버는
끗.