一、 生成SSH密鑰對
ssh-keygen
或者
ssh-keygen -t rsa -b 4096 區別:-t rsa可以明確表示生成的是 RSA 類型的密鑰-b參數將密鑰長度設置為 4096 位默認:2048 位密鑰不指定-t參數,ssh -keygen默認也可能生成 RSA 密鑰
【確保本機安裝ssh, ssh 或者 ssh-V去檢查】
【注意:這里一直按回車。第一個是讓你選擇生成路徑,這里我們默認就行(默認路徑:C:\Users\Encounter.ssh)。第二個是在密鑰再加密碼,沒必要,如果這樣操作就不是免密登錄了。】
具體解釋:
生成情況如下:(id_rsa為私鑰,id_rsa.pub為公鑰)
二、 將公鑰放在服務器【配置服務器】
路徑是:賬戶名下的.ssh
文件夾(如果沒有可以自己創建)
將id_rsa.pub上傳后,
執行:cat id_rsa.pub > authorized_keys
生成authorized_keys。【也可以創建一個authorized_keys,把id_rsa.pub里面的內容復制進去。下面的參考文獻中還有一些其他方法,大家可以自行選擇自己喜歡的。】
三、配置Vscode文件【配置本地】
打開SSH配置文件:
加上IdentityFile 后面的是你私鑰的位置:
四、補充操作:如果上述做完之后,還是連接不上
1.可嘗試執行如下命令
chmod 700 ./.ssh
chmod 600 ./.ssh/authorized_keys
原因是SSH不希望用戶目錄和~/.ssh目錄對組有寫權限
如果沒有解決可嘗試使用執行 sudo cat /var/log/secure 查看系統的安全日志,根據具體日志內容解決
2.vim /etc/ssh/sshd_config
(這個可能影響不大,可以試試)
3.檢查本地的生成的id_rsa.pub和服務器的authorized_keys里的內容是否一致。【當時筆者,不知SSH的正確路徑(在服務器根目錄下建立.ssh),而服務器正確位置(賬戶下的.ssh)之前也有authorized_keys,但并不是我生成的id_rsa.pub】
五、驗證密鑰是否配置成功
當配置完畢。不需要重新再連接服務器。
隨便打開一個文件,如果不用輸入密碼就是成功了。【因為如果沒配置之前,你切換文件夾 是 需要輸出密碼的,也相當于重新連接服務器】
六、一個ip配置2個免密登錄
1 .ssh正確路徑:賬戶下面。即 root/.ssh 或者chengzw/.ssh
具體圖解:
根目錄下:
chengzw賬戶:
root賬戶:
2.如果想實現root和chengzw賬戶都是免密登錄,可以分別在其對應的賬戶.ssh目錄下,將authorized_keys中放入正確的公鑰(其實只要authorized_keys中的公鑰正確,.ssh目錄下沒有id_rsa.pub也沒事)【2個賬戶的公鑰可以是同一個也可以不同,只要在本地的配置文件正確即可(即:操作的第三步)。】
chengzw賬戶:
root賬戶:(這里的id_rsa和known_hots是服務器自帶的我們不用管)
3.另外經過筆者反復嘗試,在2個賬戶都設置了免密登錄之后,當Host一樣的時候,但是賬戶和端口不一樣,他會從上往下執行,即如下圖,先免密登錄30488端口的root賬戶。如果想免密chengzw賬戶可以把對應賬戶放前面即可。之后連接服務器即可。
七、參考文章:
1 .配置visual studio code 用秘鑰遠程連接SSH服務器:https://blog.csdn.net/liang_baikai/article/details/1371521362 .配置vscode 遠程開發+ 免密登錄:https://zhuanlan.zhihu.com/p/2224524603 .【VSCode】遠程開發配置密鑰連接 :https://www.cnblogs.com/servlet-context/p/18148623
補充:
1 .由于一開始沒用Vscode連root賬戶,chengzw賬戶還沒傳文件以及文件重命名的權限,所以只能網頁端傳上去之后再移動(傳文件的位置也有限制)。
在根目錄上建立.ssh的時候(當時建錯了,應該在賬戶目錄下建立.ssh)
cp 源 目的
cp cheng/ id_rsa.pub . 【當前目錄是服務器根目錄】可以執行
cp cheng/ id_rsa.pub . 【當前目錄是.ssh】 無法執行找不到目錄
cp /cheng/ id_rsa.pub . 【當前目錄是.ssh】 可以執行2 :我所用的服務器ssh連接Vscode的有2種登陸方式。【浪潮公司的】
一種是root的, ssh root@ip -p 30488 【登錄密碼:AIstation平臺上面給的】
一種是賬戶, ssh chengzw@ip -p 60022 【登錄密碼:自己的賬戶密碼】我發現自己賬戶登錄傳不了文件以及改不了文件名【沒權限】。但是當實現免密登錄之后就可以有權限了,很奇怪。
另外,chengzw沒有提權權限(sudo命令)3 :AIstation的服務器好像會重置,我在根目錄建立的.shh文件夾沒了,以及修改的vim /etc/ssh/sshd_config的里面內容都重置了,也說明修改vim /etc/ssh/sshd_config 用處不大。小細節:1.authorized_keys可以打開寫多個公鑰,把不同的公鑰id_rsa.pub的內容放里面。2 .服務器驗證時候,是驗證authorized_keys,與d_rsa.pub無關。3 .本地ssh配置的 IdentityFile "C:\Users\E ncounter\.ssh\id_rsa" 中 id_rsa是可以改名的,只要能和本地名對上即可(要是有多個ssh私鑰是 需要 重命名 去 管理的)。