ssh登陸提供兩種認證方式:口令(密碼)認證方式和密鑰認證方式。其中口令(密碼)認證方式是咱們最經常使用的一種,這裏介紹密鑰認證方式登陸到linux/unix的方法。linux
使用密鑰登陸分爲3步:
一、生成密鑰(公鑰與私鑰);
二、放置公鑰(Public Key)到服務器~/.ssh/authorized_key文件中;
三、配置ssh客戶端使用密鑰登陸。
算法
打開Xshell,在菜單欄點擊「tools」,在彈出的菜單中選擇「User Key Generation Wizard...」(密鑰生成嚮導),以下圖:shell
彈出「User Key Generation Wizard」對話框,在「Key Type」項選擇「RSA」公鑰加密算法,「Key Length」選擇爲「2048」位密鑰長度,以下圖:服務器
點擊「Next」,等待密鑰生成:
ssh
繼續下一步,在「Key Name」中輸入Key的文件名稱,我這裏爲「key」;在「Passphrase」處輸入一個密碼用於加密私鑰,並再次輸入密碼確認,以下圖:
加密
點擊「Next」,密鑰生成完畢(Public key Format選擇SSH2-OpenSSH格式),這裏顯示的是公鑰,咱們能夠複製公鑰而後再保存,也能夠直接保存公鑰到文件,以下圖。私鑰這裏不顯示,能夠在「User Key Mangager...」導出到文件:
spa
點擊「Save as file...」按鈕,將公鑰(Public key)保存到磁盤,文件名爲「key.pub」,備用。.net
使用到Xshell登陸到服務器,進入到「/root/.ssh/」目錄,運行rz命令(若是沒有rz命令,運行yum install lrzsz安裝),將key.pub發送到服務器,而後運行以下命令,將公鑰(Public Key)導入到「authorized_keys」文件:unix
[root@localhost ~]# cd /root/.ssh/orm
[root@localhost .ssh]# rz
rz waiting to receive.
[root@localhost .ssh]# cat me.pub >> authorized_keys
[root@localhost .ssh]# chmod 600 authorized_keys
[root@localhost .ssh]# ls
authorized_keys known_hosts me.pub
[root@localhost .ssh]# cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA4VCOWFrARc1m3MfEAL50v2Z2siavO3Ijpr/LZ00EZah8EjfZhqjAc/agkljyXmNGpVDpRdtlYco8h3P5vegXOEgKcX74fDYm0vNdVABVD1XSD8ElNyLTCCNk7rZJbi3htJox3Q1n0vnMmB5d20d9occkAx4Ac94RWNS33EC5CszNTMgAIn+uZl0FlQklS1oSyWFahSTWyA6b33qG7Y5E4b6J/caObnPx6EgtBrgi97gXJHZWyYlGrpWmUuhPqs5XToRB08CVxAyzewtq1MXv0p+Po4L1pbHLRf+TSoZ5RSBZZjY4/JMAzdXHNtnAyO0j0VNGbBXKUcNSAHZ
打開Xshell,點擊「New」按鈕,彈出「New Session Properties」對話框,在「Connection」欄目中,輸入剛剛配置好公鑰(Public Key)的IP地址和端口,以下圖所示:
點擊左側的「Authentication」,切換到認證欄目,在「Method」選擇「Public Key」認證,用戶名輸入「root」(公鑰是放在root目錄下的.ssh文件夾中),在「User Key」中選擇咱們剛纔生成的私鑰「key」,「Passphrase」中輸入私鑰的加密密碼。
點擊肯定,Xshell配置ssh免密碼登陸配置完成。
其實,linux下的ssh-keygen下也能夠生成密鑰,在linux下輸入ssh-keygen -t rsa,在提示下,輸入密鑰的名稱(這裏爲key)和私鑰加密密碼,既完成密鑰生成。生成的兩個文件中,「key」爲私鑰,「key.pub」爲公鑰。以下圖所示: