SSH
Secure SHell :
是一個(gè)允許兩臺(tái)電腦之間通過(guò)安全的連接進(jìn)行數(shù)據(jù)交換的網(wǎng)絡(luò)協(xié)議。通過(guò)加密保證了數(shù)據(jù)的保密性和完整性。ssh采用公鑰加密技術(shù)來(lái)驗(yàn)證遠(yuǎn)程主機(jī),以及(必要時(shí))允許遠(yuǎn)程主機(jī)驗(yàn)證用戶。
傳統(tǒng)的FTP、Telnet是再網(wǎng)絡(luò)中明文傳送數(shù)據(jù)、用戶賬號(hào)和密碼,很容易受到中間人攻擊。
SSH是目前較可靠,專為遠(yuǎn)程登錄會(huì)話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議。利用SSH協(xié)議可以有效防止遠(yuǎn)程管理過(guò)程中的信息泄露問(wèn)題。通過(guò)SSH可以對(duì)所有傳輸?shù)臄?shù)據(jù)進(jìn)行加密,也能夠防止DNS欺騙和IP欺騙
ssh客戶端(ssh) ssh服務(wù)端(sshd)
+----------+ +---------+
| | | |
| | | |
| | | |
| | | |
+---+---+--+ +-+---+---+
| | | |
| | | |
| +----------------------------+ |
| |
| ssh加密了的TCP通信 |
+------------------------------------+
SSH連接
SSH只是一種協(xié)議,其開源實(shí)現(xiàn)的有OpenSSH程序
SSH Key
SSH 秘鑰對(duì) 最直觀的作用:讓你方便的登錄到SSH服務(wù)器,而無(wú)需輸入密碼。由于你無(wú)需發(fā)送你的密碼到網(wǎng)絡(luò)中,SSH秘鑰對(duì)被認(rèn)為是更加安全的方式
原因是:SSH利用SSH key來(lái)進(jìn)行前面提到的基于秘鑰的安全驗(yàn)證
使用SSH key的步驟:
- 在客戶端生成SSH KEY(秘鑰對(duì):公鑰和秘鑰)
- 在服務(wù)端的配置文件中加入你的公鑰。(比如我們需要再GItHub中粘貼你的公鑰)
生成秘鑰對(duì)
ssh-keygen 命令用于為ssh生成、管理和轉(zhuǎn)換認(rèn)證秘鑰,他支持RSA和DSA(ED) 三種算法認(rèn)證秘鑰。
該命令的選項(xiàng):
-b:指定密鑰長(zhǎng)度;
-e:讀取openssh的私鑰或者公鑰文件;
-C:添加注釋;
-f:指定用來(lái)保存密鑰的文件名;
-i:讀取未加密的ssh-v2兼容的私鑰/公鑰文件,然后在標(biāo)準(zhǔn)輸出設(shè)備上顯示openssh兼容的私鑰/公鑰;
-l:顯示公鑰文件的指紋數(shù)據(jù);
-N:提供一個(gè)新密語(yǔ);
-P:提供(舊)密語(yǔ);
-q:靜默模式;
-t:指定要?jiǎng)?chuàng)建的密鑰類型。
生成秘鑰對(duì)時(shí),有一個(gè)選項(xiàng)要求你設(shè)置密碼(passphrase),該密碼是用來(lái)保護(hù)你的私鑰的密碼。如果設(shè)置了則在使用私鑰時(shí)會(huì)要求你輸入這個(gè)密碼:一般不設(shè)置,【之后可以更改密碼,使用 " ssh-keygen -p "】
生成后最好將私鑰進(jìn)行備份,另還有-C 選項(xiàng),用于為指定注釋,通常使用自己的郵件名作為注釋
示例:為了安全考慮使用RSA加密方式并指定密鑰長(zhǎng)度 -b 2048(1024的密鑰長(zhǎng)度能夠被破解,建議指定為2048或4096)。
$ ssh-keygen -t rsa -C "your_email@example.com" -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key
(/Users/your_user_directory/.ssh/id_rsa): 按回車鍵 (如果需要生成多對(duì)key,則輸入/home/users/.ssh/filename)
Enter passphrase (empty for no passphrase): 輸入密碼(一般不輸入密碼,直接回車)
Enter same passphrase again: 再次輸入密碼
...
# 查看公鑰文件中的內(nèi)容
$ cat ~/.ssh/id_rsa.pub
ssh-rsa "公鑰內(nèi)容" your_email@example.com
#或者
$ cat ~/.ssh
$ cat ./id_rsa.pub
# 注意在其他地方導(dǎo)入公鑰時(shí)一定要將公鑰文件中的*全部?jī)?nèi)容*都導(dǎo)入,包括末尾你的郵箱。
如何創(chuàng)建多個(gè)ssh 可以、而不是覆蓋默認(rèn)的文件
在創(chuàng)建ssh key時(shí)自動(dòng)輸入路徑和文件名稱,而非使用默認(rèn)路徑和文件名即可
或者使用個(gè) -f 來(lái)指定文件名
ssh-keygen -t rsa -C "123@aa.com" -f ~/.ssh/second-rsa
使用非默認(rèn)的SSH Key
對(duì)于OpenSSH 客戶端(liunx默認(rèn)安裝),需要在 ~/.ssh/config 文件中進(jìn)行配置(如果沒(méi)有改文件則自行創(chuàng)建一個(gè))。
分為如下兩種情況
1.為不同服務(wù)器的同一用戶配置不同的SSH key
好吧,這里同一用戶在不同服務(wù)器上是可以使用同一個(gè)SSH key
2.配置多個(gè)賬戶
為同一個(gè)臺(tái)服務(wù)器配置多個(gè)賬戶,那么可以這樣在config文件中配置:
# coding
Host git.coding.net
User your_email@example.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa //默認(rèn)的私鑰
# second
Host git.coding.net
User youre_secondemail@example.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/second_rsa // 生成的第二個(gè)私鑰