debian系統下安裝ssh服務

它是什麼??

SSH 爲 Secure Shell 的縮寫,簡單地說,SSH 爲創建在應用層基礎上的安全協議。SSH 是目前較可靠,專爲遠程登陸會話和其餘網絡服務提供安全性的協議。利用 SSH 協議能夠有效防止遠程管理過程當中的信息泄露問題。linux

Openssh 爲這種協議的實現或實體,咱們能夠經過 openssh 這個開源的軟件進行遠程登陸。算法

 

爲何要用它?

因爲我筆記本上裝的爲debian系統,而臺式機爲windows系統而且雙屏,再把個人筆記本記到桌子上真的沒有多少地方了,而且操做筆記本時還要扭着身子,太麻煩了。因此呢,打算遠程登陸個人筆記本。用的我臺式電腦裏有虛擬機並裏面的utunbu或kali系統登陸它(真心不想裝windows式下的ssh的client).windows

 

 

第一步:安裝

OpenSSh 分爲客戶端openssh-client 與服務端 openssh-server.通常狀況下,咱們的linux系統都會自帶 client端的。緩存

最簡單的方法下載:安全

apt-get install openssh-client
apt-get install openssh-server

安裝完成之後,能夠經過如下命令看到它們運行的進程:服務器

ps -e |grep ssh

#輸出:
1943    ?      00:00:00   ssh-agent        #表示客戶端已運行;
16322  ?      00:00:00   sshd              #表示服務端已運行;

 

第二步:SSH的簡單配置

ssh的配置文件爲:/etc/ssh/sshd_config.  在網上找到了一箇中文的註釋文件(來自:http://xujpxm.blog.51cto.com/8614409/1717862),太方便了:cookie

Port 22  #設置ssh監聽的端口號,默認22端口
ListenAddress ::
ListenAddress 0.0.0.0  #指定監聽的地址,默認監聽全部;
Protocol 2,1   #指定支持的SSH協議的版本號。'1'和'2'表示僅僅支持SSH-1和SSH-2協議。
#"2,1"表示同時支持SSH-1和SSH-2協議。#
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key    #HostKey是主機私鑰文件的存放位置; 
#SSH-1默認是 /etc/ssh/ssh_host_key 。SSH-2默認是 /etc/ssh/ssh_host_rsa_key和
#/etc/ssh/ssh_host_dsa_key 。一臺主機能夠擁有多個不一樣的私鑰。"rsa1"僅用於SSH-1,
#"dsa"和"rsa"僅用於SSH-2。
UsePrivilegeSeparation yes     #是否經過建立非特權子進程處理接入請求的方法來進行權
#限分 離。默認值是"yes"。 認證成功後,將以該認證用戶的身份創另外一個子進程。這樣作的目的是
#爲了防止經過有缺陷的子進程提高權限,從而使系統更加安全。
KeyRegenerationInterval 3600   #在SSH-1協議下,短命的服務器密鑰將以此指令設置的時
#間爲週期(秒),不斷從新生成;這個機制能夠儘可能減少密鑰丟失或者黑客攻擊形成的損失。設爲 0 
#表示永不從新生成爲 3600(秒)。
ServerKeyBits 1024    #指定服務器密鑰的位數
SyslogFacility AUTH   #指定 將日誌消息經過哪一個日誌子系統(facility)發送。有效值是:
#DAEMON, USER, AUTH(默認), LOCAL0, LOCAL1, LOCAL2, LOCAL3,LOCAL4, LOCAL5, 
#LOCAL6, LOCAL7
LogLevel INFO     #指定日誌等級(詳細程度)。可用值以下:QUIET, FATAL, ERROR, INFO
#(默認), VERBOSE, DEBUG, DEBUG1, DEBUG2, DEBUG3,DEBUG 與 DEBUG1 等價;DEBUG2
# 和 DEBUG3 則分別指定了更詳細、更羅嗦的日誌輸出。比 DEBUG 更詳細的日誌可能會泄漏用戶
# 的敏感信息,所以反對使用。
LoginGraceTime 120  #限制用戶必須在指定的時限(單位秒)內認證成功,0 表示無限制。默認
#值是 120 秒;若是用戶不能成功登陸,在用戶切斷鏈接以前服務器須要等待120秒。
PermitRootLogin yes  #是否容許 root 登陸。可用值以下:"yes"(默認) 表示容許。
#"no"表示禁止。"without-password"表示禁止使用密碼認證登陸。"forced-commands-only"
#表示只有在指定了 command 選項的狀況下才容許使用公鑰認證登陸,同時其它認證方法所有被禁止。
#這個值經常使用於作遠程備份之類的事情。
StrictModes yes       #指定是否要求 sshd(8) 在接受鏈接請求前對用戶主目錄和相關的配
#置文件 進行宿主和權限檢查。強烈建議使用默認值"yes"來預防可能出現的低級錯誤。
RSAAuthentication yes  #是否容許使用純 RSA 公鑰認證。僅用於SSH-1。默認值是"yes"。
PubkeyAuthentication yes  #是否容許公鑰認證。僅能夠用於SSH-2。默認值爲"yes"。
IgnoreRhosts yes    #是否取消使用 ~/.ssh/.rhosts 來作爲認證。推薦設爲yes。
RhostsRSAAuthentication no  #這個選項是專門給 version 1 用的,使用 rhosts 檔案在                  
#/etc/hosts.equiv配合 RSA 演算方式來進行認證!推薦no。
HostbasedAuthentication no    #這個與上面的項目相似,不過是給 version 2 使用的
IgnoreUserKnownHosts no          #是否在 RhostsRSAAuthentication 或 
#HostbasedAuthentication 過程當中忽略用戶的 ~/.ssh/known_hosts 文件。默認值是"no"。
#爲了提升安全性,能夠設爲"yes"。
PermitEmptyPasswords no         #是否容許密碼爲空的用戶遠程登陸。默認爲"no"。
ChallengeResponseAuthentication no   #是否容許質疑-應答(challenge-response)認         
#證。默認值是"yes",全部 login.conf中容許的認證方式都被支持。
PasswordAuthentication yes      # 是否容許使用基於密碼的認證。默認爲"yes"。
KerberosAuthentication no    #是否要求用戶爲 PasswordAuthentication 提供的密碼
#必須通 過 Kerberos KDC 認證,也就是是否使用Kerberos認證。使用Kerberos認證,服務器
#須要一個能夠校驗 KDC identity 的 Kerberos servtab 。默認值是"no"。
KerberosGetAFSToken no       #若是使用了 AFS 而且該用戶有一個 Kerberos 5 TGT,
#那麼開   啓該指令後,將會在訪問用戶的家目錄前嘗試獲取一個 AFS  token 。默認爲"no"。
KerberosOrLocalPasswd yes   #若是 Kerberos 密碼認證失敗,那麼該密碼還將要經過其它
#的 認證機制(好比 /etc/passwd)。默認值爲"yes"。
KerberosTicketCleanup yes    #是否在用戶退出登陸後自動銷燬用戶的 ticket 。默認
#"yes"。
GSSAPIAuthentication no      #是否容許使用基於 GSSAPI 的用戶認證。默認值爲"no"。
#僅用 於SSH-2。
GSSAPICleanupCredentials yes   #是否在用戶退出登陸後自動銷燬用戶憑證緩存。默認值      
#是"yes"。僅用於SSH-2。
X11Forwarding no    #是否容許進行 X11 轉發。默認值是"no",設爲"yes"表示容許。若是
#容許X11轉發而且sshd代理的顯示區被配置爲在含有通配符的地址(X11UseLocalhost)上監聽。
#那麼將可能有額外的信息被泄漏。因爲使用X11轉發的可能帶來的風險,此指令默認值爲"no"。需
#要注意的是,禁止X11轉發並不能禁止用戶轉發X11通訊,由於用戶能夠安裝他們本身的轉發器。如
#果啓用了 UseLogin ,那麼X11轉發將被自動禁止。
X11DisplayOffset 10    #指定X11 轉發的第一個可用的顯示區(display)數字。默認值                   
#是 10 。這個能夠用於防止 sshd 佔用了真實的 X11 服務器顯示區,從而發生混淆。
PrintMotd no                #登入後是否顯示出一些信息呢?例如上次登入的時間、地點等
#等,預設是 yes ,可是,若是爲了安全,能夠考慮改成 no !
PrintLastLog yes           #指定是否顯示最後一位用戶的登陸時間。默認值是"yes"
TCPKeepAlive yes       #指定系統是否向客戶端發送 TCP keepalive 消息。默認值是"yes"
#。這種消息能夠檢測到死鏈接、鏈接不當關閉、客戶端崩潰等異常。能夠設爲"no"關閉這個特性。
UseLogin no               #是否在交互式會話的登陸過程當中使用 login。默認值是"no"。
#若是開啓此指令,那麼 X11Forwarding 將會被禁止,由於 login 不知道如何處理 xauth 
#cookies 。須要注意的是,login是禁止用於遠程執行命令的。若是指定了 
#UsePrivilegeSeparation ,那麼它將在認證完成後被禁用。
MaxStartups 10        #最大容許保持多少個未認證的鏈接。默認值是 10 。到達限制後,
#將再也不接受新鏈接,除非先前的鏈接認證成功或超出 LoginGraceTime 的限制。
MaxAuthTries 6     #指定每一個鏈接最大容許的認證次數。默認值是 6 。若是失敗認證的次數超
#過這個數值的一半,鏈接將被強制斷開,且會生成額外的失敗日誌消息。
UseDNS no          #指定是否應該對遠程主機名進行反向解析,以檢查此主機名是否與其IP
#地址真實對應。
Banner /etc/issue.net   #將這個指令指定的文件中的內容在用戶進行認證前顯示給遠程用戶。
#這個特性僅能用於SSH-2,默認什麼內容也不顯示。"none"表示禁用這個特性。
Subsystem sftp /usr/lib/openssh/sftp-server   #配置一個外部子系統(例如,一個文件
#傳輸守   護進程)。僅用於SSH-2協議。值是一個子系統的名字和對應的命令行(含選項和參數)。
UsePAM yes     #是否使用PAM模塊認證

 

根據本身的要求,本身配置就能夠了。帶 # 的表示註釋掉了。網絡

我本身的修改成:增長了 root登陸的權限。即:ssh

#  修改前
PermitRootLogin  without-password
# 修改後
PermitRootLogin yes

 

第三步:從新啓動服務

修改後之後,咱們須要從新啓動服務:ide

#方法一:
 /etc/init.d/ssh restart

# 方法二:
service ssh restart

 

經過 service ssh status 能夠查看服務的狀態。

 

第四步:如何登陸與退出

由於我用的是局域網,個人電腦在同一個網段裏,因此登陸很簡單,對於遠程登陸的話, 沒有去研究,暫時用不着。

1. 在主機上打開 ssh的服務。

2. 在另外一個機器上(前提安裝爲ssh的客戶端,不過基本linux系統都會安裝的)輸入: ssh 用戶名@IP地址 ,而後會提示你輸入密碼, 就OK了。

3. 若是退出的話,輸入: exit.

 

第五步:如何在客戶機上顯示服務端運行的圖形結果

對於這一步的設置,我也不請楚爲何網上的設置這麼複雜呢,個人設置以下:

1. 在服務端的配置文件中 /etc/ssh/sshd_config 中設置 X11Forwarding yes 選項,並重啓 ssh 服務;

2. 在客戶機的配置文件中 /etc/ssh/ssh_config 中設置 ForwardX11 yes 選項;

3. 在客戶機登陸前 輸入:xhost + 服務端的IP ,這個操做是:容許服務端的圖形顯示在客戶機的顯示器上;

4. 登陸:ssh 用戶名@服務端IP;

5. 驗證: 咱們能夠登陸之後的窗口上輸入一個圖形顯示的命令如:xclock,若是顯示圖形,則表示成功了。

注意:在不設置第2步前提時,第4步也能夠這樣登陸: ssh –X 用戶名@服務端IP;

 

相關補充:

來自:http://xujpxm.blog.51cto.com/8614409/1717862

一、SSH1 vs. SSH2

SSH協議規範存在一些小版本的差別,可是有兩個主要的大版本:SSH1 (版本號 1.XX) 和 SSH2 (版本號 2.00)。事實上,SSH1和SSH2是兩個徹底不一樣互不兼容的協議。SSH2明顯地提高了SSH1中的不少方面。首先,SSH是宏設計,幾個不一樣的功能(如:認證、傳輸、鏈接)被打包進一個單一的協議,SSH2帶來了比SSH1更強大的安全特性,如基於MAC的完整性檢查,靈活的會話密鑰更新、充分協商的加密算法、公鑰證書等等。這就是用SecurityCRT的時候爲何會讓你選擇ssh1仍是ssh2的緣由。

  SSH2由IETF標準化,且它的實如今業界被普遍部署和接受。因爲SSH2對於SSH1的流行和加密優點,如今幾乎全部Linux新發行版中,OpenSSH服務器默認禁用了SSH1。

二、SSH基於密鑰的安全驗證

    這種登錄方式,須要依靠密鑰,也就是說你必須爲本身建立一對密鑰對(公鑰和私鑰),而且把該公鑰放到須要訪問的服務器上。

注意:不能在須要訪問的服務器上建立密鑰,不然沒法經過該密鑰鏈接該服務器,可是經過該密鑰鏈接其餘服務器是正常的。

  若是你要鏈接到ssh服務器,ssh客戶端會向ssh服務器發出請求,請求用你的密鑰進行安全驗證。ssh服務器在收到該請求以後,會先在ssh服務器上,檢查你登錄的用戶的主目錄下尋找對應的公鑰,而後把它和你發送過來的公鑰進行比較。若是兩個公鑰一致,ssh服務器就用公鑰加密「質詢」(challenge)並把它發送給ssh客戶端。ssh客戶端在收到「質詢」以後就能夠用你的私鑰解密該「質詢」,再把它發送給ssh服務器。

3. /etc/hosts.allow 和/etc/hosts.deny

有些server會用這兩個文件限制登錄的ip,一般是deny裏面deny all,而後再allow須要登錄的ip地址;例如:

先禁止全部:

[root @test root]# cat /etc/hosts.deny

sshd: ALL : deny 

再放行容許訪問的ip:

[root @test root]# cat  /etc/hosts.allow

sshd:10.10.10.* : allow      容許10.10.10.0/24網段登錄

sshd: 192.168.2.2 : allow   容許192.168.2.2這個ip登錄

 

 

 

 

QQ截圖20170502214151

相關文章
相關標籤/搜索