最近新入手一臺VPS,爲了安全以及遠程鏈接方便,設置成使用SSH Key免密碼登陸。做爲非程序員IT小白,Google了很多教程,按本身的折騰過程,彙總成下面的步驟,做爲之後再搞機的指南。程序員
用SSH鏈接遠程服務器後,執行一下命令:安全
ssh-keygen
終端中會出現提示:服務器
Generating public/private rsa key pair.Enter file in which to save the key (/root/.ssh/id_rsa): #輸入生成私鑰文件位置dom
Created directory '/root/.ssh'.ssh
Enter passphrase (empty for no passphrase): #爲私鑰加密ide
Enter same passphrase again:ui
Your identification has been saved in /root/.ssh/id_rsa.加密
Your public key has been saved in /root/.ssh/id_rsa.pub. #生成公鑰文件位置命令行
The key fingerprint is:rest
7c:25:bd:54:f5:fc:60:c0:86:c1:a0:32:7d:8a:80:c4 root@debian
The key's randomart image is:
+--[ RSA 2048]----+
| .o.+..o..|
| o . . o o+ o.|
.......
要用SSH Key登陸,需將遠程服務器上的公鑰名字改爲authorized_keys。
cd .ssh
mv id_rsa.pub authorized_keys
chmod 600 authorized_keys #修改公鑰爲只有屬主有讀寫權限(安全考慮)
chmod 700 ~/.ssh #修改.SSH目錄爲只有屬主有讀、寫、執行權限(安全考慮)
3.1從遠程服務器上,取回私鑰到本地電腦
仍然SSH鏈接遠程服務器,執行一下命令顯示私鑰文件內容。
cat /root/.ssh/id_rsa
終端中會顯示相似內容:
-----BEGIN RSA PRIVATE KEY-----Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,EA47822BC49A9E56338A99D07084DA38
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
...
-----END RSA PRIVATE KEY-----
在本地電腦新建一文本文件,名字隨便取,不要後綴名。將上面內容複製粘貼到新建的文件中,保存推出。這個文件即是你的私鑰文件,將它放到你想放置的位置,通常放在~/.ssh中。注意,必定要備份。
3.2本地電腦上給私鑰文件從新設置權限
這一步解決的問題實際上是最後才遇到的。當時作好全部配製後,用SSH Key登陸遠程服務器,終端中顯示下面內容:
Permissions 0644 for 'id_rsa' are too open.It is required that your private key files are NOT accessible by
others.This private key will be ignored.
就是說本地電腦上的私鑰文件權限太大,被忽略使用。繼續Google之,在本地電腦上執行如下命令,修改私鑰文件的權限。
chmod 0600 id_rsa
OK,這樣就能夠用SSH Key順利登陸了。
若是不打算禁止使用SSH+密碼登陸遠程服務器,這一步也可在第2步後進行。
4.1開啓SSH+Key登陸
SSH鏈接遠程服務器,用vi打開SSH的配製文件。
vi /etc/ssh/sshd_config
此時終端中顯示sshd_config配製文件內容。方向鍵移動光標,找到一下兩個參數。
RSAAuthentication noPubkeyAuthentication no
按鍵盤上I鍵,進入vi的插入模式,將以上兩個參數後的no改成yes(通常默認就是yes不用改)。
4.2關閉SSH密碼登陸
用密碼登陸遠程服務器終歸有風險,有可能被黑客給爆掉,因此最好禁止使用SSH+密碼登陸遠程服務器。
繼續在vi插入模式下移動光標,找到如下參數。
「#」PasswordAuthentication yes
將#刪除,參數後面的yes改成no。而後按ESC鍵推出vi插入模式,接着輸入:進入vi命令行模式,輸入wq,回車保存退出vi。
4.3重啓遠程服務器SSH服務
SSH配製好後,重啓生效。
/etc/init.d/ssh restart
如今退出以前與遠程服務器的鏈接,再用SSH+密碼鏈接,會提示鏈接被拒絕。
用SSH+Key登陸:
ssh root@xxx.xxx.xxx.xxx -p aaa -i ~/.ssh/id_rsa
xxx.xxx.xxx.xxx:遠程服務器IP
aaa:端口
~/.ssh/id_rsa:本地電腦上私鑰文件地址(按本身的修改)
以上命令鏈接服務器過程當中,終端會提示輸入以前生成密鑰對時,設定的私鑰密碼。
如此,之後鏈接VPS就不用再輸入密碼了。