(轉(zhuǎn))實(shí)戰(zhàn) SSH 端口轉(zhuǎn)發(fā)

實(shí)戰(zhàn) SSH 端口轉(zhuǎn)發(fā)

通過本文的介紹悲立,讀者可以從中了解到如何應(yīng)用 SSH 端口轉(zhuǎn)發(fā)機(jī)制來解決日常工作 / 生活中的一些問題。學(xué)會(huì)在非安全環(huán)境下使用端口轉(zhuǎn)發(fā)來加密網(wǎng)絡(luò)應(yīng)用栖雾,保護(hù)個(gè)人隱私以及重要商業(yè)信息赚爵。同時(shí)也能夠用此技術(shù)解決工作中一些常見問題看铆,例如解決防火墻及網(wǎng)絡(luò)應(yīng)用本身帶來的一些限制。

申 毅, 軟件工程師, IBM
邵 華, 軟件工程師, IBM
2009 年 10 月 31 日

第一部分 概述

當(dāng)你在咖啡館享受免費(fèi) WiFi 的時(shí)候剩彬,有沒有想到可能有人正在竊取你的密碼及隱私信息酷麦?當(dāng)你發(fā)現(xiàn)實(shí)驗(yàn)室的防火墻阻止了你的網(wǎng)絡(luò)應(yīng)用端口,是不是有苦難言喉恋?來看看 SSH 的端口轉(zhuǎn)發(fā)功能能給我們帶來什么好處吧沃饶!
端口轉(zhuǎn)發(fā)概述
讓我們先來了解一下端口轉(zhuǎn)發(fā)的概念吧。我們知道轻黑,SSH 會(huì)自動(dòng)加密和解密所有 SSH 客戶端與服務(wù)端之間的網(wǎng)絡(luò)數(shù)據(jù)糊肤。但是,SSH 還同時(shí)提供了一個(gè)非常有用的功能氓鄙,這就是端口轉(zhuǎn)發(fā)馆揉。它能夠?qū)⑵渌?TCP 端口的網(wǎng)絡(luò)數(shù)據(jù)通過 SSH 鏈接來轉(zhuǎn)發(fā),并且自動(dòng)提供了相應(yīng)的加密及解密服務(wù)玖详。這一過程有時(shí)也被叫做“隧道”(tunneling)把介,這是因?yàn)?SSH 為其他 TCP 鏈接提供了一個(gè)安全的通道來進(jìn)行傳輸而得名。例如蟋座,Telnet拗踢,SMTP,LDAP 這些 TCP 應(yīng)用均能夠從中得益向臀,避免了用戶名巢墅,密碼以及隱私信息的明文傳輸。而與此同時(shí)券膀,如果您工作環(huán)境中的防火墻限制了一些網(wǎng)絡(luò)端口的使用君纫,但是允許 SSH 的連接,那么也是能夠通過將 TCP 端口轉(zhuǎn)發(fā)來使用 SSH 進(jìn)行通訊芹彬⌒钏瑁總的來說 SSH 端口轉(zhuǎn)發(fā)能夠提供兩大功能:
加密 SSH Client 端至 SSH Server 端之間的通訊數(shù)據(jù)。
突破防火墻的限制完成一些之前無法建立的 TCP 連接舒帮。

SSH 端口轉(zhuǎn)發(fā)

如上圖所示会喝,使用了端口轉(zhuǎn)發(fā)之后陡叠,TCP 端口 A 與 B 之間現(xiàn)在并不直接通訊,而是轉(zhuǎn)發(fā)到了 SSH 客戶端及服務(wù)端來通訊肢执,從而自動(dòng)實(shí)現(xiàn)了數(shù)據(jù)加密并同時(shí)繞過了防火墻的限制枉阵。

第二部分 本地轉(zhuǎn)發(fā)與遠(yuǎn)程轉(zhuǎn)發(fā)

本地轉(zhuǎn)發(fā)實(shí)例分析
我們先來看第一個(gè)例子,在實(shí)驗(yàn)室里有一臺(tái) LDAP 服務(wù)器(LdapServerHost)预茄,但是限制了只有本機(jī)上部署的應(yīng)用才能直接連接此 LDAP 服務(wù)器兴溜。如果我們由于調(diào)試或者測(cè)試的需要想臨時(shí)從遠(yuǎn)程機(jī)器(LdapClientHost)直接連接到這個(gè) LDAP 服務(wù)器 , 有什么方法能夠?qū)崿F(xiàn)呢?
答案無疑是本地端口轉(zhuǎn)發(fā)了耻陕,它的命令格式是:
ssh -L <local port>:<remote host>:<remote port> <SSH hostname>

在 LdapClientHost 上執(zhí)行如下命令即可建立一個(gè) SSH 的本地端口轉(zhuǎn)發(fā)拙徽,例如:
$ ssh -L 7001:localhost:389 LdapServerHost

圖 2. 本地端口轉(zhuǎn)發(fā)


本地端口轉(zhuǎn)發(fā)

這里需要注意的是本例中我們選擇了 7001 端口作為本地的監(jiān)聽端口,在選擇端口號(hào)時(shí)要注意非管理員帳號(hào)是無權(quán)綁定 1-1023 端口的淮蜈,所以一般是選用一個(gè) 1024-65535 之間的并且尚未使用的端口號(hào)即可斋攀。
然后我們可以將遠(yuǎn)程機(jī)器(LdapClientHost)上的應(yīng)用直接配置到本機(jī)的 7001 端口上(而不是 LDAP 服務(wù)器的 389 端口上)。之后的數(shù)據(jù)流將會(huì)是下面這個(gè)樣子:
我們?cè)?LdapClientHost 上的應(yīng)用將數(shù)據(jù)發(fā)送到本機(jī)的 7001 端口上梧田,
而本機(jī)的 SSH Client 會(huì)將 7001 端口收到的數(shù)據(jù)加密并轉(zhuǎn)發(fā)到 LdapServertHost 的 SSH Server 上淳蔼。
SSH Server 會(huì)解密收到的數(shù)據(jù)并將之轉(zhuǎn)發(fā)到監(jiān)聽的 LDAP 389 端口上,
最后再將從 LDAP 返回的數(shù)據(jù)原路返回以完成整個(gè)流程裁眯。

我們可以看到鹉梨,這整個(gè)流程應(yīng)用并沒有直接連接 LDAP 服務(wù)器,而是連接到了本地的一個(gè)監(jiān)聽端口穿稳,但是 SSH 端口轉(zhuǎn)發(fā)完成了剩下的所有事情存皂,加密,轉(zhuǎn)發(fā)逢艘,解密旦袋,通訊。
這里有幾個(gè)地方需要注意:
SSH 端口轉(zhuǎn)發(fā)是通過 SSH 連接建立起來的它改,我們必須保持這個(gè) SSH 連接以使端口轉(zhuǎn)發(fā)保持生效疤孕。一旦關(guān)閉了此連接,相應(yīng)的端口轉(zhuǎn)發(fā)也會(huì)隨之關(guān)閉央拖。
我們只能在建立 SSH 連接的同時(shí)創(chuàng)建端口轉(zhuǎn)發(fā)祭阀,而不能給一個(gè)已經(jīng)存在的 SSH 連接增加端口轉(zhuǎn)發(fā)。
你可能會(huì)疑惑上面命令中的 <remote host> 為什么用 localhost鲜戒,它指向的是哪臺(tái)機(jī)器呢专控?在本例中,它指向 LdapServertHost 遏餐。我們?yōu)槭裁从?localhost 而不是 IP 地址或者主機(jī)名呢伦腐?其實(shí)這個(gè)取決于我們之前是如何限制 LDAP 只有本機(jī)才能訪問。如果只允許 lookback 接口訪問的話失都,那么自然就只有 localhost 或者 IP 為 127.0.0.1 才能訪問了蔗牡,而不能用真實(shí) IP 或者主機(jī)名颖系。
命令中的 <remote host> 和 <SSH hostname> 必須是同一臺(tái)機(jī)器么?其實(shí)是不一定的辩越,它們可以是兩臺(tái)不同的機(jī)器。我們?cè)诤竺娴睦永飼?huì)詳細(xì)闡述這點(diǎn)信粮。
好了黔攒,我們已經(jīng)在 LdapClientHost 建立了端口轉(zhuǎn)發(fā),那么這個(gè)端口轉(zhuǎn)發(fā)可以被其他機(jī)器使用么强缘?比如能否新增加一臺(tái) LdapClientHost2 來直接連接 LdapClientHost 的 7001 端口督惰?答案是不行的,在主流 SSH 實(shí)現(xiàn)中旅掂,本地端口轉(zhuǎn)發(fā)綁定的是 lookback 接口赏胚,這意味著只有 localhost 或者 127.0.0.1 才能使用本機(jī)的端口轉(zhuǎn)發(fā) , 其他機(jī)器發(fā)起的連接只會(huì)得到“ connection refused. ”。好在 SSH 同時(shí)提供了 GatewayPorts 關(guān)鍵字商虐,我們可以通過指定它與其他機(jī)器共享這個(gè)本地端口轉(zhuǎn)發(fā)觉阅。ssh -g -L <local port>:<remote host>:<remote port> <SSH hostname>

遠(yuǎn)程轉(zhuǎn)發(fā)實(shí)例分析
我們來看第二個(gè)例子,這次假設(shè)由于網(wǎng)絡(luò)或防火墻的原因我們不能用 SSH 直接從 LdapClientHost 連接到 LDAP 服務(wù)器(LdapServertHost)秘车,但是反向連接卻是被允許的典勇。那此時(shí)我們的選擇自然就是遠(yuǎn)程端口轉(zhuǎn)發(fā)了。
它的命令格式是:
ssh -R <local port>:<remote host>:<remote port> <SSH hostname>

例如在 LDAP 服務(wù)器(LdapServertHost)端執(zhí)行如下命令:
$ ssh -R 7001:localhost:389 LdapClientHost

遠(yuǎn)程端口轉(zhuǎn)發(fā)

和本地端口轉(zhuǎn)發(fā)相比叮趴,這次的圖里割笙,SSH Server 和 SSH Client 的位置對(duì)調(diào)了一下,但是數(shù)據(jù)流依然是一樣的眯亦。我們?cè)?LdapClientHost 上的應(yīng)用將數(shù)據(jù)發(fā)送到本機(jī)的 7001 端口上伤溉,而本機(jī)的 SSH Server 會(huì)將 7001 端口收到的數(shù)據(jù)加密并轉(zhuǎn)發(fā)到 LdapServertHost 的 SSH Client 上。 SSH Client 會(huì)解密收到的數(shù)據(jù)并將之轉(zhuǎn)發(fā)到監(jiān)聽的 LDAP 389 端口上妻率,最后再將從 LDAP 返回的數(shù)據(jù)原路返回以完成整個(gè)流程乱顾。
看到這里,你是不是會(huì)有點(diǎn)糊涂了么舌涨?為什么叫本地轉(zhuǎn)發(fā)糯耍,而有時(shí)又叫遠(yuǎn)程轉(zhuǎn)發(fā)?這兩者有什么區(qū)別囊嘉?
本地轉(zhuǎn)發(fā)與遠(yuǎn)程轉(zhuǎn)發(fā)的對(duì)比與分析
不錯(cuò)温技,SSH Server,SSH Client扭粱,LdapServertHost舵鳞,LdapClientHost,本地轉(zhuǎn)發(fā)琢蛤,遠(yuǎn)程轉(zhuǎn)發(fā)蜓堕,這么多的名詞的確容易讓人糊涂抛虏。讓我們來分析一下其中的結(jié)構(gòu)吧。首先套才,SSH 端口轉(zhuǎn)發(fā)自然需要 SSH 連接迂猴,而 SSH 連接是有方向的,從 SSH Client 到 SSH Server 背伴。而我們的應(yīng)用也是有方向的沸毁,比如需要連接 LDAP Server 時(shí),LDAP Server 自然就是 Server 端傻寂,我們應(yīng)用連接的方向也是從應(yīng)用的 Client 端連接到應(yīng)用的 Server 端息尺。如果這兩個(gè)連接的方向一致,那我們就說它是本地轉(zhuǎn)發(fā)疾掰。而如果兩個(gè)方向不一致搂誉,我們就說它是遠(yuǎn)程轉(zhuǎn)發(fā)。
我們可以回憶上面的兩個(gè)例子來做個(gè)對(duì)照静檬。
本地轉(zhuǎn)發(fā)時(shí):
LdapClientHost 同時(shí)是應(yīng)用的客戶端炭懊,也是 SSH Client,這兩個(gè)連接都從它指向 LdapServertHost(既是 LDAP 服務(wù)端巴柿,也是 SSH Server)凛虽。
遠(yuǎn)程轉(zhuǎn)發(fā)時(shí):
LdapClientHost 是應(yīng)用的客戶端,但卻是 SSH Server 广恢;而 LdapServertHost 是 LDAP 的服務(wù)端凯旋,但卻是 SSH Client 。這樣兩個(gè)連接的方向剛好相反钉迷。
另一個(gè)方便記憶的方法是至非,Server 端的端口都是預(yù)定義的固定端口(SSH Server 的端口 22,LDAP 的端口 389)糠聪,而 Client 端的端口都是動(dòng)態(tài)可供我們選擇的端口(如上述例子中選用的 7001 端口)荒椭。如果 Server 端的兩個(gè)端口都在同一臺(tái)機(jī)器,Client 端的兩個(gè)端口都在另一臺(tái)機(jī)器上舰蟆,那么這就是本地連接趣惠;如果這四個(gè)端口交叉分布在兩個(gè)機(jī)器上,每臺(tái)機(jī)器各有一個(gè) Server 端端口身害,一個(gè) Client 端端口味悄,那就是遠(yuǎn)程連接。
弄清楚了兩者的區(qū)別之后塌鸯,再來看看兩者的相同之處侍瑟。如果你所在的環(huán)境下,既允許 LdapClientHost 發(fā)起 SSH 連接到 LdapServerHost,也允許 LdapServerHost 發(fā)起 SSH 連接到 LdapClientHost 涨颜。那么這時(shí)我們選擇本地轉(zhuǎn)發(fā)或遠(yuǎn)程轉(zhuǎn)發(fā)都是可以的费韭,能完成一樣的功能。
接著讓我們來看個(gè)進(jìn)階版的端口轉(zhuǎn)發(fā)庭瑰。我們之前涉及到的各種連接 / 轉(zhuǎn)發(fā)都只涉及到了兩臺(tái)機(jī)器星持,還記得我們?cè)诒镜剞D(zhuǎn)發(fā)中提到的一個(gè)問題么?本地轉(zhuǎn)發(fā)命令中的 <remote host> 和 <SSH hostname> 可以是不同的機(jī)器么弹灭?
ssh -L <local port>:<remote host>:<remote port> <SSH hostname>

答案是可以的钉汗!讓我們來看一個(gè)涉及到四臺(tái)機(jī)器 (A,B,C,D) 的例子。
圖 4. 多主機(jī)轉(zhuǎn)發(fā)應(yīng)用

多主機(jī)轉(zhuǎn)發(fā)應(yīng)用
在 SSH Client(C) 執(zhí)行下列命令來建立 SSH 連接以及端口轉(zhuǎn)發(fā):
$ ssh -g -L 7001:<B>:389 <D>

然后在我們的應(yīng)用客戶端(A)上配置連接機(jī)器(C )的 7001 端口即可鲤屡。注意我們?cè)诿钪兄付恕?-g ”參數(shù)以保證機(jī)器(A)能夠使用機(jī)器(C)建立的本地端口轉(zhuǎn)發(fā)。而另一個(gè)值得注意的地方是福侈,在上述連接中酒来,(A)<-> (C) 以及 (B)<->(D) 之間的連接并不是安全連接,它們之間沒有經(jīng)過 SSH 的加密及解密肪凛。如果他們之間的網(wǎng)絡(luò)并不是值得信賴的網(wǎng)絡(luò)連接堰汉,我們就需要謹(jǐn)慎使用這種連接方式了。

第三部分 其他類型的轉(zhuǎn)發(fā)

動(dòng)態(tài)轉(zhuǎn)發(fā)實(shí)例分析
恩伟墙,動(dòng)態(tài)轉(zhuǎn)發(fā)翘鸭,聽上去很酷。當(dāng)你看到這里時(shí)戳葵,有沒有想過我們已經(jīng)討論過了本地轉(zhuǎn)發(fā)就乓,遠(yuǎn)程轉(zhuǎn)發(fā),但是前提都是要求有一個(gè)固定的應(yīng)用服務(wù)端的端口號(hào)拱烁,例如前面例子中的 LDAP 服務(wù)端的 389 端口生蚁。那如果沒有這個(gè)端口號(hào)怎么辦?等等戏自,什么樣的應(yīng)用會(huì)沒有這個(gè)端口號(hào)呢邦投?嗯,比如說用瀏覽器進(jìn)行 Web 瀏覽擅笔,比如說 MSN 等等志衣。
當(dāng)我們?cè)谝粋€(gè)不安全的 WiFi 環(huán)境下上網(wǎng),用 SSH 動(dòng)態(tài)轉(zhuǎn)發(fā)來保護(hù)我們的網(wǎng)頁瀏覽及 MSN 信息無疑是十分必要的猛们。讓我們先來看一下動(dòng)態(tài)轉(zhuǎn)發(fā)的命令格式:
$ ssh -D <local port> <SSH Server>

例如:
$ ssh -D 7001 <SSH Server>

動(dòng)態(tài)端口轉(zhuǎn)發(fā)
似乎很簡(jiǎn)單念脯,我們依然選擇了 7001 作為本地的端口號(hào),其實(shí)在這里 SSH 是創(chuàng)建了一個(gè) SOCKS 代理服務(wù)阅懦。來看看幫助文檔中對(duì) -D 參數(shù)的描述:
-D port This works by allocating a socket to listen to port on the local side, and whenever a connection is made to this port, the con- nection is forwarded over the secure channel, and the applica- tion protocol is then used to determine where to connect to from the remote machine. Currently the SOCKS4 and SOCKS5 protocols are supported, and ssh will act as a SOCKS server. Only root can forward privileged ports. Dynamic port forwardings can also be specified in the configuration file.

之后的使用就簡(jiǎn)單了和二,我們可以直接使用 localhost:7001 來作為正常的 SOCKS 代理來使用,直接在瀏覽器或 MSN 上設(shè)置即可耳胎。在 SSH Client 端無法訪問的網(wǎng)站現(xiàn)在也都可以正常瀏覽惯吕。而這里需要值得注意的是惕它,此時(shí) SSH 所包護(hù)的范圍只包括從瀏覽器端(SSH Client 端)到 SSH Server 端的連接,并不包含從 SSH Server 端 到目標(biāo)網(wǎng)站的連接废登。如果后半截連接的安全不能得到充分的保證的話淹魄,這種方式仍不是合適的解決方案。
X 協(xié)議轉(zhuǎn)發(fā)實(shí)例分析
好了堡距,讓我們來看最后一個(gè)例子 - X 協(xié)議轉(zhuǎn)發(fā)甲锡。
我們?nèi)粘9ぷ鳟?dāng)中,可能會(huì)經(jīng)常會(huì)遠(yuǎn)程登錄到 Linux/Unix/Solaris/HP 等機(jī)器上去做一些開發(fā)或者維護(hù)羽戒,也經(jīng)常需要以 GUI 方式運(yùn)行一些程序缤沦,比如要求圖形化界面來安裝 DB2/WebSphere 等等。這時(shí)候通常有兩種選擇來實(shí)現(xiàn):VNC 或者 X 窗口易稠,讓我們來看看后者缸废。
使用 X 窗口通常需要分別安裝:X Client 和 X Server 。在本例中我們的 X Client 就是所訪問的遠(yuǎn)程 Linux/Unix/Solaris/HP驶社,而我們的 X Server 則是發(fā)起訪問的本地機(jī)器(例如你面前正在使用的筆記本或臺(tái)式機(jī))企量。把 X Client 端的 X 窗口顯示在 X Server 端需要先行在 X Client 端指定 X Server 的位置,命令格式如下:
export DISPLAY=<X Server IP>:<display #>.<virtual #>

例如:
export DISPLAY=myDesktop:1.0

然后直接運(yùn)行 X 應(yīng)用即可亡电,X 窗口就會(huì)自動(dòng)在我們的本地端打開届巩。
一切運(yùn)行正常,但是份乒,這時(shí)候 IT 部門突然在遠(yuǎn)程 Linux/Unix/Solaris/HP 前面加了一道防火墻恕汇。非常不幸的是,X 協(xié)議并不在允許通過的列表之內(nèi)冒嫡。怎么辦拇勃?只能使用 VNC 了么?不孝凌,其實(shí)只要使用了 SSH 端口轉(zhuǎn)發(fā)即可通過方咆,同時(shí)也對(duì) X 通訊數(shù)據(jù)做了加密,真是一舉兩得蟀架。(當(dāng)然瓣赂,使用此方法前最好先咨詢相關(guān) IT 部門是否符合相應(yīng)的安全條例,以免造成違規(guī)操作片拍。)
建立命令也很簡(jiǎn)單煌集,直接從本地機(jī)器(X Server 端)發(fā)起一個(gè)如下的 SSH 連接即可:
$ ssh -X <SSH Server>

X 轉(zhuǎn)發(fā)

建立連接之后就可以直接運(yùn)行遠(yuǎn)程的 X 應(yīng)用。注意建立 X 轉(zhuǎn)發(fā)之后會(huì)自動(dòng)設(shè)置 DISPLAY 環(huán)境變量捌省,通常會(huì)被設(shè)置成localhost:10.0
苫纤,我們無需也不應(yīng)該在連接之后再進(jìn)行修改此環(huán)境變量。
一個(gè)比較常見的場(chǎng)景是,我們的本地機(jī)器是 Windows 操作系統(tǒng)卷拘,這時(shí)可以選擇開源的 XMing 來作為我們的 XServer喊废,而 SSH Client 則可以任意選擇了,例如 PuTTY栗弟,Cygwin 均可以配置 訪問 SSH 的同時(shí)建立 X 轉(zhuǎn)發(fā)污筷。

第四部分 總結(jié)

至此,我們已經(jīng)完成了本地端口轉(zhuǎn)發(fā)乍赫,遠(yuǎn)程端口轉(zhuǎn)發(fā)瓣蛀,動(dòng)態(tài)端口轉(zhuǎn)發(fā)以及 X 轉(zhuǎn)發(fā)的介紹±壮В回顧起來惋增,總的思路是通過將 TCP 連接轉(zhuǎn)發(fā)到 SSH 通道上以解決數(shù)據(jù)加密以及突破防火墻的種種限制。對(duì)一些已知端口號(hào)的應(yīng)用改鲫,例如 Telnet/LDAP/SMTP器腋,我們可以使用本地端口轉(zhuǎn)發(fā)或者遠(yuǎn)程端口轉(zhuǎn)發(fā)來達(dá)到目的。動(dòng)態(tài)端口轉(zhuǎn)發(fā)則可以實(shí)現(xiàn) SOCKS 代理從而加密以及突破防火墻對(duì) Web 瀏覽的限制钩杰。對(duì)于 X 應(yīng)用,無疑是 X 轉(zhuǎn)發(fā)最為適用了诊县。雖然每一部分我們都只是簡(jiǎn)單的介紹了一下讲弄,但如果能靈活應(yīng)用這些技巧,相信對(duì)我們的日常生活 / 工作也是會(huì)有所幫助的依痊。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末避除,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子胸嘁,更是在濱河造成了極大的恐慌瓶摆,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件性宏,死亡現(xiàn)場(chǎng)離奇詭異群井,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)毫胜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門书斜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人酵使,你說我怎么就攤上這事荐吉。” “怎么了口渔?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵样屠,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng)痪欲,這世上最難降的妖魔是什么悦穿? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮勤揩,結(jié)果婚禮上咧党,老公的妹妹穿的比我還像新娘。我一直安慰自己陨亡,他們只是感情好傍衡,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著负蠕,像睡著了一般蛙埂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上遮糖,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天绣的,我揣著相機(jī)與錄音,去河邊找鬼欲账。 笑死屡江,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的赛不。 我是一名探鬼主播惩嘉,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼踢故!你這毒婦竟也來了文黎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤殿较,失蹤者是張志新(化名)和其女友劉穎耸峭,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體淋纲,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡劳闹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了洽瞬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片玷或。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖片任,靈堂內(nèi)的尸體忽然破棺而出偏友,到底是詐尸還是另有隱情,我是刑警寧澤对供,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布位他,位于F島的核電站氛濒,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏鹅髓。R本人自食惡果不足惜舞竿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望窿冯。 院中可真熱鬧骗奖,春花似錦、人聲如沸醒串。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芜赌。三九已至仰挣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缠沈,已是汗流浹背膘壶。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留洲愤,地道東北人颓芭。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像柬赐,于是被迫代替她去往敵國和親畜伐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 第一部分 概述當(dāng)你在咖啡館享受免費(fèi) WiFi 的時(shí)候躺率,有沒有想到可能有人正在竊取你的密碼及隱私信息?當(dāng)你發(fā)現(xiàn)實(shí)驗(yàn)室...
    fastjrun閱讀 1,147評(píng)論 0 8
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理万矾,服務(wù)發(fā)現(xiàn)悼吱,斷路器,智...
    卡卡羅2017閱讀 134,599評(píng)論 18 139
  • ??本文將介紹兩種應(yīng)用場(chǎng)景的SSH端口轉(zhuǎn)發(fā)良狈,分別是SSH本地轉(zhuǎn)發(fā)以及SSH遠(yuǎn)程轉(zhuǎn)發(fā)后添。 簡(jiǎn)介 ??SSH(Secur...
    KingFighting閱讀 1,462評(píng)論 0 5
  • 名詞延伸 通俗的說严嗜,域名就相當(dāng)于一個(gè)家庭的門牌號(hào)碼粱檀,別人通過這個(gè)號(hào)碼可以很容易的找到你。如果把IP地址比作一間房子...
    楊大蝦閱讀 20,588評(píng)論 2 57
  • 心理學(xué)家阿德勒曾說過:“只有那些生活封閉漫玄、對(duì)人不感興趣和無法與人合作的人茄蚯,才會(huì)患上神經(jīng)官能癥和精神錯(cuò)亂压彭。”這種生活...
    公共交通閱讀 171評(píng)論 0 0