Com o serviço sshd
é bastante simples de configurar e seguir em frente.
1. Iniciar serviço
Certifique-se de que o serviço esteja ativo e em execução / escutando na porta 22.
iniciar serviço$ sudo systemctl start sshd
verificar status
$ 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. Verifique se o serviço está escutando
verifique se está ouvindo na porta 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
Você também desejará verificar se sshd
está atendendo em todas as interfaces (0.0.0.0) ou pelo menos no endereço IP do seu sistema:
$ ip a l eth0 | awk '/inet / {print $2}'
192.168.56.101/24
Então você veria no netstat
output, 192.168.56.101:22, por exemplo.
3. Firewall
Em seguida, verifique se o firewall está permitindo que o tráfego de rede alcance a porta 22.
$ sudo firewall-cmd --list-all
FirewallD is not running
Se é assim, o tráfego pode alcançar a porta 22. Se for assim:
$ 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:
Está a permitir tráfego para ssh
& dhcpv6-client
services e caindo para todo o resto. Novamente, tudo bem e deve permitir o tráfego SSH.
4. Verifique /etc/ssh/sshd_config
Verifique se o /etc/ssh/sshd_config
não está bloqueando as conexões externas. As opções a seguir devem ser definidas de forma semelhante ao que estou mostrando abaixo.
$ 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. Verificar
Você pode confirmar usando um comando como este em um de seus clientes externos:
$ 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
$
OBSERVAÇÃO: Se você vir uma mensagem de endereço IP 'Conectado a XXXX' aqui, não há nada que esteja inibindo o tráfego da rede da máquina cliente em que você está executando curl
para o sshd
servidor.
6. Docker
Em algumas situações, como onde o Docker foi instalado, você encontrará um cenário no qual a docker0
bridge adicionou várias redes virtuais na ponte docker0
. Você pode vê-los assim:
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
bd7594c1dce3 bridge bridge local
db24b1e2be58 host host local
edf606d533a5 none null local
Nessas situações, você precisará remover todas as redes extras para restaurar sua rede física, para poder rotear os pacotes SSH corretamente. Basta usar o comando docker network rm <net id>
para remover qualquer coisa além do padrão bridge
, host
e none
.