[玩轉(zhuǎn)樹莓派] 0x02 吊炸天的遠(yuǎn)程控制

[TOC]

[玩轉(zhuǎn)樹莓派] 吊炸天的遠(yuǎn)程控制

Connect to Raspberry Pi

安裝好了系統(tǒng)娱颊,接下來我們就可以開始操作 Raspberry Pi 了郭膛。如果你不是拿來做家庭媒體中心横堡,看視頻之類粪薛,我們完全不需要給 Raspberry Pi 配置顯示器掘宪,通過遠(yuǎn)程連接工具就可以完成我們所有的日常操作穴肘。由于連接顯示器操作比較直觀歇盼,這里僅給大家介紹無顯示器的遠(yuǎn)程操作方法。

0x01 SSH

先看一段介紹评抚,來自維基百科

Secure Shell(縮寫為SSH)豹缀,由IETF的網(wǎng)絡(luò)工作小組(Network Working Group)所制定;SSH為一項(xiàng)創(chuàng)建在應(yīng)用層和傳輸層基礎(chǔ)上的安全協(xié)議慨代,為計(jì)算機(jī)上的Shell(殼層)提供安全的傳輸和使用環(huán)境邢笙。
傳統(tǒng)的網(wǎng)絡(luò)服務(wù)程序,如rsh鱼响、FTP鸣剪、POP和Telnet其本質(zhì)上都是不安全的;因?yàn)樗鼈冊(cè)诰W(wǎng)絡(luò)上用明文傳送數(shù)據(jù)、用戶帳號(hào)和用戶口令筐骇,很容易受到中間人(man-in-the-middle)攻擊方式的攻擊债鸡。就是存在另一個(gè)人或者一臺(tái)機(jī)器冒充真正的服務(wù)器接收用戶傳給服務(wù)器的數(shù)據(jù),然后再冒充用戶把數(shù)據(jù)傳給真正的服務(wù)器铛纬。
而SSH是目前較可靠厌均,專為遠(yuǎn)程登錄會(huì)話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議。利用SSH協(xié)議可以有效防止遠(yuǎn)程管理過程中的信息泄露問題告唆。通過SSH可以對(duì)所有傳輸?shù)臄?shù)據(jù)進(jìn)行加密棺弊,也能夠防止DNS欺騙和IP欺騙。
SSH之另一項(xiàng)優(yōu)點(diǎn)為其傳輸?shù)臄?shù)據(jù)可以是經(jīng)過壓縮的擒悬,所以可以加快傳輸?shù)乃俣饶KSH有很多功能,它既可以代替Telnet懂牧,又可以為FTP侈净、POP、甚至為PPP提供一個(gè)安全的“通道”。

上面的介紹是不是太抽象~~還是我來說吧。折騰 Raspberry Pi 阳惹,ssh作為一個(gè)重要的遠(yuǎn)程連接工具(或者理解為把 Raspberry Pi 的終端拿到本地來)泣矛,日常操作中是必不可少的!在沒有顯示器的情況下,我們可以使用ssh完成絕大多數(shù)(甚至所有的)操作。因此,這里我必須著重介紹验懊。我們裝的 Raspbian 系統(tǒng)默認(rèn)是打開ssh的(否則在沒有顯示器的情況下我們是無法操作的,當(dāng)然你非得說用USB轉(zhuǎn)TTL也行)盯孙,因此鲁森,我們不需要做任何配置就可以直接使用ssh。

安裝SSH

Windows系統(tǒng)推薦使用免費(fèi)振惰、小巧歌溉、無需安裝、并且功能強(qiáng)大的ssh工具骑晶。

PuTTY 是一個(gè)Telnet痛垛、SSH、rlogin桶蛔、純TCP以及串行接口連接軟件匙头。

大家可以到他的官網(wǎng)下載,或者到這里下載仔雷,非常小蹂析,519KB舔示。打開是界面如下:

PuTTY

使用也是非常的簡單,在 Host Name(or IP address) 中填入你的域名或者IP电抚,在 Port 中填入你的端口惕稻,默認(rèn)是 22 (如果你修改了默認(rèn)端口,在此改成新的端口即可)蝙叛,然后點(diǎn)擊 Open 就開始連接俺祠,打開一個(gè) terminal ,按照提示操作即可:

PuTTY login

Mac和Linux系統(tǒng)中默認(rèn)已經(jīng)安裝了 ssh 工具蜘渣,我們可以直接在命令行中操作即可:

?  ~ ssh -V
OpenSSH_6.9p1, LibreSSL 2.1.8
?  ~ ssh
usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-E log_file] [-e escape_char]
           [-F configfile] [-I pkcs11] [-i identity_file]
           [-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec]
           [-O ctl_cmd] [-o option] [-p port]
           [-Q cipher | cipher-auth | mac | kex | key]
           [-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port]
           [-w local_tun[:remote_tun]] [user@]hostname [command]
?  ~

使用SSH

ssh的使用比較簡單,直接在我們本地的終端中輸入 ssh pi@<your domain or ip> 命令肺然,按照提示輸入密碼即可:

?  ~ ssh pi@ttdevs.com
pi@ttdevs.com's password:

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Mar 31 17:38:44 2016 from 58.11.22.33
pi@raspberry:~ $

完成ssh的登錄蔫缸,你就可以在本地直接操作 Raspberry Pi 了狰挡,而且體驗(yàn)和直接登錄 Raspberry Pi 操作一樣捂龄。

修改端口號(hào)

如果你跟我一樣比較悲催——22端口 也 被電信封了(或者很不穩(wěn)定),那你就需要給ssh換(或者增加)一個(gè)端口加叁。如何判斷22端口是否被封了?最簡單就是如果你在內(nèi)網(wǎng)通過ssh可以訪問Raspberry Pi唇撬,外網(wǎng)卻訪問不了,那么22端口就有可能被運(yùn)營商或者你的防火墻給封了窖认。既然端口有問題,那最簡單的辦法換個(gè)端口扑浸,就可以規(guī)避這個(gè)問題烧给,下面介紹如何操作:

  • 編輯ssh配置文件 /etc/ssh/sshd_config 修改端口

    sudo nano /etc/ssh/sshd_config
    
    # Package generated configuration file
    # See the sshd_config(5) manpage for details
    
    # What ports, IPs and protocols we listen for
    Port 22
    Port 2333
    ...
    

    找到Port 22,在這行下面增加一行 Port 2333喝噪。當(dāng)然你也可以直接把22改成你要設(shè)置的端口號(hào)础嫡。他們的區(qū)別是:增加一行可以增加一個(gè)ssh端口號(hào)。如上面的寫法酝惧,我可以使用ssh通過 22 或 2333 端口來訪問Raspberry Pi。

  • 使配置生效

    1. 重啟ssh:sudo service ssh restart
    2. 最簡單你也可以直接重啟設(shè)備:sudo reboot or sudo init 6
  • 使用新端口登錄

    使用新端口的登錄方式如下:
    ssh -p <your new port> <username>@<ip-address or domain>
    如: ssh -p 2333 pi@ttdevs.com

無密碼登錄

無密碼登錄就是把我們從每次登錄 Raspberry Pi 都需要輸入密碼的繁瑣中解脫出來晚唇。配置完成后,我們只需要 ssh <your domain or ip> 即可登錄我們的設(shè)備而不需要輸入密碼哩陕。

這個(gè)配置很簡單赫舒,只需要將我們的public秘鑰傳到Raspberry Pi的 ~/.ssh/authorized_keys 文件中即可闽瓢。執(zhí)行下面的命令(假設(shè)你的本地已經(jīng)生成了相關(guān)的key):

cat ~/.ssh/id_rsa.pub | ssh <username>@<ip-address or domain> 'cat >> .ssh/authorized_keys'

其中id_rsa.pub為你的公鑰接癌。如果沒有問題鸳粉,當(dāng)你再次嘗試使用ssh登錄的話就不需要密碼了扔涧。如果有問題届谈,請(qǐng)參考這里枯夜。

0x02 VNC

雖然ssh可以完成我們的絕大多說操作艰山。但是如果習(xí)慣了圖形界面的你,一時(shí)半會(huì)很難上手這種命令行方式曙搬,會(huì)想有個(gè)桌面操作環(huán)境,那接下來我們介紹下VNC纵装,因?yàn)樗梢詽M足你對(duì)GUI的要求。VNC的配置橡娄,我們可以在如下 Raspberry Pi 官方文檔中找到。當(dāng)然挽唉,你也可以到VNC的官方網(wǎng)站查看。

安裝VNC

  • 安裝VNC

    我們可以使用這個(gè)命令來安裝VNC服務(wù): sudo apt-get install tightvncserver

  • 設(shè)置密碼

    在啟動(dòng)服務(wù)之前瓶籽,我們需要設(shè)置一個(gè)訪問密碼,命令為tightvncserver塑顺,操作如下:

    pi@raspberrypi:~/.vnc $ tightvncserver
    perl: warning: Setting locale failed.
    perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LC_CTYPE = "zh_CN.UTF-8",
        LANG = "en_GB.UTF-8"
        are supported and installed on your system.
    perl: warning: Falling back to a fallback locale ("en_GB.UTF-8").
    
    You will require a password to access your desktops.
    
    Password:
    Verify:
    Would you like to enter a view-only password (y/n)? y
    Password:
    Warning: password truncated to the length of 8.
    Verify:
    
    New 'X' desktop is raspberrypi:5
    
    Starting applications specified in /home/pi/.vnc/xstartup
    Log file is /home/pi/.vnc/raspberrypi:5.log
    
    pi@raspberrypi:~/.vnc $
    

    PS:密碼無回顯

  • 運(yùn)行一個(gè)vnc display

    vncserver :1 -geometry 1920x1080 -depth 24

    這樣你就可以通過VNC客戶端(如:VNC Viewer)連接到我們的樹莓派了,客戶端的配置茬暇,你可以參考這里。下面是我的效果圖:

    VNC Viewer
    VNC Viewer logined
    1. VNC Viewer中我們需要指定連接哪個(gè)display糙俗,由于我們上面用的是 display 1勒奇,因此地址寫:ttdevs.com:1
    2. 另外,上面的命令是在display 1位置啟動(dòng)巧骚,如果你考慮節(jié)省資源可以關(guān)閉display 0赊颠,執(zhí)行命令:service lightdm stop

配置VNC自啟動(dòng)

通過上面的配置我們就可以使用VNC了,但是如果我們重新啟動(dòng)設(shè)備竣蹦,之前的配置失效,VNC就連不上了痘括。因此最好能把啟動(dòng)VNC的操作添加到系統(tǒng)的自啟動(dòng)項(xiàng)中。具體操作如下:

  • 切換到root賬戶:sudo su

  • 進(jìn)到/etc/init.d/目錄:cd /etc/init.d/

  • 創(chuàng)建vncboot文件:touch vncboot

  • 編輯vncboot文件纲菌,輸入下面內(nèi)容:sudo nano vncboot

    #! /bin/sh
    # /etc/init.d/vncboot
    
    ### BEGIN INIT INFO
    # Provides: vncboot
    # Required-Start: $remote_fs $syslog
    # Required-Stop: $remote_fs $syslog
    # Default-Start: 2 3 4 5
    # Default-Stop: 0 1 6
    # Short-Description: Start VNC Server at boot time
    # Description: Start VNC Server at boot time.
    ### END INIT INFO
    
    USER=pi
    HOME=/home/pi
    
    export USER HOME
    
    case "$1" in
     start)
      echo "Starting VNC Server"
      #Insert your favoured settings for a VNC session
      su - $USER -c "/usr/bin/vncserver :1 -geometry 1280x800 -depth 16 -pixelformat rgb565"
      ;;
    
     stop)
      echo "Stopping VNC Server"
      /usr/bin/vncserver -kill :1
      ;;
    
     *)
      echo "Usage: /etc/init.d/vncboot {start|stop}"
      exit 1
      ;;
    esac
    
    exit 0
    
  • 修改vncboot的權(quán)限:chmod 755 vncboot

  • 設(shè)置VNC為默認(rèn)啟動(dòng):update-rc.d vncboot defaults

  • 最后,完整腳本如下

    pi@raspberrypi:~ $ sudo su
    root@raspberrypi:/home/pi# cd /etc/init.d/
    root@raspberrypi:/etc/init.d# touch vncboot
    root@raspberrypi:/etc/init.d# sudo nano vncboot
    root@raspberrypi:/etc/init.d# chmod 755 vncboot
    root@raspberrypi:/etc/init.d# update-rc.d vncboot defaults
    perl: warning: Setting locale failed.
    perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LC_CTYPE = "zh_CN.UTF-8",
        LANG = "en_GB.UTF-8"
        are supported and installed on your system.
    perl: warning: Falling back to a fallback locale ("en_GB.UTF-8").
    root@raspberrypi:/etc/init.d# ls -al
    total 308
    drwxr-xr-x   2 root root  4096 Mar 22 05:41 .
    drwxr-xr-x 109 root root  4096 Mar 21 15:01 ..
    -rw-r--r--   1 root root  1745 Mar 22 05:43 .depend.boot
    -rw-r--r--   1 root root   930 Mar 22 05:43 .depend.start
    -rw-r--r--   1 root root  1009 Mar 22 05:43 .depend.stop
    -rw-r--r--   1 root root  2427 Apr  6  2015 README
    ...
    -rwxr-xr-x   1 root root   699 Mar 22 05:42 vncboot
    -rwxr-xr-x   1 root root  2666 Sep 25  2013 x11-common
    
    root@raspberrypi:/etc/init.d# reboot
    

密碼管理

VNC的密碼管理比較簡單嚣潜,詳細(xì)描述可以參考這里椅贱,下面做簡單描述:

  1. 修改密碼 vncpasswd

    pi@raspberrypi:~ $ vncpasswd
    Using password file /home/pi/.vnc/passwd
    Password:
    Verify:
    Would you like to enter a view-only password (y/n)? y
    Password:
    Warning: password truncated to the length of 8.
    Verify:
    pi@raspberrypi:~ $
    

    PS:設(shè)置新的密碼懂算,好像并不會(huì)驗(yàn)證你的舊密碼

  2. 忘記密碼

    VNC的密碼文件存儲(chǔ)在:$HOME/.vnc/passwd中庇麦,如果你忘記了VNC的密碼,可以直接刪除這個(gè)文件山橄,運(yùn)行 tightvncserver 即可使用新的密碼。

其他說明

  • VNC默認(rèn)端口號(hào):5901
  • VNC配置文件:~/.vnc
  • VNC密碼文件:/.vnc/passwd

0x03 SCP

講過上面的配置之后我們就可以通過這兩種方式來遠(yuǎn)程操作我們的樹莓派了驾胆。但是贱呐,有時(shí)候我們需要在本地和 Raspberry Pi 之間進(jìn)行文件拷貝丧诺,這里我們可以有很多種選擇奄薇,比如常見的FTP,SFTP等馁蒂。但是由于FTP的配置比較麻煩,而且必須以服務(wù)的方式在系統(tǒng)常駐沫屡,因此給大家推薦 SCP。SCP 是secure copy的簡寫沮脖,用于在Linux下進(jìn)行遠(yuǎn)程拷貝文件芯急。我們比較常見的 cp 命令和 scp 類似,不過cp 只是在本機(jī)進(jìn)行拷貝娶耍,不能跨服務(wù)器¢啪疲考慮網(wǎng)絡(luò)傳輸?shù)陌踩裕?scp 傳輸是加密的。默認(rèn)情況想鹰,我們的Raspberry Pi 已經(jīng)安裝了SCP, 可以通過直接在終端輸入 scp 來查看杖挣,如:

$ scp
usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 ... [[user@]host2:]file2

由于我用的是Mac系統(tǒng),默認(rèn)情況也已經(jīng)安裝了SCP命令惩妇。如果你使用的是Windows系統(tǒng),我們可以到這里下載WinSCP歌殃。

  • 本地文件拷貝到 Raspberry Pi

    1. 拷貝本地文件file.txt到Raspberry Pi的用戶目錄下

      scp file.txt pi@ttdevs.com:

    2. 拷貝本地文件file.txt到Raspberry Pi的用戶目錄下的raspi文件下,路徑為/home/pi/raspi/

      scp file.txt pi@ttdevs.com:raspi

  • Raspberry Pi文件拷貝到本地

    scp pi@ttdevs.com:file.txt .

    拷貝遠(yuǎn)程Raspberry Pi用戶目錄下的file.txt到本地的當(dāng)前目錄

  • 多文件拷貝

    scp支持多文件拷貝氓皱,我們可以一次指定多個(gè)文件或者使用通配符來進(jìn)行操作

    1. 指定多個(gè)文件

      scp file.txt file2.txt pi@ttdevs.com:

    2. 使用通配符

      scp *.txt pi@ttdevs.com:

    3. 拷貝文件夾

      scp -r pi@ttdevs.com:/Users/jobs jobs

0x04 HTTP

為什么會(huì)提到這個(gè)呢勃刨?原因很簡單波材,在接下來的學(xué)習(xí)中大部分的編碼操作都會(huì)使用python來完成身隐。所以我們會(huì)安裝python語言,而且贾铝,默認(rèn)情況我們的Raspberry Pi已經(jīng)安裝了python 2.7版本隙轻。python2 中默認(rèn)包含了SimpleHTTPServer這個(gè)庫垢揩。因此我們可以直接拿來使用。說了這么多你還不知道這個(gè)東東是干嘛的叁巨。其實(shí)從名字中我們就可以看出來,他是一個(gè)http server俘种。既然是http server绝淡,那么我們就可以用來作為下載文件服務(wù)來使用,間接完成文件的拷貝牢酵。我們可以通過如下的命令來啟動(dòng)一個(gè)http服務(wù):

~ $ python -m SimpleHTTPServer 8088
Serving HTTP on 0.0.0.0 port 8088 ...
...

如果你想使用80端口(請(qǐng)確保沒有被運(yùn)營商封掉),請(qǐng)將8088改成80馍乙,sudo python -m SimpleHTTPServer 80。啟動(dòng)好之后我們就可以在瀏覽器中通過打開 http://<your ip or domain>:8088 這樣的方式來訪問啟動(dòng)服務(wù)時(shí)那個(gè)位置下的所有文件丝格。如果你想從Raspberry Pi中拷貝文件到本地,那就在 Raspberry Pi 中啟動(dòng)服務(wù)显蝌,如果你想把本地文件拷貝到Raspberry Pi中,在我們本地啟動(dòng)服務(wù)即可曼尊。

Raspberry Pi Python Http

至此脏嚷,我們可以真正開始Raspberry Pi 操作了~~

[圖片上傳失敗...(image-8d743d-1542686249382)]


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末骆撇,一起剝皮案震驚了整個(gè)濱河市父叙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌趾唱,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件甜癞,死亡現(xiàn)場離奇詭異,居然都是意外死亡带欢,警方通過查閱死者的電腦和手機(jī)烤惊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來柒室,“玉大人,你說我怎么就攤上這事雄右》慕玻” “怎么了?”我有些...
    開封第一講書人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵熬甚,是天一觀的道長。 經(jīng)常有香客問我乡括,道長,這世上最難降的妖魔是什么诲泌? 我笑而不...
    開封第一講書人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮敷扫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘葵第。我一直安慰自己,他們只是感情好羹幸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開白布辫愉。 她就那樣靜靜地躺著栅受,像睡著了一般恭朗。 火紅的嫁衣襯著肌膚如雪屏镊。 梳的紋絲不亂的頭發(fā)上痰腮,一...
    開封第一講書人閱讀 51,727評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音膀值,去河邊找鬼。 笑死沧踏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的翘狱。 我是一名探鬼主播秘案,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼赚导!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起吼旧,我...
    開封第一講書人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎黍少,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體处面,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年昵济,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片访忿。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡斯稳,死狀恐怖海铆,靈堂內(nèi)的尸體忽然破棺而出挣惰,到底是詐尸還是另有隱情卧斟,我是刑警寧澤憎茂,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站竖幔,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏拳氢。R本人自食惡果不足惜募逞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一馋评、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧栗恩,春花似錦、人聲如沸磕秤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蒙兰,卻和暖如春磷瘤,著一層夾襖步出監(jiān)牢的瞬間搜变,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來泰國打工挠他, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人殖侵。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像拢军,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子茉唉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

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