hi3516 컴파일 SSH

7736 단어

3516 컴파일 SSH


필수 조건


네트워크 확인


LAN에서 사용되지 않는 IP를 확인합니다.참고할 수 있다https://jingyan.baidu.com/article/e6c8503ca1dd67e54e1a1841.html;
또는 명령,arp-a 사용하기;이 단계는 다음에 sshd 서버의 네트워크 IP를 설정할 때 랜의 다른 IP와 충돌하지 않기 위해서입니다.
예를 들어 arp-a 이후 랜의 모든 IP는 다음과 같다.
usernamedeMacBook-Pro:~ panxiaogong$ arp -a
? (192.168.0.1) at 94:d9:b3:d1:6a:60 on en0 ifscope [ethernet]
? (192.168.0.101) at 58:6b:14:53:d4:5b on en0 ifscope [ethernet]
? (192.168.0.103) at 34:ab:37:33:db:3e on en0 ifscope [ethernet]
? (192.168.0.105) at ac:e4:b5:7e:42:cd on en0 ifscope [ethernet]
? (224.0.0.251) at 1:0:5e:0:0:fb on en0 ifscope permanent [ethernet]
? (239.255.255.250) at 1:0:5e:7f:ff:fa on en0 ifscope permanent [ethernet]

그래서 Hi3516의 IP를 사용하지 않은 192.168.0.106 등등으로 설정할 수 있습니다.
 

컴파일 기준 설정


시스템/etc/profile 또는 사용자 디렉터리에 있습니다.bashrc에서 CXX와 CC 설정하기;예를 들어hi3516에서 실행되는 프로그램을 생성하려면
export CC=/opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-gcc

export CXX=/opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-g++

이 단계의 목적은 뒤에 configure가 스크립트를 컴파일할 때 사용하고 싶은 컴파일러로 자동으로 추가하는 것입니다.컴파일 환경 자체가 실행할 수 있는 프로그램, 예를 들어 ubuntu의 실행 가능한 프로그램을 만들려면 위의 두 가지를 주석하는 것을 기억하십시오.
또 다른 제안된 컴파일 방식은 컴파일 도구를 수정하지 않고 ssh에서 다운로드한configure 파일을 직접 보고 컴파일 환경을 수정하는 것이다.

필요한 소프트웨어 패키지 다운로드


1. zlib-1.2.11.tar.gz 
2.openssl-1.1.1
3.openssh
주의: 우선 Openssh를 다운로드한 다음 Openssh에 대응하는 버전의 문서 지도를 읽고 지원되는 zlib와openssl 버전을 보는 것을 권장합니다.zlib와openssl은 모두openssh를 컴파일하는 데 필요한 것입니다.

번역하다


zlib 컴파일

./configure  --prefix=/home/panxiaogong/work/3516/3rdparty/install
  • 이 단계의 --prefix는 설치하고자 하는 동의 경로에 설치 경로를 설정하기 위한 것이다
  • ./configure 작업은 컴파일용makefile를 생성합니다.vim를 사용하여 이 파일이 환경 변수를 정상적으로 설정했는지 확인합니다.
  • CC=/opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-gcc
    
    
    
    CFLAGS=-O3 -D_LARGEFILE64_SOURCE=1
    
    #CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7
    
    #CFLAGS=-g -DDEBUG
    
    #CFLAGS=-O3 -Wall -Wwrite-strings -Wpointer-arith -Wconversion \
    
    #           -Wstrict-prototypes -Wmissing-prototypes
    
    
    
    SFLAGS=-O3 -fPIC -D_LARGEFILE64_SOURCE=1
    
    CROSS=/opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-
    
    LDFLAGS= -L. libz.a
    
    LDSHARED=/opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
    
    CPP=/opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-gcc -E
    
    
    
    STATICLIB=libz.a
    
    SHAREDLIB=libz.so
    
    SHAREDLIBV=libz.so.1.2.4
    
    SHAREDLIBM=libz.so.1
    
    LIBS=$(STATICLIB) $(SHAREDLIB) $(SHAREDLIBV)
    
    
    
    AR=$(CROSS)ar rc
    
    RANLIB=$(CROSS)ranlib

     

    부록


    ssh는 비교적 흔히 볼 수 있는 명령이기 때문에 로그인이 실패하거나 연결이 실패했을 때 더 자세한 정보를 알고 싶으면 다음과 같은 방식으로 링크 과정을 볼 수 있습니다.
    ssh -vvv [email protected]  

    이렇게 하면 상세한 링크 로그를 인쇄할 수 있다.v의 개수는 ssh 링크의 로그 등급, 즉 로그의 상세도를 결정합니다.이 매개 변수의 상세한 내용은 통과할 수 있다
    man ssh

     
     
     
     
  •  

  •  
  • 그 중에서 가장 중요한 검사: CC, AR, RANLIB NM;나는 다른 사람의 방법을 참고하여 사용자 정의make 변수 CROSS를 설정했다.변경한 후 컴파일하면 됩니다:
  • make-j6#실행 루틴 설정
    make install
  • ssl
  • 컴파일
    ./config no-asm no-async shared --prefix=/home/panxiaogong/work/3516/3rdparty/install --cross-compile-prefix=arm-himix200-linux-
    no-asm: 교차 컴파일 과정에서 어셈블리 코드 코드를 사용하지 않고 컴파일 과정을 가속화하는 것입니다. 왜냐하면 그 어셈블리 코드는arm 형식에 지원되지 않기 때문입니다.
    shared: 동적 연결 라이브러리를 생성합니다.
    zlib: 압축 라이브러리 지원
    --prefix: make install 후 디렉터리를 생성하는 경로를 지정하고 수정하지 않으면 기본적으로 OPENSSLDIR 디렉터리(/usr/local/ssl)
    참조:https://www.jianshu.com/p/5f260723f5f8 
     
  • config에서 생성된 makeFIle 수정
  • CROSS=/opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-
    CC=/opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-gcc
    CFLAG= -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -O3 -Wall
    DEPFLAG= -DOPENSSL_NO_EC_NISTP_64_GCC_128 -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE -DOPENSSL_NO_LIBUNBOUND -DOPENSSL_NO_MD2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_SCTP -DOPENSSL_NO_SSL_TRACE -DOPENSSL_NO_SSL2 -DOPENSSL_NO_STORE -DOPENSSL_NO_UNIT_TEST -DOPENSSL_NO_WEAK_SSL_CIPHERS
    PEX_LIBS=
    EX_LIBS= -ldl -lz
    EXE_EXT=
    ARFLAGS=
    AR= $(CROSS)ar $(ARFLAGS) r
    RANLIB= $(CROSS)ranlib
    RC= windres
    NM= $(CROSS)nm
    PERL=/usr/bin/perl
    TAR= tar
    TARFLAGS= --no-recursion
    MAKEDEPPROG=/opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-gcc
  • zlib의 파일 경로 수정
  • -I/home/panxiaogong/work/3516/3rdparty/install/include
    주의, 여기 - I를 추가해야 하는지, 내가 여기에 추가해야 하는지
  • 내가 번역할 때 다음과 같은 오류가 발생했기 때문이다.
  • error: unrecognized command line option '-m64
    CFLAGS를 찾아서 이걸 지우면 돼요.
     
  • openssh
  • 컴파일
    ./configure --host=arm-linux --with-libs --with-zlib=/home/panxiaogong/work/3516/3rdparty/install  --with-ssl-dir=/home/panxiaogong/work/3516/3rdparty/install --disable-etc-default-login --prefix=/home/panxiaogong/work/3516/3rdparty/install
    --with-zlib 이 매개 변수의 목적은 방금 생성된 zlib를 추가합니다.
    1. 필요한 원본 코드를 다운로드하여 구글의 최신 버전으로 직접 mkdir-p~/arm/fs;mkdir-p~/arm/source 다운로드 zlib:zlib-1.2.3.tar.gz 다운로드 ssl: openssl-0.9.8d.tar.gz 다운로드 ssh: openssh-4.6p1.tar.gz
    2. 컴파일
  • make -j9
  • 주의, zlib와openssl의 정적 라이브러리를 사용하는 것을 권장합니다. 동적 라이브러리라면 다음과 같은 방법으로 zlib와 ssl 라이브러리를 목표 기계에 복사해야 합니다
  •  
    # 설치 경로 install에 있는 동적 라이브러리를lib로 압축합니다.tar
    # 이 단계의 목적은 동적 라이브러리 간의 링크 파일 관계의 실효를 방지하는 것이다
    tar -cvf  lib.tar  *
    # 그런 다음 lib.tar는 tftp를 사용하여 목표판에 놓고 압축을 풀기
    tar -xvff lib.tar
     
  • make가 끝난 후makeinstall이 실패했습니다. 신경 쓰지 마세요. 생성된 실행 가능한 파일을 수동으로 복사할 수 있습니다.
     
    scp
    sftp
    sftp-server
    ssh
    ssh-add
    ssh-agent
    ssh-keygen
    ssh-keyscan
    ssh-keysign
    ssh_config
    sshd
    sshd_config
     
  • sshd를 3516의/usr/sbin 디렉터리로 복사
  • 다음 파일을 3516의/usr/local/bin
  • 으로 복사
    scp
    sftp
    ssh
    ssh-add
    ssh-agent
    ssh-keygen
    ssh-keyscan
  • sftp-server ssh-keysign을 3516/usr/local/libexec
  • 로 복사
  • 목표판 3156에서: mkdir-p/usr/local/etc/;sshd_를config , ssh_config 이 디렉터리로 복사
  • 로그 디렉터리 만들기
  • mkdir -p/var/run
    mkdir -p/var/empty/sshd
    chmod 755/var/empty
     
  • 환경 변수 설정
  • vi ~/.profile
    export PATH=$PATH:/usr/local/bin
     
  • 키 생성
  • 로컬 시스템에서 실행

  • ssh-keygen -q -t ed25519 -f ssh_host_ed25519_key -C '' -N '' 
    ssh-keygen -q -t rsa -f ssh_host_rsa_key -C '' -N '' 
    ssh-keygen -q -t dsa -f ssh_host_dsa_key -C '' -N '' 
    chmod 600 ssh_host_ed25519_key
    chmod 644ssh_host_ed25519_key.pub 
    chmod 600 ssh_host_rsa_key 
    chmod 644 ssh_host_rsa_key.pub 
    chmod 600 ssh_host_dsa_key 
    chmod 644 ssh_host_dsa_key.pub
     
    4. 테스트
    대상판 시작 sshd:
     
    일단 3516 위에.
     
    adduser sshd
    그리고 판자의 IP를 설정해야 돼요.
     
    ifconfig eth0 172.10.10.83 netmask 255.255.255.0
    route add default gw 172.10.10.1# 게이트웨이
    그 중에서 스위치 주소 172.10.10.1은 ssh 로그인을 하고 싶은 3516의 본 컴퓨터의 스위치와 일치하여 ipconfig 또는ifconfig를 통해 볼 수 있다
     
     
    #/usr/sbin/sshd  -f/usr/local/etc/sshd_config &
     
     
    //개발판에서 이 명령을 실행할 때//Privilege separation user sshd does not exist//개발판 시스템에adduser shhd//또는/etc/passwd에 다음 줄을 추가해야 합니다.
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    호스트: [email protected](개발판의 IP)//루트 비밀번호가 바로 당신의 컴퓨터의 루트 비밀번호입니다.
    이식 완료 대상판 시작 sshd: #/usr/sbin/sshd 호스트: $ssh [email protected]하지만 문제가 있으면 많은 실수를 할 수 있다. 고수가 나에게/root/를 삭제하라고 말했다.ssh/known_hosts

    좋은 웹페이지 즐겨찾기