起動しましたが、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. ドッカー
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