예, 제목에 "SSH 쉘"이라고 쓴 것으로 알고 있습니다.
핵심요약: 첫 번째 문단, 링크가 있는 문단, 오류 메시지가 있는 문단이 가장 중요합니다.
집에 Raspberry Pi가 있고 인터넷을 통해 액세스할 수 있지만 IPv6을 통해서만 액세스할 수 있습니다. 현재 제가 있는 곳에는 IPv6가 없습니다.
먼저 IPv4와 IPv6가 모두 있는 서버에 로그인한 다음 거기에서 내 pi에 로그인하여 명령을 실행할 수 있습니다. 그러나 나는 명령을 실행하는 것 이상의 목적으로 SSH를 사용하고 있습니다.
- 자식
- 백업(Deja Dup)
- 파일 액세스(SFTP)
- VNC(SSH를 통해 터널링한 다음 VNC를 통해 localhost에 연결할 수 있음)
이는 중요도에 따라 내림차순으로 나열됩니다. 내 git 저장소에 액세스하고 싶습니다.
자세한 내용은:
- 단순히 IPv4를 통해 Pi에 액세스할 수 있도록 할 수는 없습니다. 그 뒤에 있는 모뎀에는 IPv4 주소와 IPv6 서브넷이 있지만 변경할 수 없는 소프트웨어를 실행하려면 선택하지 않은 하드웨어를 사용해야 합니다. 소프트웨어에 버그가 있어서 볼 수도 없을 뿐만 아니라 모든 것에 대한 IPv4 포트 전달도 허용하지 않습니다.
- IPv4와 IPv6를 모두 사용하여 서버를 제어하지 않습니다. 저는 일반 사용자 계정만 갖고 있으며 표준 사용자 권한 이상이 필요한 경우 새 소프트웨어를 설치할 수 없습니다(예를 들어).
Google 검색에서 제안된 솔루션이 매우 유망한 페이지, 실제로 git에서 작동합니다. 사용하고 있던 저장소에 대해 새 원격 장치를 설정하고 pi의 도메인 이름을 localhost:3333
.
하지만 그보다 더 유망해 보입니다. 위의 모든 문제에 대한 해결책처럼 보입니다. 작동하기 시작했어요!
SFTP는 작동하지만 연결이 너무 느리기 때문에 Deja Dup을 통한 백업이 작동하는지 실제로 알 수 없습니다. 하지만 아직 실패하지 않았고 무언가 네트워크 트래픽을 유발하고 있으므로 좋습니다.
ssh localhost:3333
그런데 파이에 쉘을 설치하기 위해 노트북에 직접 연결할 수 없는 이유는 무엇입니까 ? 이 명령은 다음과 같은 오류 메시지를 생성합니다.
ssh: Could not resolve hostname localhost:3333: Name or service not known
나의 주요 관심사는 내가 기대하는 방식으로 쉘을 얻을 수 없는 이유입니다.
답변1
ssh
구성 을 살펴보고 싶을 수도 있습니다 ProxyCommand
. 그러면 작업이 더욱 원활해지고 셸, SFTP, 터널 및 SSH를 통해 프록시하려는 모든 항목에 대해 작동합니다.
다음과 같은 세 개의 호스트가 있다고 가정합니다.
workstation.example.com
- 이것은 당신이 작업하고 있는 기계입니다.proxy.example.com
- SSH 트래픽을 라우팅하는 머신입니다.endpoint.example.com
- 여기가 트래픽이 끝나기를 원하는 곳입니다.
~/.ssh/config
on 에 workstation
다음을 추가합니다.
Host endpoint
User EndpointUser # set this to the username on the destination host
HostName endpoint.example.com
ProxyCommand ssh [email protected] nc %h %p 2> /dev/null
proxy
호스트 시스템 에 nc
(netcat)이 설치되어 있는지 확인하십시오.
그런 다음 에서 프록시 호스트를 통해 해당 시스템에 투명하게 프록시를 사용할 수 workstation
있습니다 .ssh endpoint
sftp endpoint
답변2
자신에게 가장 적합한 것이 무엇인지에 따라 다양한 방법으로 함께 구성할 수 있는 여러 조각이 있습니다. 각 부분은 선택 사항이며 변형이 있습니다.
나는 다음 용어를 사용하겠습니다.
- "desktop" => 당신이 앞에 앉아 있는 기계(귀하의 예에서는 ipv4를 사용하는 기계).
- "점프 호스트" => 사이에 있는 머신, 통과해야 하는 머신(귀하의 경우에는 ipv4 및 ipv6 사용)
"target" => 실제로 사용하려는 최종 머신(귀하의 경우에는 Pi)입니다.
- 비밀번호 대신 SSH 키를 사용해 보세요. 이렇게 하면 비밀번호를 입력하는 데 드는 시간이 많이 절약됩니다. 바라보다https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2
- "ssh Jumphostname" 또는 "ssh Jumpuser@jumphostname"을 사용하여 점프 호스트에 직접 SSH를 통해 연결할 수 있는지 확인하세요. 연결을 위한 추가 옵션(포트 번호 등)이 필요한 경우 ~/.ssh/config에 항목을 추가하세요. 이 점프 호스트.
- "ProxyJump Jumphostname" 또는 "ProxyJump Jumpuser@jumphostname" 절을 사용하여 대상의 ~/.ssh/config에 항목을 추가합니다.
- 때때로 대상에 직접 액세스하고 때로는 점프 호스트를 통해 액세스하는 경우(예: "데스크톱"은 집에서 때로는 직장에서 사용하는 랩톱임) 대상 및/또는 점프 호스트에 다른 이름(예: '호스트')을 지정할 수 있습니다. Jump-pi' 또는 'Host Jump-proxy')를 선택하고 'hostname' 절에 대상의 실제 호스트 이름이나 IP를 지정합니다.
- 이제 데스크톱에서 SSH를 통해 직접 pi에 연결할 수 있습니다. 그 뒤에서 ssh는 데스크탑에서 점프 호스트로의 연결을 생성한 다음 첫 번째 연결을 통해 데스크탑에서 직접 대상으로의 또 다른 연결을 시작합니다.
- ssh 명령에 포트 전달을 추가할 수 있습니다(또는 ssh 구성에 추가). 예를 들어, pi가 데스크톱에서 ssh에 액세스할 수 있도록 하려면 pi에서 수신 대기할 포트를 선택하고(저는 2222를 선택하겠습니다) 다음 명령을 실행합니다: "ssh -R2222:localhost:22 piusername @ pi" - 이는 SSH 연결 후 포트 2222(pi의)로 들어오는 모든 연결이 터널을 통해 데스크탑으로 다시 전달되어야 함을 의미하며, 그런 다음 "localhost 포트 22"에 연결해야 합니다. 그런 다음 파이에서 "ssh -p 2222desktopuser@localhost"를 사용할 수 있습니다. 다른 단일 포트에서도 동일한 작업을 수행할 수 있습니다(사용 중인 프로그램의 호스트 이름과 포트를 지정할 수 있는 경우).
- 범용 네트워킹을 원할 경우 Dynamic Socks를 실행할 수 있습니다. ssh에는 이 기능이 내장되어 있지만 다른 방향으로만 작동합니다. Pi에서 데스크톱으로 다시 연결을 허용하려면 데스크톱에 Dynamic Socks 서버가 있어야 합니다. 그런 다음 Pi에서 Dynamic Socks 서버로 tcp 연결을 설정하고(6단계 수행) Pi에서 Dynamic Socks 클라이언트를 실행합니다(일부 응용 프로그램에는 wget과 같이 Dynamic Socks가 내장되어 있거나 'tsocks'와 같은 것을 사용할 수 있음). .
- 그것이 충분히 다재다능하지 않다면 SSH를 통해 PPP를 실행하세요. 이렇게 하면 데스크탑과 Pi에 또 다른 "네트워크 카드"가 제공되어 서로 직접 통신할 수 있습니다. 이 인터페이스를 통해 라우팅을 설정할 수 있습니다(Pi와의 연결이 끊어지면 원격으로 문제를 해결할 수 없습니다).