현재 ssh 프로토콜 버전의 현재 연결을 어떻게 찾을 수 있습니까?


35

퍼티를 사용하는 리눅스 머신 (centos 6.4)에 연결합니다. 한 가지 유형의 프로토콜 만 사용하도록 퍼티를 설정할 수 있다는 사실을 제외하고는 현재의 ssh 연결 버전 (SSH1 또는 SSH2)을 어떻게 찾을 수 있습니까?


그것은 당신이 이미 수행 한 연구 것을 표시하는 데 도움이 될 수 있습니다
드류 쿠리을

@DrewKhoury 나는 이것에 대한 답을 찾기 위해 Google로만 시도했지만 이것에 관한 결과를 찾지 못했습니다. 현재 연결 (사용중인) 프로토콜 (ssh1 또는 ssh2)을 어떻게 볼 수 있는지 설명하는 사람은 없습니다.
codiac

답변:


46

일단 당신이 당신에게 말한다 :

ssh -v localhost

서버의 정확한 버전을 알려줍니다.


4
이것이 현재 연결 유형을 표시하지 않는 것 같습니다.
코디 악

18

나는 이것이 오래된 질문이라는 것을 알고 있지만 그것을 만난 이후 대안 방법을 게시하는 것에 저항 할 수 없었습니다.

cstamas가 제안한 것처럼 ssh -v localhost자세한 모드에서 자체 127.0.0.1로 ssh를 사용 하면 진행 상황의 디버깅 메시지가 표시됩니다. 예,이 프로세스를 통해 통신 상단을보고 현재 실행중인 SSH 버전을 얻을 수 있습니다.

그러나 ssh man페이지 를 읽으면 -Vssh 의 옵션이 더 유용하다는 것을 알 수 있습니다. ssh 매뉴얼 페이지를 가져 왔습니다 .

-V 버전 번호를 표시하고 종료합니다.

-v 상세 모드. ssh가 진행 상황에 대한 디버깅 메시지를 인쇄하도록합니다. 연결, 인증 및 구성 문제를 디버깅하는 데 도움이됩니다. 여러 개의 -v 옵션을 사용하면 자세한 정보가 표시됩니다. 최대 값은 3입니다.

그래서 나는 단순히 다음 ssh -V과 비슷한 것을 하는 것이 낫다고 생각합니다 .

> ssh -V
OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013

이것이 도움이되기를 바랍니다.


2
연결에 사용되는 프로토콜이 아니라 프로그램 의 버전입니다 . 3 년 전의 답변이 올바르게 설명 되었 듯이, 동일한 프로그램은 구성에 따라 SSH1 및 SSH2 프로토콜을 모두 지원하거나 지원하지 않을 수 있습니다.
dave_thompson_085

11

퍼티 세션, 로깅에서 "SSH 패킷 및 원시 데이터"단일 선택 단추를 선택하십시오. 선택한 위치에서 로그 파일을 putty.log로 선택하십시오. 연결하십시오. 넌 봐야 해:

Event Log: Server version: SSH-2.0-OpenSSH_5.3
Event Log: Using SSH protocol version 2

SSH-2.0의 의미에 대한 자세한 내용은 아래를 참조하십시오.

다른 방법 텔넷 클라이언트를 사용해 볼 수도 있지만 포트 22를 가리 킵니다.

telnet test1 22

연결하면 다음이 표시됩니다.

192.168.144.145 시도 중 ... test1에 연결되었습니다. 이스케이프 문자는 '^]'입니다. SSH-2.0-OpenSSH_5.3

마지막 줄은 다음과 같습니다.

SSH-2.0-OpenSSH_5.3

그것이 말하는 경우 SSH-2.0다음 좋은 것을, SSH 서버 만 SSH 프로토콜 버전 2 그것은 SSH V1 프로토콜 클라이언트의 연결을 지원하지 않습니다 지원에 연결.

그러나 당신이 볼 경우 :

SSH-1.99-OpenSSH_5.3

그러면 서버 측이 여전히 SSL 프로토콜 버전 1을 지원한다는 의미입니다. sshd_config파일 에 다음과 같은 내용이 있습니다.

Protocol 1,2

프로토콜 1은 취약하므로 사용해서는 안됩니다.

그래서 그것을 바로 잡으십시오. 원격 서버의 포트 22에 텔넷으로 연결할 때 SSH-2가 표시되면 서버가 프로토콜 1을 지원하지 않으므로 ssh 프로토콜 버전 2 만 사용할 수 있습니다.

위의 cstamas 답변에 따라 -v 플래그는 한 줄을 표시합니다.

debug1: Remote protocol version 1.99, remote software version OpenSSH_5.3

또는:

debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3

version 2.0거기 보고 싶어


4

로컬 시스템에서 netcat을 사용하여 다음과 같이 빠르게 얻을 수 있습니다.

$ nc [IP_ADDRESS] 22
SSH-2.0-OpenSSH_5.3

3

나는 이것을 더 좋아한다 :

$ echo ~ | nc localhost 22
SSH-1.99-OpenSSH_3.9p1
Protocol mismatch.
$

여기서 이점은 연결이 열려 있지 않기 때문에 프로그래밍 방식으로 수행 할 수 있다는 것입니다. 파이썬의 경우 다음을 시도하십시오.

ssh_protocol = float(re.search(r"SSH-(\d.\d+)").group(1))

0

내가 아는 유일한 방법은에서 ssh 로그 항목을 볼 수있는 충분한 권한이 있어야한다는 것입니다 /var/log/auth.log.

$ echo $SSH_CONNECTION 
127.0.0.1 12375 127.0.0.1 22

SSH_CONNECTION변수 의 첫 번째와 두 번째 필드는 연결의 소스 IP와 소스 포트를 나타냅니다. 에 의해 grep에서 그 값을 -ing /var/log/auth.log, 내 SSH 연결이 인증 될 때의 로그 항목을 찾을 수 있습니다.

$ sudo grep -F ' from 127.0.0.1 port 12375 ' /var/log/auth.log | grep ssh
Jun 26 16:29:52 morton sshd[20895]: Accepted keyboard-interactive/pam for jim from 127.0.0.1 port 12375 ssh2

이 로그 항목은 현재 연결에서 ssh2 프로토콜을 사용하고 있음을 알려줍니다. 물론 ssh 세션이 며칠 동안 열린 경우 로그 항목이 /var/log/auth.log.0이전 auth.log파일 이거나 일부 파일 일 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.