首頁 > 軟體

Linux系統的遠端登陸

2020-06-16 17:48:08

Linux大多應用於伺服器,而伺服器不可能像PC一樣放在辦公室,它們是放在IDC機房的,所以阿銘平時登入Linux系統都是通過遠端登入的。Linux系統中是通過ssh服務實現的遠端登入功能。預設sshd服務開啟了22埠,而且當我們安裝完系統時,這個服務已經安裝,並且是開機啟動的。所以不需要我們額外設定什麼就能直接遠端登入Linux系統。sshd服務的組態檔為 /etc/ssh/sshd_config,您可以修改這個組態檔來實現您想要的sshd服務。比如您可以更改啟動埠為11587.

如果您是windows的作業系統,則Linux遠端登入需要在我們的機器上額外安裝一個終端軟體。目前比較常見的終端登入軟體有SecureCRT, Putty, SSH Secure Shell等,很多朋友喜歡用SecureCRT因為它的功能是很強大的,而阿銘喜歡用Putty,只是因為它的小巧以及非常漂亮的顏色顯示。不管您使用哪一個用戶端軟體,最終的目的只有一個,就是遠端登入到Linux伺服器上。這些軟體網上有很多免費版的,您可以下載一個試著玩玩。

您不妨跟著阿銘一起來用一用Putty這個小巧的工具。

下載Putty

阿銘建議您到Putty的官方站點去下載英文版原版的putt. 網上曾經報過,某個中文版的Putt被別有用心的駭客給動了手腳,給植了後門。所以,阿銘提醒各位,以後不管下載什麼軟體盡量去官方站點下載。下載地址: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html 連線遠端Linux伺服器的工具只需要下載putty.exe即可 http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe 下載後直接雙擊執行就可以了不需要安裝。

給您的Linux設定IP

要想遠端連線Linux伺服器,首先需要知道伺服器的IP。因為阿銘用的虛擬機器,而且虛擬機器所跑的真機是自動獲得的ip,所以虛擬機器也可以自動獲得ip。如果您是一步一步跟阿銘裝的Linux那麼您的Linux目前肯定是沒有IP的,下面阿銘教您幾種設定IP的方法:

  1. 自動獲取IP

只有一種情況可以自動獲取IP地址,那就是您的Linux所在的網路環境中有DHCP服務。[1] 總之,只要您的真機可以自動獲取IP,那麼安裝在虛擬機器的Linux同樣也可以自動獲取IP. 方法很簡單,只需要執行一個命令。

[root@localhost ~]# dhclient

執行這條命令後,會出現一大堆資訊,您不用關心是什麼。然後執行 ‘ifconfig’ 命令檢視IP是什麼:

[root@localhost ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:D9:F0:52
          inet addr:10.72.137.85  Bcast:10.72.137.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fed9:f052/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:27135 errors:0 dropped:0 overruns:0 frame:0
          TX packets:53 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3488498 (3.3 MiB)  TX bytes:7550 (7.3 KiB)
          Interrupt:18 Base address:0x1080

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

通過這個命令可以檢視系統有幾塊網絡卡和網絡卡的IP,阿銘的系統eth0的IP是 10.72.137.85. 如果您的Linux有多塊網絡卡,那麼在Linux中它會顯示成eth1, eth2 依此類推。

  1. 手動設定IP

如果您的虛擬機器不能自動獲取IP,那麼只能手動設定,設定方法為:

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

使用vi 命令開啟 “/etc/sysconfig/network-scripts/ifcfg-eth0” 這個組態檔。關於命令 vi 阿銘會在後續章節詳細介紹,暫時您只要了解這個命令是用來編輯檔案的即可。輸入上述命令後回車,開啟了該組態檔。使用方向鍵的向下箭頭讓游標移動到最後面一行,然後按字母鍵 ‘o’,進入編輯模式,增加如下內容:

IPADDR=10.72.137.85
NETMASK=255.255.255.0
GATEWAY=10.72.137.1

請注意,由於阿銘不知道您的網路具體環境,所以也不曉得您應該設定什麼樣的IP,請不要直接照搬阿銘給出的例子,這樣設定肯定是不行的,請設定成和您的真機(windows)在同一個網段的IP。關於netmask以及gateway的概念請自行在網上查詢,這是關於網路技術的基礎知識。另外還需要把游標移動到 “ONBOOT=no” 這一行,改為:

ONBOOT=yes

“BOOTPROTO=dhcp” 改為:

BOOTPROTO=none

之後按一下鍵盤左上角的 “ESC”鍵,然後輸入 :wq , 它會顯示在螢幕的左下方,然後按回車,這樣就儲存該組態檔了。之後,需要重新啟動一下網路服務:

[root@localhost ~]# service network restart
正在關閉介面 eth0:                                        [確定]
關閉環迴介面:                                             [確定]
彈出環回介面:                                             [確定]
彈出介面 eth0:                                            [確定]

這樣網路重新啟動後,eth0 的IP就生效了。使用 “ifconfig eth0” 命令檢視一下:

[root@localhost ~]# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0C:29:D9:F0:52
          inet addr:10.72.137.85  Bcast:10.72.137.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fed9:f052/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:27135 errors:0 dropped:0 overruns:0 frame:0
          TX packets:53 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3488498 (3.3 MiB)  TX bytes:7550 (7.3 KiB)
          Interrupt:18 Base address:0x1080

接下來請檢測一下您設定的IP是否可以ping通。阿銘使用的windows7系統,所以使用cmd開啟命令視窗,進行檢測。開啟cmd的快捷鍵是 windows + r.

C:UsersAdministrator>ping 10.72.137.85

正在 Ping 10.72.137.85 具有 32 位元組的資料:
來自 10.72.137.85 的回復: 位元組=32 時間=1ms TTL=64
來自 10.72.137.85 的回復: 位元組=32 時間<1ms TTL=64
來自 10.72.137.85 的回復: 位元組=32 時間<1ms TTL=64
來自 10.72.137.85 的回復: 位元組=32 時間<1ms TTL=64

10.72.137.85 的 Ping 統計資訊:
    封包: 已傳送 = 4,已接收 = 4,丟失 = 0 (0% 丟失),
往返行程的估計時間(以毫秒為單位):
    最短 = 0ms,最長 = 1ms,平均 = 0ms
  1. 利用vmware的NAT給Linux設定IP

這一部分內容,參考 http://www.linuxidc.com/Linux/2015-12/126792.htm  如果您已經設定好IP且可以ping通,這一部分設定則不需要再做了,但有必要了解一下,也許有一天您會用到。這一部分設定適合這樣的場景:您的辦公網不能通過dhcp獲得IP,或者您不想讓您的Linux處在和辦公網一個網段,而且也想讓Linux上網。

  • 設定虛擬機器上的nat
Edit –> Virtual Network setting –> NAT –> Vmnet 8 Gateway IP address : 192.168.205.2 Netmask : 255.255.255.0 NAT service: Started –> 確定
  • 修改虛擬機器的網絡卡設定
雙擊虛擬機器右下角的網絡卡小圖示,滑鼠移動過去後會顯示 “Ethernet: ...” Device status 那兩項都需要打對鉤; Network connection 需要選擇最後一項(Custom:Specific virtual network) 選擇Vmnet8(NAT) 最後點ok
  • 到您的電腦上 [2]
右擊”網路上的芳鄰” –> 屬性 –> 右擊 “VMware Network Adapter VMnet8” –> 屬性 –> 雙擊 “Internet 協定(TCP/IP)” –> 手動設定IP為 192.168.205.1 子網掩碼為 255.255.255.0 閘道器 和 dns 都設定為 192.168.205.2 –> 確定 –> 確定
  • 設定您虛擬機器IP

在您的Linux上編輯eth0的組態檔 vi  /etc/sysconfig/network-scripts/ifcfg-eth0 內容如下:

DEVICE=eth0
BOOTPROTO=none
HWADDR=00:0C:29:33:F7:3A
ONBOOT=yes
IPADDR=192.168.205.3
NETMASK=255.255.255.0
GATEWAY=192.168.205.2
  • 設定DNS地址

執行命令 vi  /etc/resolv.conf 內容如下:

nameserver 192.168.205.2
  • 重新啟動網路服務
執行命令 service  network  restart

如果您遇到類似這樣的問題:重新啟動網路服務後,發現/etc/resolv.conf中設定的DNS地址消失了,您可以參考這個貼文解決您的問題: http://www.linuxidc.com/Linux/2015-12/126794.htm

用putty登陸您的Linux

上一小節阿銘帶您設定IP,就是給這一部分做鋪墊,沒有IP是沒有辦法遠端連線Linux的。雙擊先前下載的putty.exe檔案,這個小工具特別小巧僅僅有幾百K,但是您可不要小看它,功能可是不少呢,而且這個工具的???助文件夠您看好幾天的了,關鍵是全都是英文。如果您的英文能力差一些也沒有關係,相信隨著您用Linux越來越多,您的英文能力也會越來越強。

  • 填寫遠端Linux基本資訊

Host Name (or IP address) 這一欄填寫您在上一小節剛剛設定的IP,阿銘的Linux IP為 “10.72.137.85”.

Port 這一欄保持預設不變。

Connection type 也保持預設。

Saved Sessions 這裡自定義一個名字,主要用來區分主機,因為將來您的主機會很多,寫個簡單的名字即方便記憶又能快速查詢。

  • 定義字元集
計算機裡最煩人的就是字元集了,尤其是Linux,搞不好就會亂碼。阿銘在第三章教您安裝CentOS時已經安裝了中文語言支援,所以安裝好的系統是支援中文的,在putty這裡設定也要支援中文。點一下左側的 “Window” –> “Translation”, 看右側的 “Character set translation on received data”, 選擇UTF-8. 之後再點一下左側的 “Session”, 然後點右側的 “save”.
  • 遠端連線您的Linux

儲存session後,點最下方的 “Open”. 初次登陸時,都會彈出一個友情提示,它的意思是要開啟的Linux還未在本機登記,問我們是否要信任它。如果是可信任的,則點 ‘是’ 登記該主機,否則點 ‘否’ 或者 ‘取消’,我們當然要點 ‘是’. 之後彈出登陸提示:

login as: root
root@10.72.137.85's password:
Last login: Wed May  8 08:02:17 2013 from 10.72.137.89

輸入使用者名稱以及密碼後,就登陸Linux系統了。登陸後會提示最後一次登陸系統的時間以及從哪裡登陸。

使用金鑰認證機制遠端登入Linux

SSH服務支援一種安全認證機制,即金鑰認證。所謂的金鑰認證,實際上是使用一對加密字串,一個稱為公鑰(publickey), 任何人都可以看到其內容,用於加密;另一個稱為金鑰(privatekey),只有擁有者才能看到,用於解密。通過公鑰加密過的密文使用金鑰可以輕鬆解密,但根據公鑰來猜測金鑰卻十分困難。 ssh的金鑰認證就是使用了這一特性。伺服器和用戶端都各自擁有自己的公鑰和金鑰。如何使用金鑰認證登入linux伺服器呢?

  1. 下載生成金鑰工具

在本章前面阿銘提供的putty下載地址裡,您一定看到了很多可以下載的東西,不過阿銘只讓您下載了一個putty.exe. 因為當時只用到這一個工具,其實完整的putty程式包含很多個小工具的,所以這次阿銘建議您直接下載個完整包 http://the.earth.li/~sgtatham/putty/latest/x86/putty.zip 下載後解壓,其中puyttygen.exe就是咱們這一小節中所要用到的金鑰生成工具。

  1. 生成金鑰對

關於金鑰的工作原理,如果您感興趣可以到網上查一查,阿銘不想介紹太多無關知識點,不過,了解一下也沒有什麼不好。雙擊puttygen.exe, 右下角 “Number of bits in a generated key” 把 “1024” 改成 “2048”, 然後點 “Generate”, 這樣就開始生成金鑰了,請來回動一下滑鼠,這樣才可以快速生成金鑰對,大約十幾秒後就完成了。 “Key comment:” 這裡可以保持不變也可以自定義,其實就是對該金鑰的簡單介紹; “Kye passphrase:” 這裡用來給您的金鑰設定密碼,這樣安全一些,當然也可以留空,阿銘建議您設定一個密碼;”Confirm passphrase:” 這裡再輸入一遍剛剛您設定的密碼。

  1. 儲存私鑰

點 “Save private key”, 選擇一個存放路徑,定義一個名字,點 “儲存”。請儲存到一個比較安全的地方,謹防丟掉或被別人看到。

  1. 複製公鑰到Linux

回到剛才生成金鑰的視窗,在 “Key” 的下方有一段長長的字串,這一串就是公鑰的內容了,把整個公鑰字串複製下來。然後貼上到您的Linux的 /root/.ssh/authorized_keys 檔案裡。下面請跟著阿銘一起來做操作:

[root@localhost ~]# mkdir /root/.ssh
[root@localhost ~]# chmod 700 /root/.ssh

首先建立/root/.ssh 目錄,因為這個目錄預設是不存在的,然後是更改許可權。 關於 mkdirchmod 兩個命令,阿銘會在後續章節詳細介紹,暫時您只要知道是用來建立目錄和更改許可權的就行了。然後是把公鑰內容貼上進 /root/.ssh/authorized_keys 檔案。

[root@localhost ~]# vi /root/.ssh/authorized_keys

回車後,按一下 ‘i’ 進入編輯模式,然後直接點選滑鼠右鍵就貼上了,這是putty工具非常方便的一個功能。貼上後,按一下 ‘Esc’ 鍵,然後輸入 :wq 回車儲存退出該檔案。

  1. 關閉Selinux

如果不關閉selinux, [3] 使用金鑰登陸會提示 “Server refused our key”, 關閉方法:

[root@localhost ~]# setenforce 0

這個只是暫時命令列關閉selinux, 下次重新啟動Linux後selinux還會開啟。永久關閉selinux的方法是:

[root@localhost ~]# vi /etc/selinux/config

回車後,把游標移動到 “SELINUX=enforcing” 按一下 i 鍵,進入編輯模式,修改為

SELINUX=disabled

按 “Esc”, 輸入 :wq 回車,然後重新啟動系統

  1. 設定putty通過金鑰登陸

開啟putty.exe點一下您儲存好的session,然後點右側的 “Load”, 在左側靠下面點一下 “SSH” 前面的 + 然後選擇 “Auth”, 看右側 “Private key file for authentication:” 下面的長條框裡目前為空,點一下 “Browse”, 找到我們剛剛儲存好的私鑰,點”開啟”。此時這個長條框裡就有了私鑰的地址,當然您也可以自行編輯這個路徑。然後再回到左側,點一下最上面的 “Session”, 在右側再點一下 “Save”.

  1. 使用金鑰驗證登陸Linux

儲存好後session, 點一下右下方的 “Open”. 出現登陸介面,您會發現和原來的登陸提示內容有所不同了。

login as: root
Authenticating with public key "rsa-key-20130509"
Passphrase for key "rsa-key-20130509":
Last login: Thu May  9 16:17:13 2013 from 10.72.137.43
[root@localhost ~]#

現在不再輸入root密碼,而是需要輸入金鑰的密碼,如果您先前在生產金鑰的時候沒有設定密碼,您輸入root後會直接登陸系統。

[1] DHCP服務,是自動分配IP的服務,我們平時所在的辦公室網路環境裡,都有DHCP服務。另外家用的路由器像Tplink 或者 dlink 都有DHCP服務的功能。
[2] 這一部分阿銘是在windows XP上設定的,windows7 的設定道理也是一樣的。
[3] selinux是RedHat、CentOS特有的安全機制,這個東西很複雜,我們從來都不要開啟它,因為selinux開啟後,會產生諸多莫名其妙的bug。

本文永久更新連結地址http://www.linuxidc.com/Linux/2015-12/126793.htm


IT145.com E-mail:sddin#qq.com