佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > SSH使用指南

SSH使用指南

熱門標簽:美團 硅谷的囚徒呼叫中心 百度競價點擊價格的計算公式 外呼系統(tǒng) 電話機器人搭建 解決方案 服務(wù)器配置 家政服務(wù)網(wǎng)絡(luò)
SSH的英文全稱是Secure SHell。通過使用SSH,你可以把所有傳輸?shù)臄?shù)據(jù)進行加密,這樣"中間人"這種攻擊方式就不可能實現(xiàn)了,而且也能夠防止DNS和IP欺騙。還有一個額外的好處就是傳輸?shù)臄?shù)據(jù)是經(jīng)過壓縮的,所以可以加快傳輸?shù)乃俣?。SSH有很多功能,它既可以代替telnet,又可以為ftp、pop、甚至ppp提供一個安全的"通道"。
統(tǒng)的網(wǎng)絡(luò)服務(wù)程序,如:ftp、pop和telnet在本質(zhì)上都是不安全的,因為它們在網(wǎng)絡(luò)上用明文傳送口令和數(shù)據(jù),別有用心的人非常容易就可以截獲這些口令和數(shù)據(jù)。而且,這些服務(wù)程序的安全驗證方式也是有其弱點的,就是很容易受到"中間人"(man-in-the-middle)這種方式的攻擊。所謂"中間人"的攻擊方式,就是"中間人"冒充真正的服務(wù)器接收你的傳給服務(wù)器的數(shù)據(jù),然后再冒充你把數(shù)據(jù)傳給真正的服務(wù)器。服務(wù)器和你之間的數(shù)據(jù)傳送被 "中間人"一轉(zhuǎn)手做了手腳之后,就會出現(xiàn)很嚴重的問題。
最初SSH是由芬蘭的一家公司開發(fā)的。但是因為受版權(quán)和加密算法的限制,現(xiàn)在很多人都轉(zhuǎn)而使用OpenSSH。OpenSSH是SSH的替代軟件,而且是免費的,可以預(yù)計將來會有越來越多的人使用它而不是SSH。
SSH是由客戶端和服務(wù)端的軟件組成的,有兩個不兼容的版本分別是:1.x和2.x。用SSH 2.x的客戶程序是不能連接到SSH 1.x的服務(wù)程序上去的。OpenSSH 2.x同時支持SSH 1.x和2.x。
SSH的安全驗證是如何工作的
從客戶端來看,SSH提供兩種級別的安全驗證。
第一種級別(基于口令的安全驗證)只要你知道自己帳號和口令,就可以登錄到遠程主機。所有傳輸?shù)臄?shù)據(jù)都會被加密,但是不能保證你正在連接的服務(wù)器就是你想連接的服務(wù)器??赡軙袆e的服務(wù)器在冒充真正的服務(wù)器,也就是受到"中間人"這種方式的攻擊。
第二種級別(基于密匙的安全驗證)需要依靠密匙,也就是你必須為自己創(chuàng)建一對密匙,并把公用密匙放在需要訪問的服務(wù)器上。如果你要連接到SSH服務(wù)器上,客戶端軟件就會向服務(wù)器發(fā)出請求,請求用你的密匙進行安全驗證。服務(wù)器收到請求之后,先在你在該服務(wù)器的家目錄下尋找你的公用密匙,然后把它和你發(fā)送過來的公用密匙進行比較。如果兩個密匙一致,服務(wù)器就用公用密匙加密"質(zhì)詢"(challenge)并把它發(fā)送給客戶端軟件??蛻舳塑浖盏?quot;質(zhì)詢"之后就可以用你的私人密匙解密再把它發(fā)送給服務(wù)器。
用這種方式,你必須知道自己密匙的口令。但是,與第一種級別相比,第二種級別不需要在網(wǎng)絡(luò)上傳送口令。
第二種級別不僅加密所有傳送的數(shù)據(jù),而且"中間人"這種攻擊方式也是不可能的(因為他沒有你的私人密匙)。但是整個登錄的過程可能需要10秒。
安裝并測試OpenSSH
因為受到美國法律的限制,在很多Linux的發(fā)行版中都沒有包括OpenSSH。但是,可以從網(wǎng)絡(luò)上下載并安裝OpenSSH(有關(guān)OpenSSH的安裝和配置請參考:http://www.linuxaid.com.cn/engineer/brimmer/html/OpenSSH.htm)。
安裝完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了。
SSH的密匙
生成你自己的密匙對
生成并分發(fā)你自己的密匙有兩個好處:
1) 可以防止"中間人"這種攻擊方式
2) 可以只用一個口令就登錄到所有你想登錄的服務(wù)器上
用下面的命令可以生成密匙:
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"(公用密匙)。
現(xiàn)在你有一對密匙了:公用密匙要分發(fā)到所有你想用ssh登錄的遠程主機上去;私人密匙要好好地保管防止別人知道你的私人密匙。用"ls -l ~/.ssh/identity"或"ls -l ~/.ssh/id_dsa"所顯示的文件的訪問權(quán)限必須是"-rw-------"。
如果你懷疑自己的密匙已經(jīng)被別人知道了,不要遲疑馬上生成一對新的密匙。當然,你還要重新分發(fā)一次公用密匙。
分發(fā)公用密匙
在每一個你需要用SSH連接的遠程服務(wù)器上,你要在自己的家目錄下創(chuàng)建一個".ssh"的子目錄,把你的公用密匙"identity.pub" 拷貝到這個目錄下并把它重命名為"authorized_keys"。然后執(zhí)行:
chmod 644 .ssh/authorized_keys
這一步是必不可少的。如果除了你之外別人對"authorized_keys"文件也有寫的權(quán)限,SSH就不會工作。
如果你想從不同的計算機登錄到遠程主機,"authorized_keys"文件也可以有多個公用密匙。在這種情況下,必須在新的計算機上重新生成一對密匙,然后把生成的"identify.pub"文件拷貝并粘貼到遠程主機的"authorized_keys"文件里。當然在新的計算機上你必須有一個帳號,而且密匙是用口令保護的。有一點很重要,就是當你取消了這個帳號之后,別忘了把這一對密匙刪掉。
配置SSH
配置客戶端的軟件
OpenSSH 有三種配置方式:命令行參數(shù)、用戶配置文件和系統(tǒng)級的配置文件("/etc/ssh/ssh_config")。命令行參數(shù)優(yōu)先于配置文件,用戶配置文件優(yōu)先于系統(tǒng)配置文件。所有的命令行的參數(shù)都能在配置文件中設(shè)置。因為在安裝的時候沒有默認的用戶配置文件,所以要把 "/etc/ssh/ssh_config"拷貝并重新命名為"~/.ssh/config"。
標準的配置文件大概是這樣的:
[lots of explanations and possible options listed]
# Be paranoid by default
Host *
ForwardAgent no
ForwardX11 no
FallBackToRsh no
還有很多選項的設(shè)置可以用"man ssh"查看"CONFIGURATION FILES"這一章。
配置文件是按順序讀取的。先設(shè)置的選項先生效。
假定你在www.foobar.com上有一個名為"bilbo"的帳號。而且你要把"ssh-agent"和"ssh-add"結(jié)合起來使用并且使用數(shù)據(jù)壓縮來加快傳輸速度。因為主機名太長了,你懶得輸入這么長的名字,用"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(偏執(zhí))"默認設(shè)置。如果有些選項沒有在配置文件或命令行中設(shè)置,那么還是使用默認的"paranoid"設(shè)置。
在我們上面舉的那個例子中,對于到www.foobar.com的SSH連接:"ForwardAgent"和"Compression"被設(shè)置為 "Yes";其它的設(shè)置選項(如果沒有用命令行參數(shù))"ForwardX11"和"FallBackToRsh"都被設(shè)置成"No"。
其它還有一些需要仔細看一看的設(shè)置選項是:
l CheckHostIP yes
這個選項用來進行IP地址的檢查以防止DNS欺騙。
l CompressionLevel
壓縮的級別從"1"(最快)到"9"(壓縮率最高)。默認值為"6"。
l ForwardX11 yes
為了在本地運行遠程的X程序必須設(shè)置這個選項。
l LogLevel DEBUG
當SSH出現(xiàn)問題的時候,這選項就很有用了。默認值為"INFO"。
配置服務(wù)端的軟件
SSH服務(wù)器的配置使用的是"/etc/ssh/sshd_config"配置文件,這些選項的設(shè)置在配置文件中已經(jīng)有了一些說明而且用"man sshd"也可以查看幫助。請注意OpenSSH對于SSH 1.x和2.x沒有不同的配置文件。
在默認的設(shè)置選項中需要注意的有:
l PermitRootLogin yes
最好把這個選項設(shè)置成"PermitRootLogin without-password",這樣"root"用戶就不能從沒有密匙的計算機上登錄。把這個選項設(shè)置成"no"將禁止"root"用戶登錄,只能用"su"命令從普通用戶轉(zhuǎn)成"root"。
l X11Forwarding no
把這個選項設(shè)置成"yes"允許用戶運行遠程主機上的X程序。就算禁止這個選項也不能提高服務(wù)器的安全因為用戶可以安裝他們自己的轉(zhuǎn)發(fā)器(forwarder),請參看"man sshd"。
l PasswordAuthentication yes
把這個選項設(shè)置為"no"只允許用戶用基于密匙的方式登錄。這當然會給那些經(jīng)常需要從不同主機登錄的用戶帶來麻煩,但是這能夠在很大程度上提高系統(tǒng)的安全性。基于口令的登錄方式有很大的弱點。
l # Subsystem /usr/local/sbin/sftpd
把最前面的#號去掉并且把路徑名設(shè)置成"/usr/bin/sftpserv",用戶就能使用"sftp"(安全的FTP)了(sftpserv在sftp 軟件包中)。因為很多用戶對FTP比較熟悉而且"scp"用起來也有一些麻煩,所以"sftp"還是很有用的。而且2.0.7版本以后的圖形化的ftp工具"gftp"也支持"sftp"。
拷貝文件
用"scp"拷貝文件
SSH提供了一些命令和shell用來登錄遠程服務(wù)器。在默認情況下它不允許你拷貝文件,但是還是提供了一個"scp"命令。
假定你想把本地計算機當前目錄下的一個名為"dumb"的文件拷貝到遠程服務(wù)器www.foobar.com上你的家目錄下。而且你在遠程服務(wù)器上的帳號名為"bilbo"??梢杂眠@個命令:
scp dumb bilbo@www.foobar.com:.
把文件拷貝回來用這個命令:
scp bilbo@www.foobar.com:dumb .
"scp"調(diào)用SSH進行登錄,然后拷貝文件,最后調(diào)用SSH關(guān)閉這個連接。
如果在你的"~/.ssh/config"文件中已經(jīng)為www.foobar.com做了這樣的配置:
Host *fbc
HostName www.foobar.com
User bilbo
ForwardAgent yes
那么你就可以用"fbc"來代替"bilbo@www.foobar.com",命令就簡化為"scp dumb fbc:."。
"scp"假定你在遠程主機上的家目錄為你的工作目錄。如果你使用相對目錄就要相對于家目錄。
用"scp"命令的"-r"參數(shù)允許遞歸地拷貝目錄。"scp"也可以在兩個不同的遠程主機之間拷貝文件。
有時候你可能會試圖作這樣的事:用SSH登錄到www.foobar.com上之后,輸入命令"scp [local machine]:dumb ."想用它把本地的"dumb"文件拷貝到你當前登錄的遠程服務(wù)器上。這時候你會看到下面的出錯信息:
ssh: secure connection to [local machine] refused
之所以會出現(xiàn)這樣的出錯信息是因為你運行的是遠程的"scp"命令,它試圖登錄到在你本地計算機上運行的SSH服務(wù)程序……所以最好在本地運行"scp"除非你的本地計算機也運行SSH服務(wù)程序。
用"sftp"拷貝文件
如果你習(xí)慣使用ftp的方式拷貝文件,可以試著用"sftp"。"sftp"建立用SSH加密的安全的FTP連接通道,允許使用標準的ftp命令。還有一個好處就是"sftp"允許你通過"exec"命令運行遠程的程序。從2.0.7版以后,圖形化的ftp客戶軟件"gftp"就支持"sftp"。
如果遠程的服務(wù)器沒有安裝sftp服務(wù)器軟件"sftpserv",可以把"sftpserv"的可執(zhí)行文件拷貝到你的遠程的家目錄中(或者在遠程計算機的 $PATH環(huán)境變量中設(shè)置的路徑)。"sftp"會自動激活這個服務(wù)軟件,你沒有必要在遠程服務(wù)器上有什么特殊的權(quán)限。
用"rsync"拷貝文件
"rsync" 是用來拷貝、更新和移動遠程和本地文件的一個有用的工具,很容易就可以用"-e ssh"參數(shù)和SSH結(jié)合起來使用。"rsync"的一個優(yōu)點就是,不會拷貝全部的文件,只會拷貝本地目錄和遠程目錄中有區(qū)別的文件。而且它還使用很高效的壓縮算法,這樣拷貝的速度就很快。
用"加密通道"的ftp拷貝文件
如果你堅持要用傳統(tǒng)的FTP客戶軟件。SSH可以為幾乎所有的協(xié)議提供"安全通道"。FTP是一個有一點奇怪的協(xié)議(例如需要兩個端口)而且不同的服務(wù)程序和服務(wù)程序之間、客戶程序和客戶程序之間還有一些差別。
實現(xiàn)"加密通道"的方法是使用"端口轉(zhuǎn)發(fā)"。你可以把一個沒有用到的本地端口(通常大于1000)設(shè)置成轉(zhuǎn)發(fā)到一個遠程服務(wù)器上,然后只要連接本地計算機上的這個端口就行了。有一點復(fù)雜是嗎?
其實一個基本的想法就是,轉(zhuǎn)發(fā)一個端口,讓SSH在后臺運行,用下面的命令:
ssh [user@remote host] -f -L 1234:[remote host]:21 tail -f /etc/motd
接著運行FTP客戶,把它設(shè)置到指定的端口:
lftp -u [username] -p 1234 localhost
當然,用這種方法很麻煩而且很容易出錯。所以最好使用前三種方法。
用SSH設(shè)置"加密通道"
"加密通道"的基礎(chǔ)知識
SSH 的"加密通道"是通過"端口轉(zhuǎn)發(fā)"來實現(xiàn)的。你可以在本地端口(沒有用到的)和在遠程服務(wù)器上運行的某個服務(wù)的端口之間建立"加密通道"。然后只要連接到本地端口。所有對本地端口的請求都被SSH加密并且轉(zhuǎn)發(fā)到遠程服務(wù)器的端口。當然只有遠程服務(wù)器上運行SSH服務(wù)器軟件的時候"加密通道"才能工作??梢杂孟旅婷顧z查一些遠程服務(wù)器是否運行SSH服務(wù):
telnet [full name of remote host] 22
如果收到這樣的出錯信息:
telnet: Unable to connect to remote host: Connection refused
就說明遠程服務(wù)器上沒有運行SSH服務(wù)軟件。
端口轉(zhuǎn)發(fā)使用這樣的命令語法:
ssh -f [username@remote host] -L [local port]:[full name of remote host]:[remote port] [some command]
你不僅可以轉(zhuǎn)發(fā)多個端口而且可以在"~/.ssh/config"文件中用"LocalForward"設(shè)置經(jīng)常使用的一些轉(zhuǎn)發(fā)端口。
為POP加上"加密通道"
你可以用POP協(xié)議從服務(wù)器上取email。為POP加上"加密通道"可以防止POP的密碼被網(wǎng)絡(luò)監(jiān)聽器(sniffer)監(jiān)聽到。還有一個好處就是SSH的壓縮方式可以讓郵件傳輸?shù)酶臁?br />假定你在pop.foobar.com上有一個POP帳號,你的用戶名是"bilbo"你的POP口令是"topsecret"。用來建立SSH"加密通道"的命令是:
ssh -f -C bilbo@pop.foobar.com -L 1234:pop.foobar.com:110 sleep 5
(如果要測試,可以把"sleep"的值加到500)。運行這個命令之后會提示你輸入POP口令:
bilbo@pop.foobar.com's password:
輸入口令之后就可以用"telnet"連接到本地的轉(zhuǎn)發(fā)端口了。
telnet localhost 1234
你會收到遠程mail服務(wù)器的"READY"消息。
當然,這個方法要求你手工輸入所有的POP命令,這是很不方便的??梢杂肍etchmail(參考how to configure Fetchmail)。Secure POP via SSH mini-HOWTO、man fetchmail和在"/usr/doc/fetchmail-[…]"目錄下的Fetchmail的FAQ都提供了一些具體的例子。
請注意IMAP協(xié)議使用的是不同的端口:IMAP v2的端口號為143而IMAP v3的端口號為220。
為X加上"加密通道"
如果你打算在本地計算機上運行遠程SSH服務(wù)器上的X程序,那么登錄到遠程的計算機上,創(chuàng)建一個名為"~/.ssh/environment"的文件并加上這一行:
XAUTHORITY=/home/[remote user name]/.Xauthority
(如果在遠程主機上你的家目錄下不存在".Xauthority"這個文件,那么當用SSH登錄的時候就會自動創(chuàng)建)。
比如啟動一個X程序(xterm)可以這個命令:
ssh -f -X -l [remote user name] [remote machine] xterm
這將在遠程運行xterm這個程序。其它的X程序也是用相同的方法。
為linuxconf加上"加密通道"
Linuxconf(http://www.solucorp.qc.ca/linuxconf/)是Linux的配置工具,它支持遠程管理。Linuxconf的FAQ重說明了如何通過SSH使用linuxconf:
其命令為:
remadmin --exec [link_command] linuxconf --guiproto
如果你想在兩臺計算機之間用加密的方式傳送信息,那么最好用ssh。命令是:
remadmin --exec ssh -l [account] linuxconf --guiproto
這是非常有效的而且運行用圖形界面管理計算機。
這種方法需要在客戶端安裝linuxconf。其它的方法還有直接登錄到服務(wù)器上用"X11Forwarding"或字符界面運行l(wèi)inuxconf。
為Webmin加上"加密通道"
Webmin(http://www.webmin.com/webmin/)是一個新的基于瀏覽器的配置工具。它運行在1000端口。你可以用SSH的"端口轉(zhuǎn)發(fā)"對它進行加密:
ssh -f -l [remote user name] [remote host] -L 1234:[remote host]:10000 tail -f /etc/motd
把瀏覽器指向
http://localhost:1234
版權(quán)說明
這篇文章翻譯和改編自:http://www.mandrakeuser.org/secure/index.html。英文版的版權(quán)屬于"MandrakeSoft SA and LSTB 1999/2000"。
中文版版權(quán)歸譯者brimmer(brimmer@linuxaid.com.cn)和www.linuxaid.com.cn站點所有。
本文遵循Open Content Public Licence。

標簽:烏蘭察布 防城港 韶關(guān) 南昌 撫州 臨沂 北海 邢臺

巨人網(wǎng)絡(luò)通訊聲明:本文標題《SSH使用指南》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    福建省| 芒康县| 青龙| 理塘县| 万安县| 嫩江县| 金华市| 竹北市| 松阳县| 苏尼特左旗| 德州市| 平潭县| 长子县| 米易县| 冕宁县| 韶关市| 中阳县| 龙南县| 南城县| 上饶县| 方山县| 大渡口区| 藁城市| 邳州市| 苏州市| 汾阳市| 江华| 临邑县| 全州县| 偏关县| 嘉荫县| 高陵县| 崇仁县| 碌曲县| 谢通门县| 赤城县| 东乡族自治县| 英吉沙县| 花莲市| 云龙县| 邯郸县|