본문 바로가기

Server

[VsCode] ssh 원격에 연결할 수 없습니다

 

   설정 파일에 문제가 없음에도 원격 ssh에 연결되지 않을 경우

config 파일에 원격 서버에 대한 정보를 문제 없이 설정 했음에도 갑자기 원격에 연결되지 않을 경우가 있습니다. 저의 경우에는 아래와 같은 출력메시지가 계속 이어지며 결국 시간 초과로 인하여 연결에 실패하는 현상이 있었습니다.

[13:11:03.570] Log Level: 2
[13:11:03.572] remote-ssh@0.84.0
[13:11:03.572] darwin x64
[13:11:03.589] SSH Resolver called for "ssh-remote+gpu01-ml", attempt 1
[13:11:03.590] "remote.SSH.useLocalServer": true
[13:11:03.590] "remote.SSH.path": undefined
[13:11:03.590] "remote.SSH.configFile": /Users/jin/.ssh/config
[13:11:03.590] "remote.SSH.useFlock": true
[13:11:03.590] "remote.SSH.lockfilesInTmp": false
[13:11:03.590] "remote.SSH.localServerDownload": always
[13:11:03.591] "remote.SSH.remoteServerListenOnSocket": false
[13:11:03.591] "remote.SSH.showLoginTerminal": false
[13:11:03.591] "remote.SSH.defaultExtensions": []
[13:11:03.591] "remote.SSH.loglevel": 2
[13:11:03.591] "remote.SSH.maxReconnectionAttempts": 0
[13:11:03.591] "remote.SSH.enableDynamicForwarding": true
[13:11:03.591] "remote.SSH.enableRemoteCommand": true
[13:11:03.591] "remote.SSH.serverPickPortsFromRange": {}
[13:11:03.592] "remote.SSH.serverInstallPath": {}
[13:11:03.595] SSH Resolver called for host: gpu01-ml
[13:11:03.595] Setting up SSH remote "gpu01-ml"
[13:11:03.598] Acquiring local install lock: /var/folders/fj/yp50p3r10ys0qjzz7td9yrm80000gn/T/vscode-remote-ssh-a471481c-install.lock
[13:11:03.599] Looking for existing server data file at /Users/jin/Library/Application Support/Code/User/globalStorage/ms-vscode-remote.remote-ssh/vscode-ssh-host-a471481c-92d25e35d9bf1a6b16f7d0758f25d48ace11e5b9-0.84.0/data.json
[13:11:03.600] Using commit id "92d25e35d9bf1a6b16f7d0758f25d48ace11e5b9" and quality "stable" for server
[13:11:03.603] Install and start server if needed
[13:11:03.607] PATH: /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
[13:11:03.607] Checking ssh with "ssh -V"
[13:11:03.612] > OpenSSH_8.6p1, LibreSSL 3.3.6

[13:11:03.616] Using SSH config file "/Users/jin/.ssh/config"
[13:11:03.618] askpass server listening on /var/folders/fj/yp50p3r10ys0qjzz7td9yrm80000gn/T/vscode-ssh-askpass-7fb3a0cc1df2cd1c74787990dd46395118bc17fe.sock
[13:11:03.619] Spawning local server with {"serverId":1,"ipcHandlePath":"/var/folders/fj/yp50p3r10ys0qjzz7td9yrm80000gn/T/vscode-ssh-askpass-35f1a10580477f138e5ddb5de362f1566ee4e7dc.sock","sshCommand":"ssh","sshArgs":["-v","-T","-D","62540","-o","ConnectTimeout=15","-F","/Users/jin/.ssh/config","gpu01-ml"],"serverDataFolderName":".vscode-server","dataFilePath":"/Users/jin/Library/Application Support/Code/User/globalStorage/ms-vscode-remote.remote-ssh/vscode-ssh-host-a471481c-92d25e35d9bf1a6b16f7d0758f25d48ace11e5b9-0.84.0/data.json"}
[13:11:03.619] Local server env: {"SSH_AUTH_SOCK":"/private/tmp/com.apple.launchd.iHRb1DBzH6/Listeners","SHELL":"/bin/zsh","DISPLAY":"1","ELECTRON_RUN_AS_NODE":"1","SSH_ASKPASS":"/Users/jin/.vscode/extensions/ms-vscode-remote.remote-ssh-0.84.0/out/local-server/askpass.sh","VSCODE_SSH_ASKPASS_NODE":"/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper.app/Contents/MacOS/Code Helper","VSCODE_SSH_ASKPASS_EXTRA_ARGS":"--ms-enable-electron-run-as-node","VSCODE_SSH_ASKPASS_MAIN":"/Users/jin/.vscode/extensions/ms-vscode-remote.remote-ssh-0.84.0/out/askpass-main.js","VSCODE_SSH_ASKPASS_HANDLE":"/var/folders/fj/yp50p3r10ys0qjzz7td9yrm80000gn/T/vscode-ssh-askpass-7fb3a0cc1df2cd1c74787990dd46395118bc17fe.sock"}
[13:11:03.621] Spawned 23192
[13:11:03.766] > local-server-1> Spawned ssh, pid=23194
[13:11:03.768] stderr> OpenSSH_8.6p1, LibreSSL 3.3.6
[13:11:03.888] stderr> debug1: Server host key: ssh-ed25519 SHA256:8BLvAFwH+SJpcshBsS8TOSvv5cxaFOdOJz9fwy9aPYs
[13:11:04.146] stderr> Authenticated to 10.10.200.9 ([10.10.200.9]:6879).
[13:11:05.036] > ready: ec11a75432a8
[13:11:05.055] > Linux 3.10.0-1160.31.1.el7.x86_64 #1 SMP Thu Jun 10 13:32:12 UTC 2021
[13:11:05.055] Platform: linux
[13:11:05.107] > /bin/bash
[13:11:05.107] Shell: bash
[13:11:05.107] Creating bash subshell inside "bash"
[13:11:05.164] > bash version:  4.2.46(2)-release
[13:11:05.170] > bash version:  4.2.46(2)-release
[13:11:05.194] > ec11a75432a8: running
[13:11:05.239] > Acquiring lock on /home/ml/.vscode-server/bin/92d25e35d9bf1a6b16f7d0758f25d48ace11e5b9/vscode-remote-lock.ml.92d25e35d9bf1a6b16f7d0758f25d48ace11e5b9
[13:11:05.246] > Installing to /home/ml/.vscode-server/bin/92d25e35d9bf1a6b16f7d0758f25d48ace11e5b9...
[13:11:05.246] > Trigger local server download
> ec11a75432a8:trigger_server_download
> platform==linux==
> vscodeArch==x64==
> destFolder==/home/ml/.vscode-server/bin/==
> destFolder2==92d25e35d9bf1a6b16f7d0758f25d48ace11e5b9==
> ec11a75432a8:trigger_server_download_end
> Waiting for client to transfer server archive...

출력 메시지를 보면 원격으로 vscode-server 를 설치하고자 하는 것을 알 수 있는데, 이 과정에서 뭔가 문제가 발생한 듯 합니다. 적절한 구성 파일이 있음에도 불구하고 서버에 원격으로 연결할 수 없는 몇 가지 이유가 있을 수 있습니다. 일반적인 이유는 다음과 같습니다:

1. 방화벽 제한
2. 네트워크 연결
3. 잘못된 호스트 이름 또는 IP 주소

방화벽이나 잘못된 호스트는 아닐 것 같아 원격 서버의 네트워크 연결 문제를 의심해보았습니다.

 

   인터넷 연결 문제를 의심

Visual Studio Code 원격 - SSH 확장팩은 원격 PC의 파일과 폴더에 접속하여 개발할 수 있는 환경을 제공합니다. 하지만 이 기능은 원격 PC에 VSCode Server를 자동으로 다운로드하여야 하므로 인터넷이 연결되어 있지 않은 환경에서는 이용하기 어렵습니다.

이번 글은 인터넷이 연결되어 있지 않은 사설망에서 SSH 확장팩을 사용해 개발할 수 있도록 VSCode와 VSCode Server를 수동으로 설치하는 절차를 설명합니다.

 

   설정 > remote.ssh  > Local Server Download 를 auto에서 always로 변경

이 옵션을 "always"으로 설정하여 클라이언트에서 vs code 서버를 다운로드하고 호스트로 보내도록 합니다.

 

  출력 로그에서 {COMMIT_ID} 확인

[13:11:03.600] Using commit id "92d25e35d9bf1a6b16f7d0758f25d48ace11e5b9" and quality "stable" for server

위의 출력 메시지에서 commit id를 확인합니다.

 

  vscode-server 수동 다운로드

아래 경로로 이동
$ cd ~/.vscode-server/bin/{COMMIT_ID}

vscode-server 수동 다운로드
$ wget <https://vscode.cdn.azure.cn/stable/{COMMIT_ID}/vscode-server-linux-x64.tar.gz>

압축 해제
$ tar -zxf vscode-server-linux-x64.tar.gz

이름 변경
$ mv vscode-server-linux-x64 vscode-server

아래 파일 생성
$ touch vscode-scp-done.flag

이제 다시 원격 접속을 시도하면 정상적으로 접속이 됩니다.

 

 

Reference:

https://github.com/microsoft/vscode-remote-release/issues/4743#issuecomment-878037397