搭架SSH服务器学习笔记
下面的文章經測試OK!!
Ubuntu 14.04遠程登錄服務器--ssh的安裝和配置
http://jingyan.baidu.com/article/9c69d48fb9fd7b13c8024e6b.html1. 背景:
???????? 安全外殼協議(Secure Shell,SSH)是目前應用較多的一個網絡安全協議。它為網絡上傳輸的數據提供機密性、完整性、認證性等安全服務。
最近在研究git服務器,要使用ssh協議,需要搭架ssh服務器,這是第一次搭架,做下筆記,以供參考,以下是我的應用環境:
| C/S | 操作系統 | 軟件 | IP地址 |
| SSH服務端 | Linux(debian) | OpenSSH | 192.168.1.101 |
| SSH客戶端 | Windows XP | Copssh | 192.168.1.100 |
?
ssh客戶端有很多選擇,可以到這里看看:
http://en.wikipedia.org/wiki/Comparison_of_SSH_clients
2. linux上安裝OpenSSH
◆如果要下載源碼安裝,可以到以下幾個鏈接下載:
官網:http://www.openssh.com/
下載:http://www.openssh.com/openbsd.html
◆我選擇直接從軟件包安裝:
#apt-get install ssh
以上命令安裝同時安裝了openssh-server和openssh-client,你也可以有選擇性的安裝:
#apt-get install openssh-server
#apt-get install openssh-client
安裝完后應該會自動運行ssh服務,可以通過以下指令確認:
#ps aux|grep ssh
?
3. Windows XP上安裝CopSSH
官網:https://www.itefix.no/i2/copssh
安裝過程很簡單,一直“下一步”即可。
4. SSH登陸
???????? SSH提供了兩種認證方式:口令認證和密鑰認證。在Windows XP安裝完CopSSH后,在開始菜單 > CopSSH > 03. Start a Unix BASH Shell啟動Shell窗口,在這里就可以使用ssh命令。
4.1. 口令認證
用服務器上的root身份登陸:
第一次登陸時,會提示無法創建/home/Administrator/.ssh目錄,你可以用以下命令創建該目錄:
| $ mkdir –p? /home/Administrator/.ssh |
同時,你第一次登錄某一個遠程主機時,會出現沒有找到遠程主機密鑰的提示信息。輸入"yes"后,系統會將遠程主機的密鑰加入到你的主目錄下的/home/Administrator/.ssh/known_hosts文件中。以后登錄就不會再提示了,直接輸入服務器賬號root的密碼即可登錄。
???????? 登陸后,你就可以遠程操作服務器了,要登出,用exit或者logout命令。
? ? ? ??要保證.ssh和authorized_keys都只有用戶自己有寫權限,否則驗證無效。(今天就是遇到這個問題,找了好久問題所在),其實仔細想想,這樣做是為了不會出現系統漏洞。
4.2. 密鑰認證
基于口令的認證,需要在用戶每次登錄的時候都輸入用戶名和口令,顯得比較麻煩。而基于公共密鑰的認證,只需要在第一次輸入密鑰口令,就可以不需要再次輸入,一次分發密鑰后,驗證將由程序自動進行,且安全性比基于口令方式更強。
4.2.1. 原理
SSH雙方,通過相應帳號主目錄下的.ssh目錄中的客戶端密鑰對id_rsa、id_rsa.pub文件和服務端authorized_keys文件中密鑰進行驗證。
| id_rsa | 自己的rsa私鑰 |
| id_rsa_pub | 自己的rsa公鑰 |
| authorized_keys | 存放rsa客戶端的公鑰 |
4.2.2. 通信過程
◆客戶端向ssh服務器發出連接請求,請求用密匙進行安全驗證,該請求包含請求的帳號和自己的公鑰。
◆ssh服務器收到請求后,先在服務器的用戶目錄下對應帳號目錄中尋找你的公用密鑰(如/root/.ssh/authorized_keys文件中),如果找到的公鑰與客戶端發來的公鑰一致,則開始進行下一步“質詢”。
◆服務器用該公鑰加密“質詢”(challenge)信息,并發送紿客戶端。
◆客戶端收到加密的質詢信息后,用自己的密鑰對其解密,并將解密后的信息發送回服務器。
◆服務器驗證客戶端返回的質詢信息正確后,驗證結束,雙方開始通信。
4.2.3. 配置方法
在客戶端用以下指令生成密鑰對文件(補充:后來發現最好是用ssh-keygen -t rsa,有次我在CentOS系統上運行ssh-keygen產生的密鑰對就不是rsa的):
???????? 之后將生成的id_rsa.pub文件內容附加到服務器對應帳號下的authorized_keys文件末尾即可,如果沒有該文件則新建一個,如:/root/.ssh/authorized_keys。有以下兩種操作方法:
◆遠程操作
| $ ssh-copy-id -i? ~/.ssh/id_rsa.pub? root@192.168.1.101 |
在CopSSH的Shell中沒法用ssh-copy-i命令,如果客戶端是安裝在linux就可以用該命令了。
◆文件拷貝到服務器上操作
???????? 先在客戶端用scp命令將文件拷貝到遠程服務器:
???????? 然后登陸到服務器,在服務器上操作,將文件id_rsa.pub追加到authorized_keys文件中。操作如下:
4.2.4. 公鑰認證無需輸入口令
按以上任一方法配置,以后登陸就無需輸入密碼,如下圖所示:
?
?
4.3.?設置主機別名
實際應用中,可能同時需要多套公鑰/私鑰對。在使用ssh-keygen命令時需要通過-f參數指定不同的私鑰名稱。用法如下:
| $ ssh-keygen -f ~/.ssh/<filename> |
指定有意義的<filename>名稱,命令執行后,會在~/.ssh目錄下創建指定的公鑰/私鑰對:文件<filename>是私鑰,文件<filename.pub>是公鑰。
?????????將新生的公鑰追加到服務器主機登陸用戶主名錄下的.ssh/authorized_keys文件中,就可以使用新創建的公鑰建立到遠程主機<server>的<user>賬戶的無口令登陸。
?????????現在客服端存在多個公鑰/私鑰對,那么當執行下面的ssh登陸指令時,用到的是哪個公鑰呢?
| $ ssh <user>@<server> |
?????????當然是默認公鑰~/.ssh/id_rsa.pub。那么如何用新建的公鑰連接server呢?
???????? SSH的客戶端配置文件~/.ssh/config可以通過創建主機別名,在連接主機時選擇使用特定的公鑰。例如~/.ssh/config文件中的下列配置:
| host hr ??user root ??hostname 192.168.1.101 ??port 22 ??identityfile ~/.ssh/id_rsa ? host hj ??user root ??hostname 192.168.1.101 ??port 22 ??identityfile ~/.ssh/jiajia |
?????????可以使用下面的SSH登陸命令,
| $ ssh hr??? //?相當于用私鑰id_rsa文件登陸root@192.168.1.101服務器 $ ssh hj??? //?相當于用私鑰jiajia文件登陸root@192.168.1.101服務器 |
轉自:?http://blog.csdn.net/benkaoya/article/details/8127126
總結
以上是生活随笔為你收集整理的搭架SSH服务器学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1、MapReduce理论简介
- 下一篇: 最优化学习笔记(十七)——拟牛顿法(3)