ssh 클라이언트의 '서버에서 로밍 할 수 없음'은 무엇을 의미 할 수 있습니까?


25

SSH 서버 인스턴스에 연결하지 못했고 자세한 출력에 포함되어 있습니다 debug1: Roaming not allowed by server. 다음과 같이 예측 가능하고 피할 수있는 문제가 발생합니다.

  • 로밍이란 서로 다른 유형의 네트워크에서 서비스에 액세스하는 것을 의미합니다. ssh우분투 14.04에서 실행 되는 6.6.1 클라이언트 의 자세한 출력 컨텍스트에서 의미가 무엇인지 알 수 없습니다 .
  • 이것이 오류인지 여부와 그것이 로그인 실패의 원인인지 아닌지는 명확하지 않습니다 (여기서 연결 실패로 뛰어 들고 싶지 ssh않습니다. BTW 의 출력 메시지는 없습니다) -> 더 많은 문제와 시간 낭비-당신은 경고되었습니다!)
  • site:www.openssh.org roaming빈 결과로 Google에서 쿼리 했으며 맨 페이지에 용어가 포함되어 있지 않습니다. 모호성 때문에 문서화되어 있어도 사용하는 것은 말도 안됩니다!

그 메시지는 무엇을 의미 할 수 있습니까? 어떻게 모호하고 직관적이지 않고 도움이되지 않는 다른 오류와 SSH의 다른 메시지를 디버깅하는 데 어떻게 사용할 수 있습니까?

답변:


22

실제로는 오류 메시지가 아닙니다. 서버가 로밍 연결을 수락하지 않음을 알려주는 디버그 메시지 일뿐입니다.

로밍은 분명히 2009 년에 OpenSSH에 추가 된 실험적인 기능입니다. 이 기능의 목적은 ssh 클라이언트가 서버 세션에서 연결을 끊은 다음 다른 위치에서 세션을 다시 시작하는 것입니다. 이에 대한 논의는 여기 를 참조 하십시오 . 인터넷 검색 ssh, 로밍 및 "Martin Forssén"은 다른 페이지를 표시합니다. 적극적으로 개발되고있는 것 같지는 않습니다. 나는 SSH 개발자가 실험적이고 완성되지 않았기 때문에 그것을 문서화하지 않았다고 생각합니다.

OpenSSH 소스 코드를 검사 할 때 문서화되지 않은 클라이언트 측 옵션 UseRoaming이 있으며 예 또는 아니오로 설정할 수 있습니다. 클라이언트 구성 (일반적으로 .ssh/config파일)에 "UseRoaming no"행을 추가하면 디버그 메시지가 표시 되지 않아야 합니다.

서버 측 HostbasedAuthentication설정이 서버가 로밍 연결을 수락하는지 여부를 제어하는 이유는 분명 하지 않습니다.

업데이트 : 클라이언트 로밍 지원은 컴퓨터 취약점 노출 보고서 ( CVE-2016-0777)의 대상인 것 같습니다 . OpenSSH 버전 5.4 ~ 7.1p1은 취약합니다. 사용자는 OpenSSH 7.1p2 이상으로 업그레이드해야합니다. 업그레이드 할 수없는 사용자는 ssh 클라이언트 구성에 "UseRoaming no"를 추가하여 클라이언트에서 로밍을 비활성화해야합니다. 다음을 참조하십시오.


7
글쎄, 이제 그것을 no로 설정하는 것이 좋습니다. mail-archive.com/misc@openbsd.org/msg144351.html
nikeee

1
@nikeee : ... "무해한"작동하지 않는 스텁을 제공하지 않는 것에 대한 경고입니다. ( 서버가 아닌 클라이언트 설정 no에서 설정해야 합니다.)
Piskvor

@Piskvor 그러나 그 일을 전파하는 꽤 많은 devops / webops 책이 있습니다 .... 모두 잘못되었을 수 있습니까? 오.
Florian Heigl

인터넷 에서이 구성에 대한 가장 좋은 설명.
nils petersohn

4

CentOS6의 openssh 5.3의 변경 로그에는 다음과 같은 참고 사항이 있습니다.

2009/06/27
     클라이언트 옵션 UseRoaming을 추가하십시오. 아직 아무것도하지 않지만
     클라이언트에서 로밍 사용 여부를 제어합니다.
     섬기는 사람. Martin Forssen에서.

3

@ ILMostro_7 chmod 600 certified_keys가 나를 위해 잘 작동했습니다.

"서버에서 로밍 할 수 없음"인터넷 검색을 통해 여기에 도착하고 Linux (Ubuntu) 클라이언트를 사용하는 다른 사람의 이익을 위해 해당 경고를 수정 한 후 다음을 참조하십시오.

Agent admitted failure to sign using the key

이에 대한 치료법은 https://help.github.com/articles/error-agent-admitted-failure-to-sign/에 있습니다.

    # start the ssh-agent in the background
    $ eval "$(ssh-agent -s)"
    # Agent pid 59566 (displays process id)
    $ ssh-add
    # Enter passphrase for /home/you/.ssh/id_rsa: [tippy tap]
    # Identity added: /home/you/.ssh/id_rsa (/home/you/.ssh/id_rsa)

'#'= 주석. 당신 = 당신의 사용자 이름. [티피 탭] = 휴머? = Enter 키를 누르십시오.

이 Q & A가 이미 도움을 준 것만 큼 누군가에게 도움이되기를 바랍니다.


2

이 오류 메시지는 서버에서 설정 /etc/ssh/sshd_config하지 않은 경우 표시 될 수 있습니다 .HostbasedAuthenticationyes

왜 그런지 모르겠습니다.

다른 문제는 다음과 같습니다.

사용자가 소유하고 chmod 700이어야하는 $ USER / .ssh 디렉토리에 대한 권한을 점검하십시오. 또한 권한이 부여 된 키 파일은 chmod 700이어야하며 사용자가 소유해야합니다.


700? execute키 파일에 비트 가 필요한 이유는 무엇 입니까?
ILMostro_7

견적은 어디에서 왔습니까? 참조를 추가하십시오.
Karl Richter

ILMostro_7은 파일이 아니며 디렉토리에 있으며 사용자가 디렉토리에 파일을 만들 수 있으려면 실행 플래그를 설정해야합니다.
IceyEC

@IceyEC 대답은 700 건의 authorized_keys에 .
mdrozdziel

1
이어야 chmod 400합니다. 왜 파일이 실행 가능한지 궁금 합니다 . 쓰기 액세스도 시간의 99.999 %가 바람직하지 않습니다. sshd사용자의 .ssh폴더에 그룹 및 기타에 대한 액세스 권한이 없는지 확인합니다 .ssh/authorized_keys. 따라서 답변의 파마는 효과가 있지만 불필요하게 넓습니다.
Piskvor
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.