Jupyter가 제대로 연결되는 것 같지만 브라우저에서 액세스할 수 없습니다.

Jupyter가 제대로 연결되는 것 같지만 브라우저에서 액세스할 수 없습니다.

브라우저에서 Jupyter 노트북을 열려고 합니다. Jupyter는 잘 연결되는 것 같습니다.

[I 20:38:02.663 NotebookApp] Serving notebooks from local directory: /home/user/.jupyter
[I 20:38:02.663 NotebookApp] Jupyter Notebook 6.2.0 is running at:
[I 20:38:02.663 NotebookApp] http://nameofVM:8888/

그런데, 해당 URL( )을 입력하면 http://nameofVM:8888/페이지가 로딩되지 않고, 해당 사이트에 존재하지 않는 페이지에 접근하려고 할 때와 같은 오류 메시지가 뜹니다.

솔루션의 모든 단계를 시도했습니다.이 게시물. 또한 내용을 읽고 문제 해결을 시도했습니다.문서. 이 문제를 해결하는 방법과 Linux 관련 솔루션이 있는지 잘 모르겠습니다. 누구든지 어떤 제안이 있습니까? 나는 매우 감사할 것이다.

노트:

  • 모든 코어 목록을 확인하면 다음과 같은 결과가 나타납니다.

    python3 /home/user/.local/share/jupyter/kernels/python3

  • Ubuntu 16.04.7을 실행하는 Linux VM을 사용하고 있습니다.

답변1

보안상의 이유로 Jupyter의 기본 구성 때문일 수 있다고 생각합니다.

질문

상황을 명확히 하기 위해 호스트 머신(알 수 없는 OS)과 가상 머신(Ubuntu)이 있습니다. 표면적으로는 동일한 상자에서 실행되지만 논리적으로는 완전히 다른 두 시스템인 것처럼 동작합니다. 따라서 둘 사이의 네트워크에 관한 한, 두 머신이 서로 다른 머신이지만 우연히 동일한 네트워크에 있다고 상상해야 합니다.

기본적으로 Jupyter는 IP 주소 127.0.0.1(여기서 언급한). 이것은 ... 불리운다 "로컬 호스트" 또는 "루프백"이며 Jupyter가 실행 중인 동일한 시스템에서만 액세스할 수 있습니다. 따라서 다른 주소를 수신하도록 Jupyter가 구성되지 않은 경우 호스트는 액세스할 수 없습니다. 연결하다 .

호스트의 연결을 허용하세요

호스트를 얻으려면 Jupyter를 마치 호스트인 것처럼 구성해야 합니다.공개 서버 실행. 이는 가상 머신이 서버 역할을 하고 호스트가 클라이언트 역할을 하기 때문입니다.

이는 간단해야 합니다. 다음과 같이 jupyter를 실행합니다.

jupyter 노트북 --ip=* --브라우저 없음

이는 Jupyter가 모든 IP 주소( *)를 수신하도록 지시하고 가상 머신에서 브라우저를 시작하려고 시도하지 않도록 지시합니다.

그럼 접속이 가능해야지가상 머신의 IP 주소: 귀하의 의견에 따르면, 그렇습니다 http://10.1.1.4:8888.

안전 - 무시하지 마세요!

Jupyter를 사용하면 누군가가 원하는 임의의 코드에 연결할 수 있습니다.

하이퍼바이저 또는 가상 머신 구성에 대한 정보를 나열하지 않았습니다. 네트워크 설정 방법에 따라 가상 머신은 몇 가지 다른 방법으로 네트워크에 연결될 수 있습니다.

  • 호스트에서 에뮬레이트된 가상 네트워크를 구성할 수 있습니다. 이 경우 가상 머신에 대한 인터넷 액세스는 다음을 통해 이루어집니다.네트워크 주소 변환. 이는 기본적으로 안전합니다. 네트워크의 다른 물리적 머신은 Jupyter에 액세스할 수 없습니다.

  • 가상 머신이 호스트의 LAN/WAN에서 자체 IP 주소를 갖는 호스트 네트워킹을 구성합니다. 이건 위험해요!이러한 유형의 네트워크를 사용하면 기본적으로 LAN/WAN의 다른 모든 사람이 Jupyter에 액세스할 수 있으므로 보안이 제대로 유지되는지 주의 깊게 확인하세요.

사용중인 제품을 다시 한번 확인해주세요.

답변2

Jupyter를 실행하는 가상 머신의 IP를 찾아야 합니다. 내 생각에 당신의 비밀은 nameofVM"이 기계"를 의미하는 "localhost"처럼 들리는 것 같습니다. 그러나 가상 머신의 호스트에서 탐색하고 있으므로 호스트의 "localhost"는 가상 머신이 아닌 호스트를 의미합니다. IP를 찾으려면 가상 머신에서 다음을 실행하세요.

ip a

네트워크 인터페이스 목록을 가져와야 합니다. 127.0.0.1은 "이 시스템"을 의미하는 localhost이기도 합니다. 그래서 당신은 다른 IP를 원합니다. 호스트 머신에서 이것을 실행 하면 ip a가상 머신에서와 유사한 IP를 찾을 수 있으며 이것이 통신 방식입니다. 귀하의 호스트도 Linux라고 가정합니다. 이름(Jupyter를 의미함)으로 서비스에 액세스하려면 파서가 필요합니다. 이는 또 다른 이야기입니다.

용어를 명확히 하기 위해 vm은 호스트 내부 또는 호스트 아래에서 실행되는 인스턴스입니다. 따라서 귀하는 Ubuntu를 실행하는 Linux 가상 머신을 사용하고 있다고 생각합니다. 이는 하나의 가상 머신(일부 알 수 없는 호스트에서)을 실행하고 있고 그 내에서 Ubuntu라는 다른 가상 머신을 실행하고 있음을 나타내기 때문에 잘못된 것입니다.

귀하의 의견에 있는 Wi-Fi 세부 사항은 호스트가 생성한 가상 네트워크를 통해 호스트가 VM에 연결되어 있기 때문에 완전히 관련이 없으므로 사용 중인 모든 Wi-Fi 연결을 끊더라도 여전히 괜찮습니다.

가상 머신에서 브라우저를 사용해 볼 수도 있지만 이를 위해서는 그래픽 인터페이스(텍스트 인터페이스 아님)가 있는 가상 머신이 필요합니다.

관련 정보