https://marketplace.visualstudio.com/items?itemName=mkloubert.vscode-remote-workspace
後來微軟又出了個Remote Development套件,裡面包含了:
- Remote - SSH - Work with source code in any location by opening folders on a remote machine/VM using SSH. Supports connecting to x86_64 Linux SSH servers now, and more platforms are on the way.
- Remote - Containers - Work with a sandboxed toolchain or container based application by opening any folder inside (or mounted into) a container.
- Remote - WSL - Get a Linux-powered development experience from the comfort of Windows by opening any folder in the Windows Subsystem for Linux.
如果只有SSH遠端作業的需求,只要單獨安裝Remote - SSH即可:
目前該套件能正常連線遠端server有以下作業系統:
Full support: x86_64 Debian 8+, Ubuntu 16.04+, CentOS / RHEL 7+.
Experimental support: ARMv7l Raspbian 8+ (32-bit) in Visual Studio Code Insiders only.
果然我找了台CentOS 6就無法連線成功了...但其實如果你堅持要能在版本比較舊的server端使用,可以參照以下說明,在server端安裝缺少的一些library:
https://code.visualstudio.com/docs/remote/linux#_tips-by-linux-distribution
像CentOS 6可以照以下方法讓Remote-SSH套件能使用,安裝完重開機即可(注意,因為是升級library,可能會造成server某些服務不正常,如果是跑重要服務的server要升級library前請三思):
https://code.visualstudio.com/docs/remote/linux#_updating-glibc-and-libstdc-on-rhel-centos-6
不過遠端server要先做一些設定,修改 /etc/ssh/sshd_config,將 AllowTcpForwarding設定為yes,然後記得restart ssh demon:
sudo systemctl restart sshd
或
sudo service sshd restart
或
sudo service sshd restart
這樣本機端才能對server端建立 SSH tunnel,因為Remote - SSH必須靠建立tunnel才能使用(有點雷...)。
還有幾個設定比較需要注意的:
"remote.SSH.useLocalServer": true/false -> 讓vscode視窗共用單一連線,這會讓開啟vscode更快且不用一直輸入密碼,但有時候會造成無法正常連線(譬如timeout),此時設為false試試。一般來說我是設為false,但有些人須設為true才會沒問題。
"remote.SSH.useLocalServer": true/false -> 讓vscode視窗共用單一連線,這會讓開啟vscode更快且不用一直輸入密碼,但有時候會造成無法正常連線(譬如timeout),此時設為false試試。一般來說我是設為false,但有些人須設為true才會沒問題。
"remote.SSH.listenOnSocket":true/false -> 如果remote server上有很多使用者的話(MacOS/Linux),那麼讓遠端的vscode server改用socket模式監聽,這樣可以增加安全性,同時sshd的AllowStreamLocalForwarding設定也要設為yes,這樣才能把tcp給forward到socket上。
接下來就是安裝Remote - SSH套件,連線ssh的方式較常見有key based authentication,或輸入password的方式、還有就是同時key+password,個人是習慣每次連線只輸入密碼,
至於網路一些教學說只能用key的方式,我覺得這些人也是東抄西抄不求甚解,這套件是基於ssh使用的,當然是可以直接輸入密碼認證。
至於網路一些教學說只能用key的方式,我覺得這些人也是東抄西抄不求甚解,這套件是基於ssh使用的,當然是可以直接輸入密碼認證。
先修改本機 ~/.ssh/config 檔案,加入以下設定:
Host server1 HostName server1.com.tw User username Host server2 HostName server2.com.tw User username #避免要多次輸入密碼,加入以下ControlMaster設定 Host * ControlMaster auto ControlPath ~/.ssh/sockets/%r@%h-%p ControlPersist 24h #防止timeout,每120秒就向server發送keep-alive封包,超過60次無回應斷線 ServerAliveInterval 120 ServerAliveCountMax 60
建立 ~/.ssh/sockets 資料夾:
mkdir -p ~/.ssh/sockets
之後就可以開始連線了,連線過程中會出現prompt要你輸入密碼,完成。
ref:
https://code.visualstudio.com/docs/remote/troubleshooting
https://linux.die.net/man/5/ssh_config
https://code.visualstudio.com/docs/remote/linux#_remote-host-container-wsl-linux-prerequisites
https://code.visualstudio.com/docs/remote/linux#_tips-by-linux-distribution
https://code.visualstudio.com/docs/remote/linux#_updating-glibc-and-libstdc-on-rhel-centos-6
https://code.visualstudio.com/docs/remote/troubleshooting
https://linux.die.net/man/5/ssh_config
https://code.visualstudio.com/docs/remote/linux#_remote-host-container-wsl-linux-prerequisites
https://code.visualstudio.com/docs/remote/linux#_tips-by-linux-distribution
https://code.visualstudio.com/docs/remote/linux#_updating-glibc-and-libstdc-on-rhel-centos-6
沒有留言:
張貼留言