그래요아니요hosts.allow
또한 또는 를 사용하면 hosts.deny
SSH가 내 Windows 시스템(동일한 노트북, 다른 하드 드라이브)에서는 작동하지만 Linux 시스템에서는 작동하지 않습니다.
ssh -vvv root@host -p port
다음을 제공합니다:
OpenSSH_6.6, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 20: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to host [host] port <port>.
debug1: Connection established.
debug1: identity file /home/torxed/.ssh/id_dsa type -1
debug1: identity file /home/torxed/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6
ssh_exchange_identification: read: Connection reset by peer
Windows 시스템에서는 모든 것이 잘 작동하므로 보안 로그를 확인한 결과 행이 동일하고 서버는 두 개의 다른 "시스템"을 다르지 않게 처리하며 둘 다 공개 키 인증을 통해 허용됩니다.
그래서 결론은 이것이 내 로컬 ArchLinux 노트북의 문제임에 틀림없다는 것입니다...하지만 어쩌죠?
[torxed@archie ~]$ cat .ssh/known_hosts
[torxed@archie ~]$
그럼 그건 문제가 아닌데...
[torxed@archie ~]$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
아직은 방화벽 설정과 충돌하지 않습니다.
[torxed@archie ~]$ ls -la .ssh/
total 20
drwx------ 2 torxed users 4096 Sep 3 2013 .
drwx------ 51 torxed users 4096 May 11 11:11 ..
-rw------- 1 torxed users 1679 Sep 3 2013 id_rsa
-rw-r--r-- 1 torxed users 403 Sep 3 2013 id_rsa.pub
-rw-r--r-- 1 torxed users 170 May 11 11:21 known_hosts
권한은 괜찮은 것 같습니다(서버에서도 동일). 또한 /etc/ssh/ssh_config
클라이언트의 많은 자동 구성이 동일한 오류로 끝나는 것을 제외하고 구성하지 않고 동일한 결과를 얻으려고 시도했습니다 .
답변1
"외부" 요인을 배제한 경우 다음 단계를 수행하면 요인 범위를 좁히는 데 도움이 될 수 있습니다. 따라서 이것이 귀하의 질문에 직접적으로 대답하지는 않지만 오류의 원인을 추적하는 데 도움이 될 수 있습니다.
문제 해결sshd
그러한 상황에서 내가 종종 매우 유용하다고 생각하는 것은 sshd
데몬화하지 않고 프로세스를 시작하는 것입니다. 내 문제는 의미있는 것을 아무것도 보여주지도 syslog
않는다는 것입니다 auth.log
.
터미널에서 실행하면 다음과 같은 결과가 나타납니다.
# $(which sshd) -Ddp 10222
/etc/ssh/sshd_config line 8: address family must be specified before ListenAddress.
훨씬 낫다! 이 오류 메시지를 통해 문제를 확인하고 해결할 수 있었습니다. 두 로그 파일 모두 이 출력을 포함하지 않습니다.
알아채다:적어도 Ubuntu에서는 이것이 $(which sshd)
절대 경로 요구 사항을 충족하는 가장 좋은 방법입니다. sshd
그렇지 않으면 다음 오류가 발생합니다: sshd re-exec requires execution with an absolute path
. 해당 대체 포트 -p 10222
에서 수신 대기 하도록 하려면 구성 파일을 재정의하십시오. 그러면 sshd
잠재적으로 실행 중인 인스턴스와 sshd
충돌 하지 않습니다. 여기서는 반드시 무료 포트를 선택하세요.
마지막으로 대체 포트( ssh -p 10222 user@server
)에 연결합니다.
이 접근 방식은 인증 문제이든 다른 유형의 문제이든 여러 번 문제를 식별하는 데 도움이 되었습니다. 정말 자세한 출력을 위해서는 stdout
를 사용하세요 ( 자세한 내용을 늘리려면 $(which sshd) -Ddddp 10222
추가 항목을 참고하세요 ). dd
더 많은 디버깅 상태 확인을 확인하세요 man sshd
.
sshd
이 접근 방식의 가장 큰 장점은 구성을 확인할 수 있다는 것입니다.아니요sshd
기본 포트에서 다시 시작 해야 합니다 .대개이는 기존 SSH 연결을 방해해서는 안 되지만 본 적이 있습니다. 따라서 이를 통해 원격 서버에 대한 액세스를 (잠재적으로) 차단하기 전에 구성 파일을 확인할 수 있습니다(예: 일부 VPS 및 심지어 머신에 대한 대역 외 액세스를 얻기 위해 추가 비용을 지불해야 하는 물리적 서버에 대한 확인이 있습니다). .
답변2
또한 메모리가 너무 조각화되어 SSH 세션을 호스팅하는 프로세스를 포크하기 위해 연속 메모리 페이지를 할당할 수 없는 호스트가 있을 수도 있습니다.
이 경우 다음 메시지 중 하나를 받을 수 있습니다.
ssh_exchange_identification: read: Connection reset by peer
또는:
Connection closed by aaa.bbb.ccc.ddd
호스트가 뛰어내리기 전에 얼마나 멀리 갈 수 있는지에 따라 달라집니다.
메모리 조각화가 명백한 원인인 경우 해결 방법은 다른 방법을 통해 서버에 액세스하고 일부 관련 서비스를 다시 시작하는 것입니다. 가상 머신에 스왑 파티션이 없었기 때문에 Apache와 MySQL이 가상 머신의 범인이라는 것을 알았습니다. 실패하면 호스트를 다시 시작합니다.
답변3
만일을 대비해서 이런 일이 나에게 일어났기 때문입니다. 호스트에서 sshd가 실행되고 있는지 확인하세요!
이것은 어리석은 실패이지만 실제로 문제가 될 수 있습니다.
답변4
ssh_exchange_identification: read: Connection reset by peer
루프에서 16개 이상의 SSH 세션을 시작한 스크립트에서 이 문제가 발생했습니다. sshd는 분명히 짧은 수면을 추가할 수 없습니다.해결책... :D 반대자들) 내 문제를 해결했습니다.
for i in $(seq 32)
do
ssh -f root@$HOST "./test_server -p $(expr $BASE_PORT + $i)" > svr${i}.out
# for > 8 connections, ssh has ssh_exchange_identification issues
sleep 0.1
done