先吐槽:
搞了一上午!!! 我太難了!!! 最近服務器不夠用, 就差動手算深度學習梯度了!!! 向本科朋友借了幾臺機子跑, 這要是沒上過大學, 研究生還不能畢業了呢!!!
目錄
1. 簡單任務介紹
2. 本機的配置
3. 跳板機的配置
4.內網服務器的配置
5. 怎麼樣不需要密碼訪問嚶嚶嚶~~
1. 簡單的任務介紹:
我現在用的電腦叫做A, 然後借了一臺服務器叫做C, 不過C在內網, 沒有公網ip, 我現在A直接連C是連不上的, 解決方法就是用一個有公網ip的服務器B, 然後A連B, B連C, 這樣就A間接連了C, B就叫做跳板機, 跳板機怎麼搞自己搜吧, 哪個都比我懂得多.
現在的問題是:
我怎麼用vscode的remote服務連接C, 這樣我就可以"性感程序員, 在線編程了!!!"有木有, 好了廢話不多說, 進入正題.
2. 本機的配置
2.1 我要最新版本的openssh !!!!
首先你的電腦A要有個最新的openssh, 這個連接下載, 如果電腦A是64位就下載OpenSSH-Win64.zip
https://github.com/PowerShell/Win32-OpenSSH/releases/tag/v8.0.0.0p1-Beta
下載之後解壓, 裏面有個ssh.exe就對了, 咱們將這個ssh.exe的目錄(只是目標, 不包括ssh.exe)添加到環境變量, 如果之前環境變量裏面有另外一個ssh, 就要刪了哦!!!
*****其實這一步主要是防止bug, 現在windows10都自帶ssh, 不過低版本的ssh有很多bug, 這個8.0版本是19年6月發佈的, 但是10月又發佈了一個8.1, 當時沒有找到下載位置, 不過如果你電腦裝了最新版的github, 在git/usr/bin目錄下也有個ssh.exe, 就是8.1版本的, 其實這一步先不弄也行, 就是後期不行再來改. 可以在cmd.exe中查看ssh的版本:ssh -V, 不要低於8.0, 另外也可以用where ssh, 查看當前ssh的路徑*****
2.2. 密鑰問題
機器A要生成密鑰, 將公鑰放在服務器B和C上(我沒有測試過是否B需要公鑰, 加上也不浪費時間是吧)
能夠找到這篇文章的, 我相信也不需要我告訴你怎麼生成密鑰and放到服務器上吧~~~~
算了我還是告訴你吧~~
.本地cmd窗口生成, 在cmd.exe中
ssh-keygen -t rsa -b 4096(回車三連擊, 不要輸入任何東西,
生成的信息裏會告訴密鑰在哪(一般在C:\Users\用戶名\.ssh下),
把id_rsa.pub複製到服務器home/用戶名/.ssh文件夾下,
並執行cat id_rsa.pub >> authorized_keys(就是把公鑰追加到au..裏面去, au..是公鑰集合..)
2.3. 配置vscode
機器A安裝remote插件, 然後打開配置config, 格式就這樣寫:
Host jump #跳板機, 名字隨便起個
HostName 111.111.111.111 #跳板機ip
Port 6987 #跳板機ssh端口
User uu #跳板機用戶名
Host CCCC #內網C主機, 名字隨便起個
HostName 10.20.20.20 #內網ip
User mm #內網用戶名
ProxyCommand ssh -W %h:%p jump #最後的jump就是上面第一句你寫的名字
****其實有很多坑, proxycommand 後面花裏胡哨的寫法, 我這個只要配置了最新的ssh, 就沒問題啦
3. 配置跳板機
跳板機就是簡單的創建個.ssh文件夾在用戶目錄下, 將A的公鑰放進來, 記住要改個名字authorized_keys, 如果已經有了, 將公鑰複製貼到此文件下一行保存
4. 內網機器的配置
和步驟3一樣, 將A的公鑰放進來
5. 怎麼不要密碼
5.1 更改sshd_config B和C操作相同
sudo vim /etc/ssh/sshd_config
PubkeyAuthentication yes
PermitEmptyPasswords yes
對就改成這樣 保存, 然後重啓ssh
ubuntu重啓: service sshd restart
centos重啓: sudo service sshd restart
5.2 更改文件權限
如果還需要密碼 一個常犯的錯誤是文件權限不對
.ssh設置成 0700
authorized_keys 0644
用cmd.exe測試一下啊
也可以通過cmd, 使用命令來測試一下
ssh -T CCCC, 回車之後, 如果第一次連接, 可能需要安裝點東西, 按照提示輸入yes什麼的就可以了,
進去之後 輸入個pwd命令, 看看是否進入到了用戶目錄, 對了那個CCCC就是你的config配置的遠程服務器的名字
另外你還可以在cmd.exe通過scp C:\da.txt CCCC@/home/pp/xiao.txt 來傳輸文件哦, da.txt是你要傳的文件. xiao.txt就是接收文件, 也就是相當於da.txt就賦值給xiao.txt了, xiao.txt不用提前創建
如果還有什麼bug, 你可以仔細看看他返回的信息是什麼, 如果之前的你都準確完成了, 基本上沒有大問題了.
記住vscode如果配置完連不上, 嘗試重啓一下vscode
現在你就可以愉快地在線編程了~~
什麼?? 還連不上??? 還需要密碼???
就這樣吧!! 手機沒油了!! 再見!!