通常我們連接遠程服務器(linux)windows下通過putty或xshell等工具遠程連接。linux下可以直接通過ssh命令連接。其實這兩者都是一致的,都是通過ssh協議進行傳輸。
如果我們的windows沒有安裝putty等工具,但是有git-bash的話也可以直接通過ssh來連接。通過以下命令:
ssh root@ip/主機名/域名/
接下來會叫你輸入密碼,成功輸入后即可連接成功。但是這樣每一次都要輸入面碼,我們可以編寫一個shell腳本,類似於:conn_vps.sh這樣的文件
首先,打開git-bash(桌面上右擊,選擇Git Bash Here。) $ 為gitbash的命令提示符, # 為注釋,非命令不必輸入。下同
$ cd ~ # 進入到用戶家目錄 $ mkdir sh # 新建一個sh目錄,用於存放shell腳本。 $ cd sh # 以上都是我的個人習慣。不必和我一樣
然后新建該文件
$ vim conn_vps.sh
進入vim模式,按i鍵即可編輯,輸入以下內容:
#!/bin/bash # 這一行必須要寫,非注釋 ssh root@ip/主機名/域名 # 輸入你自己的遠程主機ip等
此時按,ESC鍵,再按:wq保存退出。
現在即可運行該腳本:
$ ./conn_vps.sh $ sh conn_vps.sh # 這兩條命令,任意一條都可以運行
當然如果你在本身就在linux環境下,需要賦予執行權限,像下面這樣。和我一樣在git-bash中創建的,不需要這一步,本身就有執行權限。
$ chmod 755 conn_vps.sh
然后再執行,然后你會發現依然會輸入密碼,這是當然的,我們剛才只不過是把剛才的命令簡單的腳本了一下。
接下來SSH的密鑰分發。
查看是否有密鑰
$ ll ~/.shh/ # 查看是否有id.rsa,和id.rsa.pub兩個文件。
如果沒有的話,可以生成一個。有的話跳過這一步
$ ssh-keygen -t rsa -C "jan.mail@foxmail.com" #這部其實可以不加郵箱參數,但是git配置github連接需要。
#所以最好一次性做了,用一樣的密鑰。郵箱換成你自己的郵箱。
連續三次回車,如果不設置密碼的話。
接下來,上傳公鑰到遠程服務器
$ ssh-copy-id -i ~/.ssh/id_rsa.pub root@遠程服務器的ip/主機名/域名
然后運行conn_vps.sh。第一次還是需要輸入一遍密碼,如果出現以下提示符即算成功。
Now try logging into the machine, with: "ssh 'root@你的ip'" and check to make sure that only the key(s) you wanted were added.
這樣就算成功了,在運行conn_vps.sh,即可連接上你的服務器。
如何你要多個雲服務器。root密碼可以弄得復雜些,然后通過這樣的方式連接雲服務器。yeah!大功告成!嗯,既然我們可以登錄上去了,那我們去看看遠程機器上(linux)的情況。
輸入ll .ssh/
[root@ten ~]# ll .ssh/ total 4 -rw------- 1 root root 401 Sep 10 20:47 authorized_keys
如果你的遠程機器上沒有生成ssh-keygen,就會只有一個文件,authorized_keys翻譯過來就是認證的密鑰。而這個認證的密鑰就是前面那條命令的的 ~/.ssh/id_rsa.pub 的內容。
所以這條命令 ssh-copy-id -i ~/.ssh/id_rsa.pub root@遠程服務器的ip/主機名/域名就是把id_rsa.pub的內容粘貼到authorized_keys中。如果另一台客戶端也想連接到這台遠程服務器。可以用同樣的命令來一遍,也可以直接用cat查看id_rsa.pub,再在服務端用vim打開authorized_keys文件。粘貼進去,之前的不要刪除,換一行即可。
當然如果你不想用ssh-copy-id -i命令,那你就得記住authorized_keys這個單詞~
本文轉載地址:https://www.linuxprobe.com/connect-key-cloud.html