日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第二十九天-ssh服务重要知识深入浅出讲解

發布時間:2023/12/20 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第二十九天-ssh服务重要知识深入浅出讲解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄概述:

1. SSH簡介

2. SSH安全驗證方式
3. 安裝并測試OpenSSH

4. SSH的密匙
?? 4.1 生成你自己的密匙對

?? 4.2分發公用密匙

5. 配置SSH

?? 5.1 配置客戶端的軟件

?? 5.2 配置服務端的軟件

6. 拷貝文件

?? 6.1 用"scp"拷貝文件

?? 6.2 用"sftp"拷貝文件

?? 6.3 用"rsync"拷貝文件

?? 6.4 用"加密通道"的ftp拷貝文件

?

1. SSH簡介

  SSH的英文全稱是Secure SHell。通過使用SSH,你可以把所有傳輸的數據進行加密,這樣"中間人"這種攻擊方式就不可能實現了,而且也能夠防止DNS和IP欺騙。還有一個額外的好處就是傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。SSH有很多功能,它既可以代替telnet,又可以為ftp、pop、甚至ppp提供一個安全的"通道"。

  傳統的網絡服務程序,如:ftp、pop和telnet在本質上都是不安全的,因為它們在網絡上用明文傳送口令和數據,別有用心的人非常容易就可以截獲這些口令和數據。而且,這些服務程序的安全驗證方式也是有其弱點的,就是很容易受到"中間人"(man-in-the-middle)這種方式的攻擊。所謂"中間人"的攻擊方式,就是"中間人"冒充真正的服務器接收你的傳給服務器的數據,然后再冒充你把數據傳給真正的服務器。服務器和你之間的數據傳送被 "中間人"一轉手做了手腳之后,就會出現很嚴重的問題。

  最初SSH是由芬蘭的一家公司開發的。但是因為受版權和加密算法的限制,現在很多人都轉而使用OpenSSH。OpenSSH是SSH的替代軟件,而且是免費的,可以預計將來會有越來越多的人使用它而不是SSH。
  SSH是由客戶端和服務端的軟件組成的,有兩個不兼容的版本分別是:1.x和2.x。用SSH 2.x的客戶程序是不能連接到SSH 1.x的服務程序上去的。OpenSSH 2.x同時支持SSH 1.x和2.x。

2. SSH安全驗證方式

  從客戶端來看,SSH提供兩種級別的安全驗證。
  (1)第一種級別(基于口令的安全驗證)

  只要你知道自己帳號和口令,就可以登錄到遠程主機。所有傳輸的數據都會被加密,但是不能保證你正在連接的服務器就是你想連接的服務器。可能會有別的服務器在冒充真正的服務器,也就是受到"中間人"這種方式的攻擊。
  (2)第二種級別(基于密匙的安全驗證)

  需要依靠密匙,也就是你必須為自己創建一對密匙,并把公用密匙放在需要訪問的服務器上。如果你要連接到SSH服務器上,客戶端軟件就會向服務器發出請求,請求用你的密匙進行安全驗證。服務器收到請求之后,先在你在該服務器的家目錄下尋找你的公用密匙,然后把它和你發送過來的公用密匙進行比較。如果兩個密匙一致,服務器就用公用密匙加密"質詢"(challenge)并把它發送給客戶端軟件。客戶端軟件收到"質詢"之后就可以用你的私人密匙解密再把它發送給服務器。
用這種方式,你必須知道自己密匙的口令。但是,與第一種級別相比,第二種級別不需要在網絡上傳送口令。
  第二種級別不僅加密所有傳送的數據,而且"中間人"這種攻擊方式也是不可能的(因為他沒有你的私人密匙)。但是整個登錄的過程可能需要10秒。

3.安裝并測試OpenSSH

  因為受到美國法律的限制,在很多Linux的發行版中都沒有包括OpenSSH。但是,可以從網絡上下載并安裝OpenSSH

  $sudo apt-get install ssh
  安裝完OpenSSH之后,用下面命令測試一下:
  ssh -l [your accountname on the remote host] [address of the remote host]
  如果OpenSSH工作正常,你會看到下面的提示信息:
  The authenticity of host [hostname] can't be established.
  Key fingerprint is 1024 5f:a0:0b:65:d3:82:df:ab:44:62:6d:98:9c:fe:e9:52.
  Are you sure you want to continue connecting (yes/no)?
  OpenSSH告訴你它不知道這臺主機,但是你不用擔心這個問題,因為你是第一次登錄這臺主機。鍵入"yes"。這將把這臺主機的"識別標記"加到"~/.ssh/know_hosts"文件中。第二次訪問這臺主機的時候就不會再顯示這條提示信息了。然后,SSH提示你輸入遠程主機上你的帳號的口令。輸入完口令之后,就建立了SSH連接,這之后就可以象使用telnet那樣使用SSH了。

4. SSH的密匙
4.1 生成你自己的密匙對

  生成并分發你自己的密匙有兩個好處:
  1) 可以防止"中間人"這種攻擊方式
  2) 可以只用一個口令就登錄到所有你想登錄的服務器上

  用下面的命令可以生成密匙:
  ssh-keygen
  如果遠程主機使用的是SSH 2.x就要用這個命令:
  ssh-keygen -d
  在同一臺主機上同時有SSH1和SSH2的密匙是沒有問題的,因為密匙是存成不同的文件的。
  ssh-keygen命令運行之后會顯示下面的信息:
  Generating RSA keys: ............................ooooooO......ooooooO
  Key generation complete.
  Enter file in which to save the key (/home/[user]/.ssh/identity):
  [按下ENTER就行了]
  Created directory '/home/[user]/.ssh'.
  Enter passphrase (empty for no passphrase):
  [輸入的口令不會顯示在屏幕上]
  Enter same passphrase again:
  [重新輸入一遍口令,如果忘記了口令就只能重新生成一次密匙了]
  Your identification has been saved in /home/[user]/.ssh/identity.
  [這是你的私人密匙]
  Your public key has been saved in /home/[user]/.ssh/identity.pub.
  The key fingerprint is: 2a:dc:71:2f:27:84:a2:e4:a1:1e:a9:63:e2:fa:a5:89 [user]@[local machine]
  "ssh-keygen -d"做的是幾乎同樣的事,但是把一對密匙存為(默認情況下)"/home/[user]/.ssh/id_dsa"(私人密匙)和"/home/[user]/.ssh/id_dsa.pub"(公用密匙)。
  現在你有一對密匙了:公用密匙要分發到所有你想用ssh登錄的遠程主機上去;私人密匙要好好地保管防止別人知道你的私人密匙。用"ls -l ~/.ssh/identity"或"ls -l ~/.ssh/id_dsa"所顯示的文件的訪問權限必須是"-rw-------"。
  如果你懷疑自己的密匙已經被別人知道了,不要遲疑馬上生成一對新的密匙。當然,你還要重新分發一次公用密匙。

4.2分發公用密匙

  在每一個你需要用SSH連接的遠程服務器上,你要在自己的家目錄下創建一個".ssh"的子目錄,把你的公用密匙"identity.pub" 拷貝到這個目錄下并把它重命名為"authorized_keys"。然后執行:
  chmod 644 .ssh/authorized_keys
  這一步是必不可少的。如果除了你之外別人對"authorized_keys"文件也有寫的權限,SSH就不會工作。
  如果你想從不同的計算機登錄到遠程主機,"authorized_keys"文件也可以有多個公用密匙。在這種情況下,必須在新的計算機上重新生成一對密匙,然后把生成的"identify.pub"文件拷貝并粘貼到遠程主機的"authorized_keys"文件里。當然在新的計算機上你必須有一個帳號,而且密匙是用口令保護的。有一點很重要,就是當你取消了這個帳號之后,別忘了把這一對密匙刪掉。

5. 配置SSH
5.1 配置客戶端的軟件

  OpenSSH 有三種配置方式:命令行參數、用戶配置文件和系統級的配置文("/etc/ssh/ssh_config")。命令行參數優先于配置文件,用戶配置文件優先于系統配置文件。所有的命令行的參數都能在配置文件中設置。因為在安裝的時候沒有默認的用戶配置文件,所以要把 "/etc/ssh/ssh_config"拷貝并重新命名為"~/.ssh/config"。
標準的配置文件大概是這樣的:
  [lots of explanations and possible options listed]
  # Be paranoid by default
  Host *
  ForwardAgent no
  ForwardX11 no
  FallBackToRsh no
  還有很多選項的設置可以用"man ssh"查看"CONFIGURATION FILES"這一章。
  配置文件是按順序讀取的。先設置的選項先生效。
  假定你在www.foobar.com上有一個名為"bilbo"的帳號。而且你要把"ssh-agent"和"ssh-add"結合起來使用并且使用數據壓縮來加快傳輸速度。因為主機名太長了,你懶得輸入這么長的名字,用"fbc"作為"www.foobar.com"的簡稱。你的配置文件可以是這樣的:
  Host *fbc
  HostName www.foobar.com
  User bilbo
  ForwardAgent yes
  Compression yes
  # Be paranoid by default
  Host *
  ForwardAgent no
  ForwardX11 no
  FallBackToRsh no
  你輸入"ssh fbc"之后,SSH會自動地從配置文件中找到主機的全名,用你的用戶名登錄并且用"ssh-agent"管理的密匙進行安全驗證。這樣很方便吧!
用SSH連接到其它遠程計算機用的還是"paranoid(偏執)"默認設置。如果有些選項沒有在配置文件或命令行中設置,那么還是使用默認的"paranoid"設置。
在我們上面舉的那個例子中,對于到www.foobar.com的SSH連接:"ForwardAgent"和"Compression"被設置為 "Yes";其它的設置選項(如果沒有用命令行參數)"ForwardX11"和"FallBackToRsh"都被設置成"No"。
  其它還有一些需要仔細看一看的設置選項是:
  CheckHostIP yes
  這個選項用來進行IP地址的檢查以防止DNS欺騙。
  CompressionLevel
  壓縮的級別從"1"(最快)到"9"(壓縮率最高)。默認值為"6"。
  ForwardX11 yes
  為了在本地運行遠程的X程序必須設置這個選項。
  LogLevel DEBUG
  當SSH出現問題的時候,這選項就很有用了。默認值為"INFO"。

5.2 配置服務端的軟件

  SSH服務器的配置使用的是"/etc/ssh/sshd_config"配置文件,這些選項的設置在配置文件中已經有了一些說明而且用"man sshd"也可以查看幫助。請注意OpenSSH對于SSH 1.x和2.x沒有不同的配置文件。
  在默認的設置選項中需要注意的有:
  PermitRootLogin yes
  最好把這個選項設置成"PermitRootLogin without-password",這樣"root"用戶就不能從沒有密匙的計算機上登錄。把這個選項設置成"no"將禁止"root"用戶登錄,只能  用"su"命令從普通用戶轉成"root"。
  X11Forwarding no
  把這個選項設置成"yes"允許用戶運行遠程主機上的X程序。就算禁止這個選項也不能提高服務器的安全因為用戶可以安裝他們自己的轉發器(forwarder),請參看"man sshd"。
  PasswordAuthentication yes
  把這個選項設置為"no"只允許用戶用基于密匙的方式登錄。這當然會給那些經常需要從不同主機登錄的用戶帶來麻煩,但是這能夠在很大程度上提高系統的安全性。基于口令的登錄方式有很大的弱點。
  # Subsystem /usr/local/sbin/sftpd
  把最前面的#號去掉并且把路徑名設置成"/usr/bin/sftpserv",用戶就能使用"sftp"(安全的FTP)了(sftpserv在sftp 軟件包中)。因為很多用戶對FTP比較熟悉而且"scp"用起來也有一些麻煩,所以"sftp"還是很有用的。而且2.0.7版本以后的圖形化的ftp工具"gftp"也支持"sftp"。

6. 拷貝文件
6.1 用"scp"拷貝文件

  SSH提供了一些命令和shell用來登錄遠程服務器。在默認情況下它不允許你拷貝文件,但是還是提供了一個"scp"命令。
  假定你想把本地計算機當前目錄下的一個名為"dumb"的文件拷貝到遠程服務器www.foobar.com上你的家目錄下。而且你在遠程服務器上的帳號名為"bilbo"。可以用這個命令:
  scp dumb bilbo@www.foobar.com:.
  把文件拷貝回來用這個命令:
  scp bilbo@www.foobar.com:dumb .
  "scp"調用SSH進行登錄,然后拷貝文件,最后調用SSH關閉這個連接。
  如果在你的"~/.ssh/config"文件中已經為www.foobar.com做了這樣的配置:
  Host *fbc
  HostName www.foobar.com
  User bilbo
  ForwardAgent yes
  那么你就可以用"fbc"來代替"bilbo@www.foobar.com",命令就簡化為"scp dumb fbc:."。
  "scp"假定你在遠程主機上的家目錄為你的工作目錄。如果你使用相對目錄就要相對于家目錄。
  用"scp"命令的"-r"參數允許遞歸地拷貝目錄。"scp"也可以在兩個不同的遠程主機之間拷貝文件。
  有時候你可能會試圖作這樣的事:用SSH登錄到www.foobar.com上之后,輸入命令"scp [local machine]:dumb ."想用它把本地的"dumb"文件拷貝到你當前登錄的遠程服務器上。這時候你會看到下面的出錯信息:
  ssh: secure connection to [local machine] refused
  之所以會出現這樣的出錯信息是因為你運行的是遠程的"scp"命令,它試圖登錄到在你本地計算機上運行的SSH服務程序……所以最好在本地運行"scp"除非你的本地計算機也運行SSH服務程序。

6.2 用"sftp"拷貝文件

  如果你習慣使用ftp的方式拷貝文件,可以試著用"sftp"。"sftp"建立用SSH加密的安全的FTP連接通道,允許使用標準的ftp命令。還有一個好處就是"sftp"允許你通過"exec"命令運行遠程的程序。從2.0.7版以后,圖形化的ftp客戶軟件"gftp"就支持"sftp"。
  如果遠程的服務器沒有安裝sftp服務器軟件"sftpserv",可以把"sftpserv"的可執行文件拷貝到你的遠程的家目錄中(或者在遠程計算機的 $PATH環境變量中設置的路徑)。"sftp"會自動激活這個服務軟件,你沒有必要在遠程服務器上有什么特殊的權限。

6.3 用"rsync"拷貝文件

  "rsync" 是用來拷貝、更新和移動遠程和本地文件的一個有用的工具,很容易就可以用"-e ssh"參數和SSH結合起來使用。"rsync"的一個優點就是,不會拷貝全部的文件,只會拷貝本地目錄和遠程目錄中有區別的文件。而且它還使用很高效的壓縮算法,這樣拷貝的速度就很快。

6.4 用"加密通道"的ftp拷貝文件

  如果你堅持要用傳統的FTP客戶軟件。SSH可以為幾乎所有的協議提供"安全通道"。FTP是一個有一點奇怪的協議(例如需要兩個端口)而且不同的服務程序和服務程序之間、客戶程序和客戶程序之間還有一些差別。
  實現"加密通道"的方法是使用"端口轉發"。你可以把一個沒有用到的本地端口(通常大于1000)設置成轉發到一個遠程服務器上,然后只要連接本地計算機上的這個端口就行了。有一點復雜是嗎?
  其實一個基本的想法就是,轉發一個端口,讓SSH在后臺運行,用下面的命令:
  ssh [user@remote host] -f -L 1234:[remote host]:21 tail -f /etc/motd
  接著運行FTP客戶,把它設置到指定的端口:
  lftp -u [username] -p 1234 localhost
  當然,用這種方法很麻煩而且很容易出錯。所以最好使用前三種方法。

===============================================================

小結:
  1、ssh加密的遠程連接協議。openssh,openssl
  2、默認端口22,建議修改
  3、到目前位置有1.x,2.x兩個版本,2更安全
  4、服務端ssh 遠程連接服務,sftp服務
  5、ssh客戶端包含ssh命令,scp,sftp
  6、ssh安全驗證:口令和秘鑰,這兩種都是基于用戶的
  7、安全優化,修改默認端口,禁止root遠程連接
  8、公鑰(public key)放在服務端,相當于鎖;私鑰(private key)放在客戶端,相當于鑰匙。

擴展:
  給你一個端口,如何查出對應的服務?
  方法一:lsof -i tcp:22
  方法二:netstat -lntup|grep 22

推:push
  scp -P52113? /data/oldboy.txt? oldboy@10.0.0.7:/tmp
?
拉:pull
  scp?? ?-P52113?? ? oldboy@10.0.0.7:/tmp/oldboy.txt?? ?/data/

源自:http://blog.chinaunix.net/uid-25324849-id-3187125.html

轉載于:https://www.cnblogs.com/migongci0412/p/5052606.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的第二十九天-ssh服务重要知识深入浅出讲解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。