ssh講解
一.加密、解密
1.數據加密與解密
加密(算法)
解密(算法)
明文 密文
2.加密算法
(1)對稱加密算法:數據發送方將明文(原始數據)和加密密鑰一起經過特殊加密算法處理後,使其變成複雜的加密密文發送出去。接收方收到密文後,需要使用加密及相同算法的逆算法對密文進行解密,才能使其恢復成可讀明文。在對稱加密算法中,使用的密鑰只有一個,發收信雙方都使用這個密鑰對數據進行加密和解密。
算法:DES,AES
優點:算法公開、計算量小、加密速度快、加密效率高。
缺點:在數據傳送前,發送方和接收方必須商定好密鑰,如果一方的祕鑰被泄露,那麼加密信息也就不安全了。另外,每對用戶每次使用對稱加密算法時,都需要使用其他人不知道的唯一祕鑰,這會使得收、發雙方所擁有的鑰匙數量巨大,密鑰管理成爲雙方的負擔。
(2)非對稱加密算法:假設A要連接主機B ,A先生成一對密鑰。 A將公鑰發送給B,私鑰自己保留。B生成一個隨機數並用A的公鑰加密發送給A,A用私鑰解密。A將解密後的隨機數發送給B,B發現隨機數是正確的則認證通過。
算法:RSA,DSA
優點:非對稱加密使用一對密鑰,一個用來加密,一個用來解密,而且公鑰是公開的,私鑰是自己保存的,不需要像對稱加密那樣在通信之前要先同步密鑰。
缺點:加密和解密
(3)單向加密算法:提取數據特徵碼,特徵碼使用某一算法計算得出。A將明文和特徵碼發送給B,B用相同算法計算特證碼,若得出的特徵碼相同,則明文一致,保證數據的安全性。
算法:MD4,MD5,SHA,HMAC
ssh及應用
1.ssh的安裝配置
(1)安裝、服務
# yum install –y ssh
#rpm –qa | grep ssh
#/etc/init.d/sshd start
#netstat –tnl| grep 22
(2)文件解讀
花費時間長、速度慢,只適合對少量數據進行加密。
Moduli 會話祕鑰交換信息
Ssh_config 客戶端配置文件
Ssh_config 服務端配置文件
文件命名中未包含rsa或dsa的爲sshv1版本的連接文件
文件命名中包含rsa或dsa的爲sshv2版本的連接文件,加密算法有rsa和dsa兩種
(3)服務端配置文件解讀
#vim /etc/ssh/sshd_config
#空格 純註釋
#port 22 可啓用的參數,指定連接端口
#protocol 2 ssh的版本
#AddressFamily any 在ipv4還是ipv6上提供ssh服務
#Listen Address 只給這一個地址提供服務
PermitRootLogin yes 允許root登錄
#KeyRegenerationInterval 祕鑰重新生成的時間
#ServerKeyBits 祕鑰長度
#SyslogFacility 日誌設備
#MaxAuthTime 重試密碼次數
#RsaAuthentication 基於rsa認證
#PubkeyAuthentication 公鑰認證
#AuthorzedKeysFile 公鑰所在用戶家目錄
#PasswordAuthtication 密碼認證
1)Ssh服務端:10.1.16.173
限制tom用戶登錄ssh
# override default of no subsystems
Subsystem sftp /usr/libexec/openssh/sftp-server
DenyUsers tom
2)給指定的ip提供ssh服務,只給174提供ssh服務,在文件最後一行添加以下內容:
服務端:
# vim /etc/ssh/shd_config
AllowUsers
#/etc/init.d/sshd restart
客戶端連接測試:10.1.16.174連接成功
10.1.14.36連接失敗
2.ssh的認證機制
ssh基於口令的認證
1)用戶向遠程主機發登錄請求:ssh user@遠程主機
2)遠程主機收到用戶的登錄請求,把自己的公鑰發給用戶。
2)用戶使用這個公鑰,將登錄密碼加密後,發送回遠程主機。
3)遠程主機用自己的私鑰,解密登錄密碼,如果密碼正確,就同意用戶登錄。
#ssh –l username 10.1.16.173,l表示登錄名(login name)
#ssh [email protected]
注:當遠程主機的公鑰被接受以後,它就會被保存在$HOME/.ssh/known_hosts之中。下次再連接這臺主機,系統就會認出它的公鑰已經保存在本地了,從而跳過警告部分,直接提示輸入密碼。authorized_keys是遠程主機將用戶的公鑰,保存在登錄後的用戶主目錄的$HOME/.ssh/authorized_keys文件中。
#ssh [email protected] ‘ifconfig’
Ssh可將被連接主機上的命令運行後返回本機
基於密鑰的認證->使用非對稱加密算法
用戶將自己的公鑰儲存在遠程主機上。登錄的時候,遠程主機會向用戶發送一段隨機字符串,用戶用自己的私鑰加密後,再發回遠程主機。遠程主機用事先儲存的公鑰進行解密,如果成功,就證明用戶是可信的,直接允許登錄shell,不再要求輸入密碼,這和之前的ssh賬號密碼也沒有直接關係。
#ssh-keygen –t rsa #也可以不加-t rsa
#ssh-copy-id user@host
#ssh [email protected]
3.scp及sftp簡單應用
Scp:基於ssh的遠程複製命令,可以實現在主機之間傳輸數據
Scp 【option】src dest
將遠端文件複製到本地
(1)Root用戶
#scp [email protected]:/etc/passwd /mnt #複製文件
#scp –r [email protected]:/tmp/ /mnt #遞歸複製目錄
#scp –p [email protected]:/tmp/file /mnt #複製保留權限
將本地文件複製到遠端
#scp file [email protected]:/mnt #複製文件
#scp –r tom [email protected]:/mnt #遞歸複製目錄
#scp –p file [email protected] :/mnt #複製保留權限
(2)普通用戶
#useradd tom
#su – tom
#scp file [email protected]:/mnt #tom複製文件到對方的root的mnt目錄下#scp file [email protected]: #tom複製文件file’到jerry的家目錄下
#scp –r dir [email protected]: #tom複製目錄dir到jerry的家目錄下
(3)Sftp簡單應用
Sftp [email protected]
可以使用put、get等命令上傳下載文件