CentOS 7 sshd가 작동하지 않는 것 같나요?

CentOS 7 sshd가 작동하지 않는 것 같나요?

시작했지만 sudo systemctl start sshd외부에서 CentOS 7 시스템에 연결할 수 없습니다. 그러나 CentOS 7 시스템에서는 ssh.

내가 놓친 게 무엇입니까?

업데이트 #1

slm의 답변을 바탕으로 다음을 확인했습니다.

  • sshd서비스가 시작되고 IP 131.181.10.150의 포트 22에 바인딩됩니다.
  • curl -v telenet://131.181.10.150:22"Connected" 메시지를 실행하고 볼 수 있습니다 .

ssh내 문제는 서버에 연결 하려고 할 때입니다 .

$ ssh [email protected]
ssh: connect to host 131.181.10.150 port 22: Operation timed out

업데이트 #2

제가 그것을 사용할 때 docker-compose컨테이너를 다운로드하기 시작했고 갑자기 연결을 시작하는 기능을 잃었던 것을 기억합니다 ssh.

ip link show개방형 NIC docker0및 기타 여러 인터페이스를 사용하는 인터페이스 수를 확인하세요.

그런 다음 Docker 서비스와 방화벽을 비활성화하려고 시도했지만 여전히 연결할 수 없습니다.

$ sudo systemctl stop docker
$ sudo systemctl stop firewalld

아직도 운이 없습니다.

답변1

이 서비스를 사용하면 sshd쉽게 설정하고 시작할 수 있습니다.

1. 서비스 시작

서비스가 실행 중이고 포트 22에서 수신 대기 중인지 확인하세요.

서비스 시작
$ sudo systemctl start sshd
상태 확인
$ sudo systemctl status sshd
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2018-07-24 22:24:00 EDT; 1h 40min left
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 1270 (sshd)
    Tasks: 1
   CGroup: /system.slice/sshd.service
           └─1270 /usr/sbin/sshd -D

Jul 24 22:24:00 centos7 systemd[1]: Starting OpenSSH server daemon...
Jul 24 22:24:00 centos7 systemd[1270]: Executing: /usr/sbin/sshd -D
Jul 24 22:24:00 centos7 sshd[1270]: Server listening on 0.0.0.0 port 22.
Jul 24 22:24:00 centos7 sshd[1270]: Server listening on :: port 22.
Jul 24 22:24:00 centos7 systemd[1]: Started OpenSSH server daemon.
Jul 24 20:31:37 centos7 sshd[1582]: Accepted publickey for vagrant from 10.0.2.2 port 64437 ssh2: RSA SHA256:1vJymfZsu2KZ49lDftGMzz2VEb2Z2Y8PNi9cs55eHGE
Jul 24 20:43:29 centos7 systemd[1]: Trying to enqueue job sshd.service/start/replace
Jul 24 20:43:29 centos7 systemd[1]: Installed new job sshd.service/start as 560
Jul 24 20:43:29 centos7 systemd[1]: Enqueued job sshd.service/start as 560
Jul 24 20:43:29 centos7 systemd[1]: Job sshd.service/start finished, result=done

2. 서비스가 수신 중인지 확인

포트 22에서 수신 대기 중인지 확인
$ sudo netstat -tlpn | grep sshd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1270/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      1270/sshd

sshd또한 모든 인터페이스(0.0.0.0) 또는 최소한 시스템의 IP 주소를 수신하고 있는지 확인해야 합니다 .

$ ip a l eth0 | awk '/inet / {print $2}'
192.168.56.101/24

예를 들어 출력에 192.168.56.101:22가 표시됩니다 netstat.

3. 방화벽

다음으로 방화벽이 네트워크 트래픽이 포트 22에 도달하도록 허용하는지 확인합니다.

$ sudo firewall-cmd  --list-all
FirewallD is not running

그렇다면 트래픽은 포트 22에 도달할 수 있습니다. 만일이 경우라면:

$ firewall-cmd  --list-all
public (active)
  target: DROP
  icmp-block-inversion: no
  interfaces: eth0 eth1
  sources:
  services: ssh dhcpv6-client
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

ssh& 서비스에 대한 트래픽을 허용 dhcpv6-client하고 다른 모든 서비스에 대한 트래픽을 삭제합니다. 다시 말하지만 이는 문제가 되지 않으며 SSH 트래픽이 허용되어야 합니다.

4. 확인/etc/ssh/sshd_config

/etc/ssh/sshd_config외부 연결을 차단하고 있지 않은지 확인하세요 . 다음 옵션에 대한 설정은 아래에 표시된 것과 유사해야 합니다.

$ grep -vE '^#|^$|AcceptEnv|HostKey|Syslog|MAC|Banner|LogLevel|Authorized' /etc/ssh/sshd_config
PermitRootLogin yes
MaxAuthTries 4
HostbasedAuthentication no
IgnoreRhosts yes
PermitEmptyPasswords no
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication yes
GSSAPICleanupCredentials no
UsePAM yes
X11Forwarding no
Subsystem   sftp    /usr/libexec/openssh/sftp-server
Protocol 2

5. 검증

다음과 같은 명령을 사용하여 외부 클라이언트 중 하나에서 이를 확인할 수 있습니다.

$ timeout 2 curl -v telnet://192.168.56.101:22
* Rebuilt URL to: telnet://192.168.56.101:22/
*   Trying 192.168.56.101...
* Connected to 192.168.56.101 (192.168.56.101) port 22 (#0)
SSH-2.0-OpenSSH_7.4 
$

노트:여기에 "XXXX에 연결됨" IP 주소 메시지가 표시되면 실행 중인 클라이언트 컴퓨터 에서 서버 curl로 의 네트워크 트래픽을 차단하는 것이 없는 것입니다.sshd

6. 도커

docker0Docker가 설치된 경우와 같이 브리지 내에 여러 가상 네트워크를 추가하는 브리지가 나타나는 경우도 있습니다 docker0. 다음과 같이 볼 수 있습니다.

$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
bd7594c1dce3        bridge              bridge              local
db24b1e2be58        host                host                local
edf606d533a5        none                null                local

이러한 경우 SSH 패킷을 올바르게 라우팅할 수 있도록 추가 네트워크를 제거하여 물리적 네트워크를 복원해야 합니다. , 및 기준을 벗어나는 항목을 docker network rm <net id>제거하려면 이 명령을 사용하십시오 .bridgehostnone

인용하다

관련 정보