![CentOS 7 sshd가 작동하지 않는 것 같나요?](https://linux55.com/image/137488/CentOS%207%20sshd%EA%B0%80%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EA%B2%83%20%EA%B0%99%EB%82%98%EC%9A%94%3F.png)
시작했지만 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. 도커
docker0
Docker가 설치된 경우와 같이 브리지 내에 여러 가상 네트워크를 추가하는 브리지가 나타나는 경우도 있습니다 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>
제거하려면 이 명령을 사용하십시오 .bridge
host
none