google cloud shell은 public ip가 없는 private ip만 있는 container입니다. 즉 외부 접근은 google client들을 통해서만 접근이 가능한데 이런 자원들을 가지고 외부에 접근 하는 proxy만드는 법에 대한 소개입니다.
MYNOTEBOOK 이 내가 접속하고 있는 chrome을 띄울 pc라고 보시면 됩니다. 물론 보통은 포트포워딩 해서 접속 할 수 있게 열어야 한다고 보시면 됩니다.
docker run -ti \
-v $HOME/.ssh/:/root/.ssh \
-v $HOME/.config/gcloud:/root/.config/gcloud \
google/cloud-sdk:latest \
gcloud alpha cloud-shell ssh \
--ssh-flag="-t" \
--command "docker run --rm \
-ti \
--net=host \
--name ssh \
leoh0/ssh \
-o StrictHostKeyChecking=no \
-R 4444 MYNOTEBOOK"
대충 흐름을 설명드리면 아래와 같은 흐름으로 연결됩니다.
노트북 -> gcloud docker -> cloud shell -> ssh docker -> 노트북
이때 마지막에 마지막 줄의 -R 옵션으로 reverse dynamic port forwarding을 열어서 sock5 proxy로 동작시킵니다. 이후에 아래와 같이 chrome을 띄울때 proxy를 주면 됩니다.
/opt/google/chrome/chrome --proxy-server="socks5://localhost:4444"
물론 사실 이 글은 실제 동작 가능한 방법이지만 사실 이거보다 더 좋은 방법들이 많긴 해서 그냥 재미로 참고만 하면 됩니다. 사실 이거보다 그냥 gcp 에서 f1.micro 받아서 tproxy 올리면 간단해서 그냥 이건 조크로