SSH配置總結

SSH概述

傳統的遠程登錄(telnet,rlogin)是不安全的,它們在網絡上用明文傳輸口令和數據,SSH則是安全的。OpenSSH提供兩種級別的驗證方式:
  • 基於口令的安全驗證:知道服務器的帳號密碼即可遠程登錄,口令和數據在傳輸過程中都會被加密。
  • 基於密鑰的安全驗證:此時需要在創建一對密鑰,把公有密鑰放到遠程服務器上自己的宿主目錄中,而私有密鑰則由自己保存。

Ubuntu服務端配置SSH

1. 軟件安裝
檢查軟件是否安裝:
$sudo apt-cache policy openssh-client openssh-server
安裝軟件:
$sudo apt-get install openssh-server     //服務端
$sudo apt-get install openssh-client     //客戶端(ubuntu10.10以安裝)
該軟件包中還攜帶了一些其他的SSH工具,如ssh-keygen用來生成私鑰/公鑰對,scp可以通過ssh遠程複製文件,stfp可以實現ftp傳輸文件。

2. 配置文件
$/etc/ssh$ ls -l
total 148
-rw-r--r-- 1 root root 125749 2010-09-15 02:34 moduli  //ssh服務器的Diffie-Helllman密鑰文件
-rw-r--r-- 1 root root   1669 2010-09-15 02:34 ssh_config  //ssh客戶端配置文件
-rw-r--r-- 1 root root   2453 2011-03-09 14:09 sshd_config  //ssh服務器端配置文件
-rw------- 1 root root    672 2011-03-09 14:09 ssh_host_dsa_key  //ssh服務器端dsa算法私鑰
-rw-r--r-- 1 root root    613 2011-03-09 14:09 ssh_host_dsa_key.pub  //ssh服務器dsa公鑰
-rw------- 1 root root   1675 2011-03-09 14:09 ssh_host_rsa_key  //ssh服務器rsa算法私鑰
-rw-r--r-- 1 root root    405 2011-03-09 14:09 ssh_host_rsa_key.pub  /ssh服務器rsa算法公鑰

根據需要修改、確認sshd_config配置文件:
  • 啓用RSA加密方式:RSAAuthentication yes
  • 啓用公鑰配對認證方式:PubkeyAuthentication yes
  • 設置公匙文件路徑:AuthorizedKeysFile %h/.ssh/<authorized_keys>
  • (選擇性)密碼登陸方式:PasswordAuthentication <yes | no>    #禁止密碼驗證登錄,如果啓用的話,OpenSSH的 RSA認證登錄就失去意義
  • (選擇性)root遠程登錄:PermitRootLogin <yes | no>

4. 獲取需要登錄到此服務器的ssh公匙
$mkdir .ssh     #在需要開啓ssh連接的用戶目錄下建立 .ssh目錄
$chmod 700 .ssh
$cd .ssh
$mv <from_client_xxx.pub> <authorized_keys>     #名稱需要和配置文件中設置一致。此外如果採用的格式不是openssh,需要執行ssh-keygen -i -f Identity.pub >>authorized_keys進行格式轉換
$chmod 644 authorized_keys     #更改公匙文件權限

3. 常用命令
$sudo /etc/init.d/ssh <start | stop | restart | status>

4. scp命令使用
$scp [sourceIP]:<sourceFile> [tergetIP]:<targetFile>
其中第一個參數是源文件,第二個是目標文件,當參數是ssh登錄到的主機時可以省略ip或者主機名。當兩個參數是兩臺遠程主機的ip時,可以實現兩臺遠程主機之間的文件傳輸。
example: scp /home/zone/1.sh 192.168.0.143:/home/erpang,從服務器下載1.sh到143主機的erpang目錄下。


Ubuntu客戶端配置SSH登錄

1. 基於口令的認證
ssh 192.168.0.143/主機名(server ip 192.168.0.143)
初次登錄服務器時會出現許多信息,這是因爲ssh不能識別這臺主機,輸入yes後將會把這臺服務器的信息寫入~/.ssh/known_hosts文件,下次登錄時就不會出現這樣的信息。

2. 基於密鑰的認證
假設生成的私鑰爲~/.ssh/id_rsa,公鑰爲~/.ssh/id_rsa.pub,需要將公鑰複製到遠程服務器上,這樣當登錄server時,client會向server提出請求,用私鑰認證,server收到請求後,尋找公鑰進行身份認證。
  1. 生成密匙:ssh-keygen [-t <rsa | dsa>] [-C "comment message"],默認爲rsa。
  2. 拷貝公匙:scp id_rsa.pub 192.168.0.143:.ssh/authorized_keys,確保權限爲644。
  3. 登錄:ssh 192.168.0.143 如果執行ssh-keygen過程中設置了私鑰密碼,則登錄過程中會要求輸入私鑰密碼,否則直接登錄完成。

SecureCRT配置SSH登錄

1. 生成公匙/私匙對

使用SecureCRT的工具->創建公鑰 ,加密算法選擇RSA,由服務器端sshd配置文件中選擇的算法決定。
私匙密碼可以不設置,如果設置了,當登錄的時候會要求輸入此密碼。comment信息,可以隨意設置。
密匙長度默認爲1024位,可以不更改。密匙格式選擇OpenSSH。生成的xxx.pub爲公匙,xxx爲私匙。

2. 上傳公匙到服務器
上傳公匙到需要ssh登錄的用戶主目錄下.ssh/文件夾中,注意一定要以ASCII格式上傳。
在服務器端添加此公匙,並重啓sshd服務。完成後,在客戶端進行登陸測試,輸入密鑰通行短語(如果設置了),看看是否登錄成功,如果不成功從下面幾個方面檢查:
  • 權限是否是644
  • 主機地址是否正確
  • 密匙格式是否爲OpenSSH,如果不是需要轉換格式。密匙加密方式是否和服務端配置一致,RSA/DSA


GitHub配置SSH登錄

Https和SSH方式Clone項目的區別:
  • 前者可以隨意克隆github上的項目,而不管是誰的;而後者則是你必須是你要克隆的項目的擁有者或管理員,且需要先添加 SSH key ,否則無法克隆。
  • https url 在push的時候是需要驗證用戶名和密碼的;而 SSH 在push的時候,如果配置SSH key的時候設置了密碼,則需要輸入密碼的,否則不需要輸入密碼。

Github中添加 SSH key 步驟:
1. 檢查是否已經存在SSH key 
在git Bash 中,輸入如下命令:
$ cd ~/.ssh
$ ls
檢查是否已經存在密匙文件,例如 id_rsa.pub 或 id_dsa.pub 文件。如果文件已經存在,那麼可以跳過步驟2,直接進入步驟3。

2. 創建 SSH key 
$ ssh-keygen -t rsa -C "[email protected]"
代碼參數含義:
-t 指定密鑰類型,默認是 rsa ,可以省略。
-C 設置註釋文字,比如郵箱。
-f 指定密鑰文件存儲文件名。
以上代碼省略了 -f 參數,因此,運行上面那條命令後會讓你輸入一個文件名,用於保存剛纔生成的 SSH key 代碼,如:
Generating public/private rsa key pair.
# Enter file in which to save the key (/c/Users/you/.ssh/id_rsa): [Press enter]
當然,也可以不輸入文件名,使用默認文件名(推薦),那麼就會生成 id_rsa 和 id_rsa.pub 兩個祕鑰文件。 
接着又會提示輸入兩次密碼(該密碼是push文件的時候要輸入的密碼,而不是github管理者的密碼),
當然,也可以不輸入密碼,直接按回車。那麼push的時候就不需要輸入密碼,直接提交到github上了,如:
Enter passphrase (empty for no passphrase): 
# Enter same passphrase again:
接下來,會顯示如下代碼提示:
Your identification has been saved in /c/Users/you/.ssh/id_rsa.
# Your public key has been saved in /c/Users/you/.ssh/id_rsa.pub.
# The key fingerprint is:
# 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db [email protected]
當看到上面這段代碼時,說明 SSH key 已經創建成功,只需要添加到github的SSH key上就可以了。

3. 添加 SSH public key 到 github 中
首先拷貝 id_rsa.pub 文件的內容,可以用編輯器打開文件複製,也可以用git命令複製該文件的內容:

$ clip < ~/.ssh/id_rsa.pub
然後登錄github賬號,進入設置(Account Settings)-->SSH key 菜單頁面,點擊 Add SSH key 按鈕添加一個 SSH key 。把複製的 SSH key 代碼粘貼到 key 所對應的輸入框中,記得 SSH key 代碼的前後不要留有空格或者回車。Title 所對應的輸入框可以輸入一個該 SSH key 顯示在 github 上的一個別名,默認的會使用你的郵件名稱。


4. 測試一下該SSH key
輸入以上命令後,會有一段警告信息:
The authenticity of host 'github.com (207.97.227.239)' can't be established.
# RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
# Are you sure you want to continue connecting (yes/no)?
這是正常的,輸入 yes 回車既可。如果創建 SSH key 的時候設置了密碼,接下來就會提示輸入密碼:
Enter passphrase for key '/c/Users/Administrator/.ssh/id_rsa':
如果密碼輸錯了,會再要求輸入,直到正確爲止。注意,輸入密碼時如果輸錯一個字就會不正確,使用刪除鍵是無法更正的。
密碼正確後會看到下面這段話:
Hi username! You've successfully authenticated, but GitHub does not
# provide shell access.

如果用戶名是正確的,說明已經成功設置SSH密鑰。如果看到“access denied”,則表示拒絕訪問,那麼就需要使用 https 去訪問,而不是 SSH 。



參考與閱讀




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章