내 네트워크에는 두 대의 노트북과 두 대의 Raspberry Pi가 있습니다. 문제는 두 컴퓨터 중 하나에서 하나의 RPi로 SSH를 보낼 수 없고 해당 RPi에서 다른 컴퓨터로 SSH를 보낼 수도 없다는 것입니다. 두 Pi 모두 Raspbian Buster Lite를 새로 설치한 상태로 제공됩니다. Pi를 성공적으로 핑할 수 있지만 SSH 연결 시간이 초과됩니다. 내 sshfs도 예상대로 작동하지 않습니다. ssh, openssh-client 및 openssh-server를 지우고 다시 설치해 보았지만 성공하지 못했습니다. 디버그 출력은 별로 도움이 되지 않거나 설명적이지 않습니다.
$ ssh [email protected] -vvv
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: resolving "192.168.0.15" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to 192.168.0.15 [192.168.0.15] port 22.
debug1: connect to address 192.168.0.15 port 22: Connection timed out
ssh: connect to host 192.168.0.15 port 22: Connection timed out
내 컴퓨터는 모두 192.168.0.*에 있습니다.
이 문제를 해결하려면 어떻게 해야 합니까?
@편집하다:
이전에는 한 노트북에서는 RPi에 SSH로 연결할 수 있었지만 다른 노트북에서는 그렇지 않았습니다. 이제는 그 어느 것에서도 그렇게 할 수 없습니다.
nmap 포트 스캔 출력:
$ nmap -p 22 192.168.0.15
Starting Nmap 7.60 ( https://nmap.org ) at 2019-12-17 17:05 CET
Nmap scan report for 192.168.0.15
Host is up (0.010s latency).
PORT STATE SERVICE
22/tcp filtered ssh
Nmap done: 1 IP address (1 host up) scanned in 0.43 seconds
RPi에는 방화벽이 실행되지 않습니다.
$ sudo netstat --tcp --programs --listening --numeric
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1335/sshd
tcp6 0 0 :::22 :::* LISTEN 1335/sshd
필요에 따라:
$ sudo ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether b8:27:eb:ab:f8:fb brd ff:ff:ff:ff:ff:ff
inet 192.168.0.15/24 brd 192.168.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::ba27:ebff:feab:f8fb/64 scope link
valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether b8:27:eb:fe:ad:ae brd ff:ff:ff:ff:ff:ff
$ sudo ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.15 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::ba27:ebff:feab:f8fb prefixlen 64 scopeid 0x20<link>
ether b8:27:eb:ab:f8:fb txqueuelen 1000 (Ethernet)
RX packets 121039 bytes 19525595 (18.6 MiB)
RX errors 0 dropped 11 overruns 0 frame 0
TX packets 26795 bytes 5950306 (5.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 2 bytes 78 (78.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2 bytes 78 (78.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
SSH 구성 파일:
깨진 파이:
$ cat /etc/ssh/ssh_config
# This is the ssh client system-wide configuration file. See
# ssh_config(5) for more information. This file provides defaults for
# users, and the values can be changed in per-user configuration files
# or on the command line.
# Configuration data is parsed as follows:
# 1. command line options
# 2. user-specific file
# 3. system-wide file
# Any configuration value is only changed the first time it is set.
# Thus, host-specific definitions should be at the beginning of the
# configuration file, and defaults at the end.
# Site-wide defaults for some commonly used options. For a comprehensive
# list of available options, their meanings and defaults, please see the
# ssh_config(5) man page.
Host *
# ForwardAgent no
# ForwardX11 no
# ForwardX11Trusted yes
# PasswordAuthentication yes
# HostbasedAuthentication no
# GSSAPIAuthentication no
# GSSAPIDelegateCredentials no
# GSSAPIKeyExchange no
# GSSAPITrustDNS no
# BatchMode no
# CheckHostIP yes
# AddressFamily any
# ConnectTimeout 0
# StrictHostKeyChecking ask
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa
# IdentityFile ~/.ssh/id_ecdsa
# IdentityFile ~/.ssh/id_ed25519
# Port 22
# Protocol 2
# Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
# MACs hmac-md5,hmac-sha1,[email protected]
# EscapeChar ~
# Tunnel no
# TunnelDevice any:any
# PermitLocalCommand no
# VisualHostKey no
# ProxyCommand ssh -q -W %h:%p gateway.example.com
# RekeyLimit 1G 1h
SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes
$ cat /etc/ssh/sshd_config
# $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key
# Ciphers and keying
#RekeyLimit default none
# Logging
#SyslogFacility AUTH
#LogLevel INFO
# Authentication:
#LoginGraceTime 2m
#PermitRootLogin prohibit-password
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
#PubkeyAuthentication yes
# Expect .ssh/authorized_keys2 to be disregarded by default in future.
#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
#AuthorizedPrincipalsFile none
#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody
# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no
# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no
# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no
# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes
#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
PrintMotd no
#PrintLastLog yes
#TCPKeepAlive yes
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none
# no default banner path
#Banner none
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*
# override default of no subsystems
Subsystem sftp /usr/lib/openssh/sftp-server
# Example of overriding settings on a per-user basis
#Match User anoncvs
# X11Forwarding no
# AllowTcpForwarding no
# PermitTTY no
# ForceCommand cvs server
작동 파이:
$ cat /etc/ssh/ssh_config
# This is the ssh client system-wide configuration file. See
# ssh_config(5) for more information. This file provides defaults for
# users, and the values can be changed in per-user configuration files
# or on the command line.
# Configuration data is parsed as follows:
# 1. command line options
# 2. user-specific file
# 3. system-wide file
# Any configuration value is only changed the first time it is set.
# Thus, host-specific definitions should be at the beginning of the
# configuration file, and defaults at the end.
# Site-wide defaults for some commonly used options. For a comprehensive
# list of available options, their meanings and defaults, please see the
# ssh_config(5) man page.
Host *
# ForwardAgent no
# ForwardX11 no
# ForwardX11Trusted yes
# PasswordAuthentication yes
# HostbasedAuthentication no
# GSSAPIAuthentication no
# GSSAPIDelegateCredentials no
# GSSAPIKeyExchange no
# GSSAPITrustDNS no
# BatchMode no
# CheckHostIP yes
# AddressFamily any
# ConnectTimeout 0
# StrictHostKeyChecking ask
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa
# IdentityFile ~/.ssh/id_ecdsa
# IdentityFile ~/.ssh/id_ed25519
# Port 22
# Protocol 2
# Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
# MACs hmac-md5,hmac-sha1,[email protected]
# EscapeChar ~
# Tunnel no
# TunnelDevice any:any
# PermitLocalCommand no
# VisualHostKey no
# ProxyCommand ssh -q -W %h:%p gateway.example.com
# RekeyLimit 1G 1h
SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes
$ cat /etc/ssh/sshd_config
# $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key
# Ciphers and keying
#RekeyLimit default none
# Logging
#SyslogFacility AUTH
#LogLevel INFO
# Authentication:
#LoginGraceTime 2m
#PermitRootLogin prohibit-password
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
#PubkeyAuthentication yes
# Expect .ssh/authorized_keys2 to be disregarded by default in future.
#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
#AuthorizedPrincipalsFile none
#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody
# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no
# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no
# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no
# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
UsePAM yes
#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
PrintMotd no
#PrintLastLog yes
#TCPKeepAlive yes
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none
# no default banner path
#Banner none
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*
# override default of no subsystems
Subsystem sftp /usr/lib/openssh/sftp-server
# Example of overriding settings on a per-user basis
#Match User anoncvs
# X11Forwarding no
# AllowTcpForwarding no
# PermitTTY no
# ForceCommand cvs server
답변1
아직 리뷰를 쓸 수 없지만,nmap 문서:
필터링됨은 방화벽, 필터 또는 기타 네트워크 장애물이 포트를 차단하여 Nmap이 포트가 열려 있는지 닫혀 있는지 확인할 수 없다는 것을 의미합니다. 닫힌 포트에는 애플리케이션 수신이 없지만 언제든지 열 수 있습니다. 포트가 Nmap의 프로브에 응답하면 필터링되지 않은 것으로 분류되지만 Nmap은 포트가 열려 있는지 닫혀 있는지 확인할 수 없습니다. Nmap은 두 가지 상태 중 어느 것이 포트를 설명하는지 결정할 수 없는 경우 open|filtered 및 close|filtered 상태 조합을 보고합니다.
내 생각엔 라우터가 어떻게든 포트를 차단하고 있고 작동하는 다른 raspi가 버그일 수도 있습니다. 확인해 보세요.이것무언가를 변경했거나 일반적인 내용을 변경한 경우에는 라우터/스위치를 재부팅하세요.
또한 모듈을 교체하여 하드웨어 오류를 배제하는 데 도움이 될 수 있습니다. 즉, 작업 모듈의 벽면 소켓/전원 공급 장치를 사용하고(전류량이 충분해야 함) 작업 모듈의 차단기가 있는 SD 카드를 넣습니다. 작동하지 않음 모듈에서 또는 다른 방법으로 (한 번 - 네트워크 어댑터에 결함이 있음).
비밀번호 인증이나 rsa 파일도 사용하시나요?
/etc/hosts 파일에는 두 파이(작동하는 파이와 ssh 문제가 있는 파이)에 무엇이 포함되어 있습니까? (고양이/등/호스트)
또한 작동하지 않는 Pi와 작동하는 Raspberry Pi와의 잠재적인 차이점에 대해 /etc/ssh/ssh_config(클라이언트 구성) 및 /etc/ssh/sshd_config(ssh 서버 구성)의 내용을 제공하세요. (cat/etc/ssh/ssh_config &&cat/etc/sshd_config)
편집: 추가 시도
인터넷은 잘 작동하므로(인터넷은 포트 80, 8080 및 443을 통해 실행됨) "깨진" 파이에서 다음을 시도할 수 있습니다.
/etc/ssh/sshd_conf 의 주석 처리를 제거
# Port 22
하고 다음으로 변경하십시오.Port 80
그래도 작동하지 않으면 포트를 사용할 수 있어야 하므로Port 443
및 로 변경하십시오. ( 안전한 변경을Port 8080
사용하여 변경하고 사용할 수 있습니다 )sudo nano /etc/ssh/sshd_conf
ctrl + x
각 변경 사이
sudo systemctl restart sshd.service
에 각 변경 사이에 다른 장치에서 손상된 파이에 다시 연결을 시도하십시오.ssh -p 80 [email protected]
-p는 포트를 변경하고 systemctl을 사용하여 어댑터를 다시 시작했기 때문에 포트 변수를 나타냅니다(확인하고 싶다면 매번 pi를 다시 시작할 수도 있습니다).
Port 22
그래도 작동하지 않으면 포트를 다시 변경하세요.(참고: SSH가 활성화된 공용 서버가 있는 경우 포트 2409 등 임의 공격을 덜 쉽게 하기 위해 포트를 일반적이지 않은 포트로 변경해야 합니다.)데몬 상태를 확인할 수도 있습니다. 손상된 파이의 출력에 로드되지 않은 오류 또는 "실패" 오류가 있는 경우
sudo systemctl status sshd.service
해당 내용도 게시하세요.하드웨어에 액세스하는 것이 쉽지는 않을 것 같지만 그다지 문제가 되지 않는다면 인터넷이 작동하고 어리석게 들리더라도 하드웨어를 교체하는 것이 좋습니다. 저는 가장 열악한 하드웨어 문제를 겪었습니다. 전기적으로는 일련의 신호이고, 변조기 모듈은 예상치 못한 동작을 할 수 있습니다. 그리고 "작동하지만 작동하지 않음" 때문에 몇 년 동안 가장 재미있는 문제를 겪었습니다. 하드웨어 결함을 실제 가능성으로 만들기 때문입니다.
포트 때문이라면 SSH는 이미 다른 포트를 통해 작동해야 합니다. 그렇지 않은 경우 추가 단계는 다음과 같습니다. ID가 작동하지 않기 전에 업데이트(fe sudo apt update && sudo apt update)했거나 설치했습니까? 기억나는 게 있나요? 작동하지 않기 전에 가장 작은 변화는 무엇입니까? 최근에 업데이트하셨나요(sudo apt update && sudo apt update -y)? 그렇지 않은 경우 지금 업데이트하고 파이를 다시 시작하세요. 때로는 도움이 되기도 합니다.
답변2
PORT STATE SERVICE
22/tcp filtered ssh
SSH는 어떤 식으로든 차단됩니다.
- 방화벽을 통해 PI 상자에서;
- 귀하가 사용하고 있는 스마트 라우터는 SSH를 차단하기 위해 보안 기능(ips 격리 또는 방화벽)을 사용할 수 있습니다.