>

sftp 를 할 수있었습니다  어제 RHEL 5.4 상자 (RedHat)로 이동했지만 오늘은 할 수 없습니다.

메시지는 "Received message too long 778199411" 입니다 조사한 결과 RHEL 상자의 .bashrc 때문이었습니다.  라인 echo "running .bashrc"  -아무것도 울려 퍼진다 고 생각합니다.

왜 라인을 인쇄하면 sftp 에 영향을 주나요? ? .bashrc 에서 라인을 인쇄하는 것과 같은 디자인 문제와 조금 느꼈습니다.  로그인 또는 ssh 와 같은 다른 상황에서 작동  그리고 sftp 때 추적하기 어렵다  그런 이상한 이유로 실패합니다.

그래서 질문은 왜 라인을 인쇄하면 이런 에러가 발생하고 왜 우리는 .bashrc 에서 무언가를 인쇄하고 싶을까요? ? (주로이 파일의 소스/실행시기를 확인하십시오.)

  • 답변 # 1

    이것은 오랜 문제입니다. 나는 10 년 전에 직장에서 상용 SSH와 집에서 공개 SSH를 혼합해야한다는 것을 알았습니다. 오늘 다시 연락하여이 게시물을 찾았습니다.

    "sftp/scp는 실패하지만 ssh는 괜찮습니다"를 검색하면 더 빨리 해결책을 생각 나게 될 것입니다!

    간단히 말해서, .bashrc 및 .bash_profile 등은 조용해야하거나 sftp/scp 연결 프로토콜을 방해합니다.

    open-SSH FAQ를 참조하십시오 :

    2.9-연결시 sftp/scp가 실패하지만 ssh는 정상입니다.

  • 답변 # 2

    SFTP의 경우 최소한 internal-sftp 를 사용하여이를 해결할 수 있습니다.   .bashrc 를 읽지 않으므로 서브 시스템  또는 /etc/motd .

    간단히 /etc/ssh/sshd_config 변경  SFTP 서브 시스템을 파일 화하고 변경하십시오.

    #Subsystem sftp /usr/lib/openssh/sftp-server
    Subsystem sftp internal-sftp
    
    

    그리고 오류가 사라졌습니다.

  • 답변 # 3

    이 모든 곳에서 본 모든 응답은 /etc/motd 를 통해 너무 많은 출력물이라고 주장합니다. 또는 .bashrc 등 항상 그런 것은 아닙니다. .bashrc 가없는 계정이있는 경우 /etc/motd  비어 있고 기본 .bashrc  인쇄 된 출력이없는최소입니다. 여전히 문제가있을 수 있습니다. /sbin/nologin 쉘을 가진 사용자 계정이있는 경우  또는 /bin/false  이 오류는 여전히 발생합니다.

    이러한 이유는 무엇입니까 ??? 당신이 누군가에게 루트 자제 sftp 를 부여하려고하는 경우 보안 쉘 액세스 권한이 없으면이 문제가 발생합니다.

    해결 방법 : ssh 허용  근로 감옥에 넣습니다 이것은 ssh 에서 해결해야 할 문제입니다 , 너무 오래 왔습니다.

  • 답변 # 4

    원격 시스템의 id 사용자 이름으로 ~/.bashrc 상단에 다음을 입력하십시오

    # If not running interactively, don't do anything
    [[ $- == *i* ]] || return 
    
    

    전체 파일을 소싱하는 대신 ~/.bashrc에서 일찍 종료됩니다 ...이 ID로 로그인하지 않고 해당 사용자 이름으로 원격 ID로 scp 또는 sftp를 실행하는 경우 .bashrc를 자동으로 만드는 문제를 해결합니다. ... @ Peter Scott을 다른 답변으로 인용하자면 : "간단히 말하면 .bashrc 및 .bash_profile 등은 침묵해야하거나 sftp/scp 연결 프로토콜을 방해합니다."

    원격 컴퓨터의 셸이 ~/.bashrc를 사용하지 않는 경우 ~/.bashrc_profile 또는 ~/.profile 파일에서 위의 편집을 수행하여 해당 원격 상자의 셸에 맞게

  • 답변 # 5

    한 가지 더 이유가있을 수 있습니다. openssh-5.3p1-122.el6.x86_64가있는 RHEL 6에서 LOCALE이 "C"로 유지 될 때 잘못된 동작을 발견했습니다. 다음과 같이 변경 한 경우 :

    export LC_ALL="en_US.UTF-8"
    
    

    그런 다음 sftp가 올바르게 동작합니다. 이전 openssh-5.3p1-118에서는 이러한 동작이 발생하지 않았으므로이 빌드에서 약간의 버그 일 수 있습니다.

관련 자료

  • 이전 Linux에서 PCI 장치 재설정
  • 다음 Bash에서 변수로 MQTT?