對于不太會使用 Vim 的我來說,在伺服器上用 Vim 去修改 nginx.conf 實在有點麻煩,比如沒有高亮和格式化。正好想起前不久微軟釋出了遠端開發工具包,其中一個就是今天要介紹的 Remote-SSH。下面是官方對該擴充的定義:
The Remote - SSH extension lets you use any remote machine with a SSH server as your development environment. This can greatly simplify development and troubleshooting in a wide variety of situations.
是以用來修改 nginx.conf 也是符合其目标的。
執行環境
- Windows 10
- Powershell Core 6.2.0
- Visual Studio Code Insiders:因為 Remote-SSH 還在 Preview 階段,隻能開發版的 VSCode 中使用。
- 遠端 Linux 主機
使用方法
在 Remote-SSH 擴充的介紹頁面下其實是有一個快速開始文檔的,簡單來說就是在成功安裝該擴充之後,需要配置服務端和本地用戶端的環境。
在伺服器上安裝 SSH 服務
同樣有文檔:
- Debian / Ubuntu
Run sudo apt-get install openssh-server
- RHEL / Fedora / CentOS
Run sudo yum install openssh-server && sudo systemctl start sshd.service && sudo systemctl enable sshd.service
本地連接配接遠端主機
- 配置基于 SSH 密鑰的身份驗證
- 自定義 SSH 密鑰檔案名稱,使用你自己定義的名稱替代
。id_rsa-remote-ssh
ssh-keygen -t rsa -b 4096 -f "HOME\.ssh\id_rsa-remote-ssh"
- 編輯 SSH config 檔案,添加以下代碼。
Host 僅僅是遠端伺服器主機的名稱,我取的是 CentOS;HostName 是你的遠端伺服器 IP 位址;User 是登入使用者名稱,比如SSH config Host name-of-ssh-host-here HostName your-fqdn-or-ip-goes-here User your-user-name-on-host IdentityFile ~/.ssh/id_rsa_remote-ssh
;IdentityFile 則是私有密鑰的相對路徑,也可以是絕對路徑。root
- 将本地的
的内容追加到遠端伺服器的id_rsa-remote-ssh.pub
檔案裡。authorized_keys
以上是初次添加公鑰時需要對# 将`name-of-ssh-host-here`替換成你第二步裡面的Host後面的值即可,這裡可以用單引号或者雙引号 $REMOTEHOST='name-of-ssh-host-here' # 這裡一定要使用雙引号 $PATHOFIDENTITYFILE="$HOME\.ssh\id_rsa-remote-ssh.pub" # scp 是 linux 系統下基于 SSH 登陸進行安全的遠端檔案拷貝指令。這裡把本地的公開密鑰複制到伺服器端的`~/tmp.pub`中。該指令運作之後需要輸入伺服器登入密碼。 scp $PATHOFIDENTITYFILE "$REMOTEHOST`:~/tmp.pub" # 通過 SSH 向伺服器執行以下一組指令,執行成功後本地的密鑰就被追加到伺服器的`~/.ssh/authorized_keys`檔案裡。 ssh $REMOTEHOST "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat ~/tmp.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && rm -f ~/tmp.pub"
設定了權限。以後再添加其他機器的公鑰就不需要執行~/.ssh
操作了,直接将公鑰追加到chmod
檔案即可。authorized_keys
ssh $REMOTEHOST "cat ~/tmp.pub >> ~/.ssh/authorized_keys && rm -f ~/tmp.pub"
- 自定義 SSH 密鑰檔案名稱,使用你自己定義的名稱替代
- VSCode 下按下
調起所有指令面闆,運作F1
選擇你上一步配置好的主機,回車連接配接即可。Remote-SSH: Connect to Host...
遇到的問題
- 在使用方法章節的 1.3 中執行
和scp
指令時可能會遇到ssh
的問題。把 Powershell 以管理者身份運作也報同樣的錯誤。請執行以下指令,看看是否存在多個相同命名的可執行檔案。Permission denied
如果存在,那麼優先或預設會使用前一個可執行檔案(where.exe scp # 我的輸出: # C:\Windows\System32\OpenSSH\scp.exe # D:\Scoop\shims\scp.exe where.exe ssh # 我的輸出: # C:\Windows\System32\OpenSSH\ssh.exe # D:\Scoop\shims\ssh.exe
下的System32/OpenSSH
),結果我們已經知道,會報“權限不足”的錯誤。當我使用後一個可執行檔案(scp
下的Scoop/shims
scp
)時,竟然成功了。
解決辦法有兩種:
- 使用
時,把路徑打全。scp
同理。ssh
D:\scoop\shims\scp.exe $PATHOFIDENTITYFILE "$REMOTEHOST`:~/tmp.pub"
- 把系統環境變量
裡的PATH
删除。C:\Windows\System32\OpenSSH
- 使用
轉載于:https://www.cnblogs.com/capdiem/p/10926602.html