시작 sudo systemctl start sshd
했지만 외부에서 CentOS 7 시스템에 연결할 수 없습니다. 그러나 CentOS 7 컴퓨터에서는 ssh
.
내가 놓친 게 무엇입니까?
slm의 답변에 따라 다음을 확인했습니다.
sshd
서비스가 작동 중이며 IP 131.181.10.150의 포트 22에 바인딩됩니다.curl -v telenet://131.181.10.150:22
'연결됨'메시지를 볼 수 있습니다 .내 문제는 ssh
서버에 시도 할 때입니다 .
$ ssh [email protected]
ssh: connect to host 131.181.10.150 port 22: Operation timed out
docker-compose
갑자기 컨테이너를 다운로드하기 시작 했을 때 ssh
연결 을 시작하는 기능을 잃어버린 것을 기억 했습니다 .
ip link show
켜진 docker0
NIC + 기타 여러 인터페이스를 사용하는 인터페이스 수를 살펴 봅니다.
그런 다음 Docker 서비스 및 firewalld를 비활성화하려고 시도했지만 여전히 연결할 수 없습니다.
$ sudo systemctl stop docker
$ sudo systemctl stop firewalld
여전히 운이 없습니다.
sshd
서비스를 사용하면 설정 및 진행이 매우 간단합니다.
서비스가 포트 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
$ 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
따라서 netstat
출력에서 192.168.56.101:22를 볼 수 있습니다 .
다음으로 방화벽이 네트워크 트래픽이 포트 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 트래픽을 허용해야합니다.
/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
외부 클라이언트 중 하나에서 다음과 같은 명령을 사용하여 확인할 수 있습니다.
$ 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
.
Docker가 설치된 경우와 같은 일부 상황에서는 docker0
브리지가 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
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다