使用config 來管理ssh的會話
通常利用 ssh 連接遠(yuǎn)程服務(wù)器樱调,一般都要輸入以下類型命令:
ssh user@hostname -p port
如果擁有多個ssh賬號听隐,特別是像我這種喜歡在終端里直接ssh登錄荆责,
要記住每個ssh賬號的參數(shù)长酗,那是多么蛋疼的事情机隙。
還好纽谒,ssh提供一種優(yōu)雅且靈活的方式來解決這個問題证膨,就是利用
ssh的用戶配置文件config 管理 ssh 會話。ssh的用戶配置文件是
放在當(dāng)前用戶根目錄下的.ssh 文件夾里(~/.ssh/config, 不存在則新
創(chuàng)建一個), 其配置寫法如下
Host 別名
HostName 主機(jī)名
Port 端口
User 用戶名
IdentityFile 密鑰文件的路徑
有了這些配置鼓黔,就可以這樣用ssh 登錄服務(wù)器了:
ssh 別名
生成公鑰和密鑰
但是使用這種方式的前提是央勒,必須生成密鑰,并且將密鑰添加到服務(wù)器的
authorized_keys
文件里澳化。
使用密鑰的好處就是省去每次ssh登錄服務(wù)器時都要輸入登錄密碼的操作崔步,
這里使用ssh-keygen
生成ssh密鑰。
-
在 ~/.ssh/目錄下執(zhí)行
ssh-keygen -t rsa
直接一路回車即可
最后會生成 id_rsa 的私鑰缎谷,和 id_rsa.pub 的公鑰井濒。 -
把公鑰中的內(nèi)容復(fù)制到 authorized_keys 文件中,不存在則新創(chuàng)建一個
scp ./id_rsa.pub user@remote_ip:~/.ssh/id_rsa_1010.pub
然后登錄到遠(yuǎn)程服務(wù)器,把公鑰 id_rsa_1010.pub 的內(nèi)容復(fù)制到 authorized_keys 文件里
cat id_rsa_1010.pub >> authorized_keys
以ssh public key 的形式訪問眼虱,對當(dāng)前用戶根目錄的.ssh 文件夾里的目錄文件是要
有一定的權(quán)限要求喻奥,之前遇到過ssh public key 配置好了,不過用public key 登錄驗證時
無效捏悬。所以撞蚕,最好設(shè)下.ssh 目錄權(quán)限為700,authorized_keys 權(quán)限為600.
如果authorized_keys 不為 600的話过牙,ssh就登錄不上去甥厦。即使所有的配置都正確。
chmod 700 ~/.ssh/
chmod 600 authorized_keys
當(dāng)然寇钉,用密鑰的方式連接服務(wù)器是需要服務(wù)器上的ssh支持的刀疙,需要ssh的配置文件(默認(rèn)是在/etc/ssh/sshd_config)
里的 PubkeyAuthentication設(shè)置為yes.如果要改登錄的端口,直接把Port改成你想到的端口值就行扫倡。
修改完后重啟下ssh谦秧,配置就生效:
/etc/init.d/ssh restart
-
最后本地的config 如下
Host cjb HostName 216.194.70.6 Port 22 User user IdentityFile ~/.ssh/cjb
配置完成之后,就可以在終端直接輸入 ssh cjb 暢通無阻地連上遠(yuǎn)程的cjb服務(wù)器上了撵溃。
ssh 的原理
簡單的說疚鲤,SSH是一種網(wǎng)絡(luò)協(xié)議,用于計算機(jī)之間的加密登錄缘挑。
如果一個用戶從本地計算機(jī)集歇,使用SSH協(xié)議登錄另外一臺遠(yuǎn)程計算機(jī),我們就認(rèn)為语淘,這種登錄是安全的诲宇。
既是被中途截獲,密碼也不會泄露惶翻。
最早的時候姑蓝,互聯(lián)網(wǎng)通信都是明文通信,一旦被截獲维贺,內(nèi)容就暴露無疑它掂。1995年,芬蘭學(xué)著Tatu Ylonen
設(shè)計了SSH協(xié)議溯泣,將登錄信息全部加密虐秋,稱為互聯(lián)網(wǎng)安全的一個基本解決方案,迅速在全世界獲得推廣垃沦。
目前已經(jīng)稱為Linux系統(tǒng)的標(biāo)準(zhǔn)配置客给。
需要指出的是,SSH只是一種協(xié)議肢簿,存在多種實現(xiàn)靶剑,既有商業(yè)實現(xiàn)蜻拨,也有開源實現(xiàn)。本文針對的實現(xiàn)是
OpenSSH桩引,它是自由軟件缎讼,應(yīng)用非常廣泛。
SSH之所以能夠保證安全坑匠,原因在于它采用了公鑰加密血崭。
整個過程是這樣的。
遠(yuǎn)程主機(jī)收到用戶的登錄請求厘灼,把自己的公鑰發(fā)給用戶夹纫。
用戶使用這個公鑰,將登錄密碼加密之后设凹,發(fā)送回來舰讹。
遠(yuǎn)程主機(jī)用自己的私鑰,解密登錄密碼闪朱。如果密碼正確月匣,就同意用戶登錄。
ssh 公鑰登錄
使用密碼登錄监透,每次都必須輸入密碼桶错,非常麻煩。好在SSH還提供了公鑰登錄胀蛮,可以省去輸入密碼的步驟。
所謂“公鑰登錄”糯钙,原理很簡單粪狼,就是用戶將自己的公鑰存在遠(yuǎn)程主機(jī)上。登錄的時候任岸,遠(yuǎn)程主機(jī)會向用戶
發(fā)送一段隨機(jī)字符串再榄,用戶用自己的私鑰加密后,再發(fā)回來享潜。遠(yuǎn)程主機(jī)用事先存儲的公約進(jìn)行解密困鸥,如果
成功,就證明用戶是可信的剑按,直接允許登錄shell疾就,不再要求密碼。
這種方法要求用戶必須提供自己的公約艺蝴,如果沒有現(xiàn)成的猬腰,直接使用ssh-keygen 生成一個。
authorized_keys
文件
遠(yuǎn)程主機(jī)將用戶的公鑰猜敢,保存在登錄后的用戶主目錄的$HOME/.ssh/authorized_keys文件中姑荷。
公鑰是一段字符串盒延,只要把它追加在authorized_keys 文件的末尾就行!
參考