ssh安裝及配置詳解
ssh(secure shell) --加密遠端登入管理伺服器,加密的資料傳輸
一、SSH為SecureShell的縮寫,由IETF的網路工作小組(NetworkWorkingGroup)所制定;SSH為建立在應用層和傳輸層基礎上的安全協議。SSH是目前較可靠,專為遠端登入會話和其他網路服務提供安全性的協議。利用SSH協議可以有效防止遠端管理過程中的資訊洩露問題。SSH最初是UNIX系統上的一個程式,後來又迅速擴充套件到其他操作平臺。SSH在正確使用時可彌補網路中的漏洞。SSH客戶端適用於多種平臺。幾乎所有UNIX平臺—包括HP-UX、Linux、AIX、Solaris、DigitalUNIX、Irix,以及其他平臺,都可執行SSH。
telnet --通過字元介面遠端管理伺服器(明文)
ssh/openssh --加密的遠端管理,加密的資料傳輸(scp/winscp/sftp)
client(192.168.0.254)ssh<--->server(192.168.0.172)sshd(金鑰對(公鑰/私鑰))
1、可以使用ssh協議遠端加密管理伺服器
2、使用SSH協議進行資料傳輸(scp)
二、 從
第一種級別(基於口令的安全驗證)
只要你知道自己帳號和口令,就可以登入到遠端主機。所有傳輸的資料都會被加密,但是不能保證你正在連線的伺服器就是你想連線的伺服器。可能會有別的伺服器在冒充真正的伺服器,也就是受到“中間人”這種方式的攻擊。
第二種級別(基於密匙的安全驗證)
需要依靠 密匙,也就是你必須為自己建立一對密匙,並把公用密匙放在需要訪問的伺服器上。如果你要連線到SSH伺服器上,客戶端軟體就會向伺服器發出請求,請求用你的密匙進行安全驗證。伺服器收到請求之後,先在該伺服器上你的主目錄下尋找你的公用密匙,然後把它和你傳送過來的公用密匙進行比較。如果兩個
但是,與第一種級別相比,第二種級別不需要在網路上傳送口令。
第二種級別不僅加密所有傳送的資料,而且“中間人”這種攻擊方式也是不可能的(因為他沒有你的私人密匙)。但是整個登入的過程可能需要10秒
dsa
rsa --ssh預設的加密方式,非對稱的公鑰加密演算法,安全,資料傳輸速度慢
RSA是目前最有影響力的公鑰加密演算法,它能夠抵抗到目前為止已知的絕大多數密碼攻擊,已被ISO推薦為公鑰資料加密標準。
點選這裡 | 點選這裡 | 點選這裡 | 點選這裡 | 點選這裡 |
---|---|---|---|---|
保密級別 | 對稱金鑰長度(bit) | RSA金鑰長度(bit) | ECC金鑰長度(bit) | 保密年限 |
80 | 80 | 1024 | 160 | 2010 |
112 | 112 | 2048 | 224 | 2030 |
128 | 128 | 3072 | 256 | 2040 |
192 | 192 | 7680 | 384 | 2080 |
256 | 256 | 15360 | 512 | 2120 |
# rpm -qa |grep ssh --預設情況下,LINUX發行版都預安裝這個軟體
openssh-server-4.3p2-36.el5 --服務端 sshd
openssh-askpass-4.3p2-36.el5 --圖形的客戶端
openssh-4.3p2-36.el5 --公共軟體包
openssh-clients-4.3p2-36.el5 --字元的客戶端ssh scp sftp
ssh遠端登入的過程
1.sshd啟動的時候會產生一個公鑰,每個小時更新一次公鑰
2.當客戶端收到服務端公鑰會版本協商(sshv1,sshv2)使用sshv1登入時不能登入ssh2 ,使用sshv2時可以登入ssh1,ssh2
3.版本協商完後,服務端會發公鑰(/etc/ssh/ssh_host_ras.pub給客戶端,這一步是沒加密
4.客戶端返回確認資訊,把一個session_key通過公鑰加密發給服務端
ssh的加密方式遠端連線原理很簡單,就是使用者將自己的公鑰儲存在遠端主機上。登入的時候,遠端主機會向用戶傳送一段隨機字串,使用者用自己的私鑰加密後,再發回來。遠端主機用事先儲存的公鑰進行解密,如果成功,就證明使用者是可信的,直接允許登入shell,不再要求密碼。
ssh的配置檔案 :
# ls /etc/ssh/ssh*_config -l
-rw-r--r-- 1 root root 1827 2009-06-23 /etc/ssh/ssh_config 客戶端的配置檔案
-rw------- 1 root root 3323 2009-06-23 /etc/ssh/sshd_config 服務端的配置檔案
# cat /etc/ssh/sshd_config |grep -v '#'|grep -v ^$
Port 22 --監聽埠
Protocol 2 --使用版本2
ListenAddress 0.0.0.0 --監聽地址
LoginGraceTime 2m --登入超時時間
PermitRootLogin yes --允許root通過ssh登入
MaxAuthTries 6 --密碼嘗試6次
RSAAuthentication yes --支援ras加密
PubkeyAuthentication yes --是否支援金鑰對驗證
AuthorizedKeysFile .ssh/authorized_keys --服務端更新金鑰對金鑰對驗證時,客服端公鑰儲存檔案
PermitEmptyPasswords no --是否允許空密碼登入
PasswordAuthentication yes --是否支援賬號/密碼登入方式
UseDNS no --禁用DNS反解
Subsystem sftp /usr/libexec/openssh/sftp-server --支援sftp
AllowUsers root 只允許root 可以遠端
DenyUsers
AllowGroups
客戶端的命令:
# rpm -ql openssh-clients-4.3p2-36.el5|grep bin
/usr/bin/scp --支援遠端主機之間檔案拷貝
scp -P 2222 /root/test.txt [email protected]:/tmp/test.txt
scp -P 2222 -r /root/ [email protected]:/tmp/test.txt
scp [email protected]:/etc/hosts /var/tmp --從0.254主機上下載一個檔案
scp /etc/hosts [email protected]:/var/tmp --往0.254上傳一個檔案
/usr/bin/sftp --sftp的客戶端
# /usr/bin/sftp -oport=2222 [email protected]
/usr/bin/ssh
# ssh -p 2222 [email protected]
/usr/bin/ssh-copy-id --拷貝公鑰至遠端主機對應的目錄
ssh驗證:
1.基於賬號/密碼的驗證
服務端:私鑰
客服端:公鑰
2.基於金鑰對的驗證
服務端:公鑰
客服端:私鑰
client(192.168.0.254)<-->server(192.168.0.2)
a. 在客戶端生成金鑰對
# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): --儲存私鑰的路徑
Enter passphrase (empty for no passphrase): --給私鑰加密(123456)
Enter same passphrase again: --確認密碼
Your identification has been saved in /root/.ssh/id_rsa. --私鑰
Your public key has been saved in /root/.ssh/id_rsa.pub. --公鑰
ccess control configuration prevents your request from being
u01-→ u01/.ssh/authorized_keys
b. 拷貝公鑰至伺服器,拷貝目標路徑:(你想用哪個使用者登入就拷貝哪個使用者的家目錄$HOME/.ssh/authorized_keys)
第一種方法(手工拷貝):
在伺服器上的操作:
#useradd kiki
# sudo -u kiki mkdir /home/kiki/.ssh
# sudo -u kiki chmod 700 /home/kiki/.ssh
在客戶端上上傳公鑰
# scp -P2222 /root/.ssh/id_rsa.pub [email protected]:~/.ssh/authorized_keys
第二種方法(使用工具自動完成):
# ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected] --一條命令搞定
c. 測試金鑰對的登入:
# ssh [email protected]
Address 192.168.0.16 maps to test, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
Enter passphrase for key '/root/.ssh/id_rsa': --輸入私鑰的加密密碼(123456)
Last login: Fri Aug 19 15:47:02 2011 from 192.168.0.222
[[email protected] ~]$ --這樣就不需要輸入kiki使用者的密碼
d.在windows的客戶端使用金鑰對驗證:
1、生成金鑰對
2、上傳
3、轉換:
# ssh-keygen -i -f key_pub >> /root/.ssh/authorized_keys
sshd 訪問次數限制
編譯PAM的配置檔案(tty終端)
# vim /etc/pam.d/login
#%PAM-1.0
auth required pam_tally2.so deny=3 lock_time=300 even_deny_root root_unlock_time=10
auth [user_unknown=ignore success=ok ignoreignore=ignore default=bad] pam_securetty.so一定要寫在第一行。或者是最前面
even_deny_root 也限制root使用者;
deny 設定普通使用者和root使用者連續錯誤登陸的最大次數,超過最大次數,則鎖定該使用者
unlock_time 設定普通使用者鎖定後,多少時間後解鎖,單位是秒;
root_unlock_time 設定root使用者鎖定後,多少時間後解鎖,單位是秒;
如果想限制遠端登入,需要改SSHD檔案(遠端登入)
# vim /etc/pam.d/sshd
#%PAM-1.0
• auth required pam_tally2.so deny=3 unlock_time=300 even_deny_root root_unlock_time=10
•
ssh使用者登入失敗次數過多被鎖定,手動解鎖:
• 檢視使用者登入失敗的次數
• 1. [[email protected] pam.d]# pam_tally2 --user redhat
2. Login Failures Latest failure From
3. redhat 7 07/16/12 15:18:22 tty1
確定用/lib64/security/pam_tally2.so模組
pam_tally2 --user kiosk ----檢視登入失敗次數
pam_tally2 -r -u kiosk ----登入次數為0即可登入
pam_tally -user kiosk -reset ----清空登入值
或:
faillog -u kiosk -r ----清空指定使用者kiosk登入次數