使用SSH證書登陸遠程服務器

轉自:http://dev.firnow.com/course/6_system/linux/Linuxjs/20100112/189340.html

 

由於工作關係,我經常需要在非常不同的Linux服務器上轉上轉去,原來每次登陸,系統都會提示你輸入密碼,這的確是一件很煩的事 情,特別是你在需要對好幾臺機器工作的時候。後來,我學會了用SSH證書認證來取代普通的密碼認證,這樣子我就不用每次都輸入密碼了。OpenSSH允許 遠程執行命令,如果再加上證書使用,那就我就可以運行一些遠程控制的腳本去控制許多許多機器,這個對我的工作非常有用。比如說,在需要在100臺機器上添 加許多相同的用戶。。。

閒話少說,下面我們正式來創建證書:
首先,我們要給遠程服務器創建一個公鑰(public key)。在你的Linux系統上打開一個命令終端,運行如下命令:



# ssh-keygen -t rsa  (這裏也可以將RSA改成dsa,)
Generating public/private rsa key pair.
Enter file in which to save the key (/home/calvin/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/calvin/.ssh/id_rsa.
Your public key has been saved in /home/calvin/.ssh/id_rsa.pub.

在這一步裏,系統將自動生成一個公鑰(public key)並保存在/home/calvin/.ssh/id_rsa/.pub這個文件裏面。在上面的命令執行過程中,我們只需要一直敲回車直接使用默認 值就好了(如果你想具體瞭解,可以去看man page,也可以私下跟我討論)。

接下來,我們要將這個公鑰(public key)複製到遠程機器上面去,以前這是一個比較麻煩的事,但是,現在我們只要一個命令就可以搞定:



# ssh-copy-id -i /home/calvin/.ssh/id_rsa.pub username@@remoteserver.com

用自己實際的用戶名與服務器地址取代username和remoteserver.com(下同),也可以直接填服務器的IP。
在這裏,你可以再試下ssh到遠程服務器,應該是不會再提示要密碼而直接登陸進去了。

當然,如果你的機器沒有ssh-copy-id這個命令,我們也可以使用傳統的方法:



# scp ~/.ssh/id_rsa.pub [email protected]:/home/username

然後,登陸到遠程機器上進行下一步的操作:



# ssh [email protected]
# cat ~/id_rsa.pub >> ~/.ssh/authorized_keys2

接下來,我們要給~/.ssh/authorized_keys2 correctly這個文件設置正確的權限(權限不對,證書會被拒絕)

至於爲什麼文件名是authorized_keys,可以在/etc/ssh/sshd_config中找到下面兩行

#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys


# chmod 644 ~/.ssh/authorized_keys2
發佈了23 篇原創文章 · 獲贊 2 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章