buildroot로 빌드된 임베디드 Linux에서 부팅한 후 sshd가 시작되지 않습니까?

buildroot로 빌드된 임베디드 Linux에서 부팅한 후 sshd가 시작되지 않습니까?

buildroot의 기본 구성을 사용하여 Raspberry Pi에 대한 최소 설치를 수행했습니다. 또한 menuconfig에서 openssh와 openssl을 선택했습니다.

Package Selection for the target  --->
    [*] Networking  --->
        [*]   openssh
    [*] Library -->
        Crypto -->
            -*-   openssl
            [*]      openssl binary
            [ ]      openssl additional engines

Pi를 할당했지만 192.168.0.14SSH를 통해 연결할 수 없습니다. nmap은 Pi의 모든 포트가 다운되었음을 표시하고 때로는 Pi가 전혀 표시되지 않는 경우도 있습니다. 이상하다고 생각합니다. nmap이 스캔할 때마다 LINK LED가 깜박이므로 제대로 연결된 것 같습니다.

update-rc.d저는 보통 부팅 서비스를 사용하거나 관리 systemctl하지만 SSH를 통해서만 Pi에 연결할 수 있습니다. HDMI나 직렬 포트가 없습니다. 수동으로 설정하는 방법은 잘 모르겠습니다. /etc/init.d/S50sshdPi에 존재하므로 부팅 후 ssh를 시작해야 합니다. 그렇죠?

관련 구성 파일:/etc/ssh/sshd_config,/etc/init.d/S50sshd.

SD 카드에서 관련 로그를 찾을 수 없습니다.

편집하다:

X Tian의 댓글 제안을 바탕으로 로그를 얻었습니다. 유일하게 녹음된 것은/var/log/messages. 관련 부품:

Jan  1 00:00:02 buildroot auth.info sshd[75]: Server listening on 0.0.0.0 port 22.

sshd가 시작되는 것 같습니다. 문제는 다른 데 있는 것 같습니다.

root@pc:~# ssh 192.168.0.14
ssh: connect to host 192.168.0.14 port 22: Connection refused
root@pc:~# ping 192.168.0.14
PING 192.168.0.14 (192.168.0.14) 56(84) bytes of data.
64 bytes from 192.168.0.14: icmp_seq=1 ttl=64 time=32.8 ms
64 bytes from 192.168.0.14: icmp_seq=2 ttl=64 time=55.6 ms
64 bytes from 192.168.0.14: icmp_seq=3 ttl=64 time=79.1 ms
^C
--- 192.168.0.14 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 32.808/55.871/79.140/18.917 ms
root@pc:~# exit
debian@pc:~ nmap -F 192.168.0.14
Starting Nmap 6.47 ( http://nmap.org ) at 2015-05-30 03:25 BRT

Nmap scan report for 192.168.0.14
Host is up (0.085s latency).
All 100 scanned ports on 192.168.0.14 are closed

흥미롭게도 Pi를 끄고 이더넷 케이블을 분리한 후에도 해당 주소로 ping을 보낼 수 있었습니다. 이제 나는 정말로 길을 잃었습니다. 그냥 압축해서 업로드하는 게 나을 것 같아요/ 아래의 모든 파일어디를 봐야 할지 아는 사람이 있는 경우(이곳은 프로덕션 환경이 아니며 비밀번호와 개인 키가 사용되지 않으며 테스트 목적으로 설정됩니다.)

답변1

sshd_config에서는 빈 비밀번호를 사용하여 루트로 로그인하는 것을 허용하지 않으며 루트 계정에 비밀번호가 설정되어 있지 않습니다.

ssh_config 변경

#PermitEmptyPasswords no

도착하다

PermitEmptyPasswords yes

로그에서 더 많은 정보를 얻으려면 SSH의 로깅 수준을 높여보세요.

~에서

#LogLevel INFO

도착하다

LogLevel DEBUG

sshd 로그 수준 변경에 대한 추가 정보이 답변.

답변2

분석에서 다음과 같이 말씀하셨습니다.

Pi를 종료하고 이더넷 케이블을 분리한 후에도 해당 주소로 ping을 보낼 수 있었습니다.

IP가 중복되는 증상입니다. 즉, 동일한 IP 주소를 가진 장치가 2개 이상 있습니다.

다음 두 가지 방법을 사용하여 장치의 MAC 주소를 확인해야 합니다.

장치에서 다음을 수행 ifconfig하고 필드를 확인하십시오 HWaddr.

root@rpi# ifconfig
eth0      Link encap:Ethernet  HWaddr B8:27:EB:BE:1C:67  
          inet addr:192.168.1.11  Bcast:192.168.1.255  Mask:255.255.255.0

원격 컴퓨터에서 arp -a <device IPaddr>해당 필드를 실행하고 확인합니다 ether.

jml@pc$ arp -a 192.168.1.11
? (192.168.1.11) at b8:27:eb:be:1c:67 [ether] on eth0

내 예에서는 두 MAC 주소가 모두 동일합니다. 그렇지 않은 경우 네트워크의 모든 IP 주소를 확인해야 합니다(고정).그리고동적).

대부분의 경우 이 문제는 다른 고정 주소와 함께 사용되는 DHCP 서버의 잘못된 구성으로 인해 발생합니다. 예를 들어, DHCP 서버에 192.168.1.10다음 사이에 풀이 있는 192.168.1.20경우기필코 아니다이 범위 내에 다른 고정 주소가 있습니다.

Pi 질문으로 돌아갑니다. DHCP 범위에 속하지 않는 새 IP 주소를 할당해 보세요. 또는 고정 주소에 더 많은 공간을 확보하도록 DHCP 서버를 재구성하십시오.

답변3

/etc/init.d/S50sshd가 Pi에 존재하므로 부팅 후 ssh를 시작해야 합니다. 그렇지 않습니까?

완전한 것은 아니고. 해당 /etc/init.d/S50sshd파일은 이미 사용 중인데, 해당 런레벨 폴더에 있는 파일이 호출됩니다. 실행하면 update-rc.d필요한 폴더의 init.d에 S50sshd에 대한 심볼릭 링크가 생성됩니다 /etc/rc?.d/.

다음을 통해 현재 상태를 확인할 수 있습니다.

ls etc/rc*.d/*ssh*

(런레벨 2, 3, 4, 5에 나타나기를 원합니다)

다음을 사용하여 생성합니다.

ln -s /etc/init.d/ssh /etc/rc2.d
ln -s /etc/init.d/ssh /etc/rc3.d
ln -s /etc/init.d/ssh /etc/rc4.d
ln -s /etc/init.d/ssh /etc/rc5.d

답변4

루트를 구축할 때도 이 문제가 발생했습니다. etc/init.d/S50sshd에도 불구하고 /var/empty 권한으로 인해 sshd가 여전히 시작되지 않는 것으로 나타났습니다(팁은 콘솔 인쇄를 자세히 살펴보면서 나옵니다).

Starting sshd: /var/empty must be owned by root and not group or world-writable.

# ls -l /var/                                                                                                                                                                                               
total 0                                                                                                                                                                                                     
..                                                                                                                                 
drwxr-xr-x    2 sshd     sshd            40 Jan  1 00:09 empty  

내 해결책은 그것을 삭제하고 다시 만드는 것이었습니다 (나는 이미 루트입니다)

# ls -l /var/                                                                                                                                                                                               
total 0                                                                                                                                                                                                     
..                                                                                                                                 
drwxr-xr-x    2 root     root            40 Jan  1 00:09 empty  

그런 다음 sshd를 수동으로 시작하십시오.

관련 정보