1. 程式人生 > >securecrt免密碼登錄

securecrt免密碼登錄

目錄 bubuko post 公鑰 修改配置 HR 6.0 padding -c

一、前言

1. 環境

  • 客戶端系統:win7
  • securecrt版本:6.0.2
  • 服務端系統:centos6.5
  • 服務端ssh實現:openssh

2. 關於認證方式

我們知道ssh一般都會提供多種客戶端認證方式,其中最常用的是密碼和公鑰認證方式,本篇主要討論公鑰認證方式。有關客戶端認證的過程與原理,可以看另一篇文章:ssh的發展歷程與基本原理。


二、使用公鑰認證登陸的優點

1、公鑰認證允許使用空密碼,省去每次登錄都需要輸入密碼的麻煩

2、多用戶管理服務器時,可以通過多個公鑰登錄同一用戶下,可以避免因為密碼認證被用戶都需要密碼,導致的密碼容易泄密的危險。並且使用passwd修改密碼,也不會影響到其他用戶的登錄。

3、做空密碼的公鑰認證,為運維自動化提供了便捷方法。


三、生成公鑰和私鑰

以下是使用securecrt生成公鑰和私鑰的主要步驟,不用修改的界面就不放出來了,直接點下一步就是了。

技術分享圖片

選擇公鑰的類型為RSA:

技術分享圖片

因為我們不想輸入通行密碼,所以密碼直接留空,註釋框寫上自己想標註的內容就行了:

技術分享圖片

到了這一步,就是生成公鑰的時候了,註意框出來的內容,securecrt在生成公鑰的時候會根據鼠標的移動數據作為隨機的因素去生成,如果你到了這個界面切到別的地方去了,可能回來的時候發現進度條還沒動過。

技術分享圖片

key的格式選OpenSSH,完成。

技術分享圖片

生成有兩個文件,一個公鑰文件(Identity.pub)一個私鑰文件(Identity),需要把Identity.pub的內容追加到服務器的文件~/.ssh/authroized_keys中,如果.ssh目錄不存在,就創建一個:

mkdir ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authroized_keys
chmod 600 ~/.ssh/authroized_keys

註意:.ssh 目錄的權限必須是0700,.ssh/authorized_keys 文件權限必須是0600,否則公鑰認證不會生效。


四、服務端設置

我們想達成的目的有:

  • 讓客戶端免密登陸
  • 禁止客戶端密碼登陸
  • 修改默認端口,避免外部攻擊

1. 修改配置文件/etc/ssh/sshd_config

Port 1357
PermitRootLogin yes
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .
ssh/authorized_keys PasswordAuthentication no

2. 重啟sshd服務

service sshd restart

3. 如果有開防火墻,還需要修改防火墻配置

打開防火墻配置文件/etc/sysconfig/iptables,找到原來22端口的配置:

-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

把22改成你想要改成的端口,這裏是1357,修改完保存配置並重啟防火墻。

service iptables restart

關於iptables的原理和基本用法,有興趣可以看看另外一篇:深入淺出iptables。


五、登陸服務器

建立連接,把公鑰選項提前,並去掉密碼登陸選項,然後點開公鑰的屬性選項。

技術分享圖片

選擇使用會話公鑰設置,然後選擇自己的私鑰文件,ok。

技術分享圖片

如果是第一次連接,會提示你去辨別是否接受這個新的host key,選接受並保存。

技術分享圖片

然後就可以直接登陸服務器了。


六、總結及註意

本文主要簡述從securecrt生成公鑰/密鑰到免密登陸服務器的過程,總體來說比較簡單。

不過有的細節不註意就可能導致失敗,譬如:

  • 客戶端和服務端的ssh版本對不上
  • 生成key的類型不對
  • 服務端.ssh目錄或者授權文件的權限不對
  • 服務器sshd配置修改錯誤或者修改完沒有重啟sshd服務
  • 防火墻配置沒有修改,或者沒有重啟防火墻


七、參考

ssh 公鑰認證方式登錄

ssh配置公鑰私鑰登錄SecureCRT

securecrt免密碼登錄