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オープンNICdocker0と他の複数のインターフェイスを使用しているインターフェイスの数を確認してください。

その後、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

引用する

関連情報