自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux 遠(yuǎn)程連接之 SSH 新手指南

系統(tǒng) Linux
本文介紹了如何配置兩臺(tái)計(jì)算機(jī)的 安全外殼協(xié)議(簡(jiǎn)稱 SSH)連接,以及如何在沒(méi)有密碼的情況下安全地從一臺(tái)計(jì)算機(jī)連接到另一臺(tái)計(jì)算機(jī)。

[[420096]]

學(xué)會(huì)使用安全外殼協(xié)議連接遠(yuǎn)程計(jì)算機(jī)。

使用 Linux,你只需要在鍵盤上輸入命令,就可以巧妙地使用計(jì)算機(jī)(甚至這臺(tái)計(jì)算機(jī)可以在世界上任何地方),這正是 Linux 最吸引人的特性之一。有了 OpenSSH,POSIX 用戶就可以在有權(quán)限連接的計(jì)算機(jī)上打開(kāi)安全外殼協(xié)議,然后遠(yuǎn)程使用。這對(duì)于許多 Linux 用戶來(lái)說(shuō)可能不過(guò)是日常任務(wù),但從沒(méi)操作過(guò)的人可能就會(huì)感到很困惑。本文介紹了如何配置兩臺(tái)計(jì)算機(jī)的 安全外殼協(xié)議secure shell(簡(jiǎn)稱 SSH)連接,以及如何在沒(méi)有密碼的情況下安全地從一臺(tái)計(jì)算機(jī)連接到另一臺(tái)計(jì)算機(jī)。

相關(guān)術(shù)語(yǔ)

在討論多臺(tái)計(jì)算機(jī)時(shí),如何將不同計(jì)算機(jī)彼此區(qū)分開(kāi)可能會(huì)讓人頭疼。IT 社區(qū)擁有完善的術(shù)語(yǔ)來(lái)描述計(jì)算機(jī)聯(lián)網(wǎng)的過(guò)程。

  • 服務(wù)service: 服務(wù)是指在后臺(tái)運(yùn)行的軟件,因此它不會(huì)局限于僅供安裝它的計(jì)算機(jī)使用。例如,Web 服務(wù)器通常托管著 Web 共享 服務(wù)。該術(shù)語(yǔ)暗含(但非絕對(duì))它是沒(méi)有圖形界面的軟件。
  • 主機(jī)host: 主機(jī)可以是任何計(jì)算機(jī)。在 IT 中,任何計(jì)算機(jī)都可以稱為 主機(jī),因?yàn)閺募夹g(shù)上講,任何計(jì)算機(jī)都可以托管host對(duì)其他計(jì)算機(jī)有用的應(yīng)用程序。你可能不會(huì)把自己的筆記本電腦視為 主機(jī),但其實(shí)上面可能正運(yùn)行著一些對(duì)你、你的手機(jī)或其他計(jì)算機(jī)有用的服務(wù)。
  • 本地local: 本地計(jì)算機(jī)是指用戶或某些特定軟件正在使用的計(jì)算機(jī)。例如,每臺(tái)計(jì)算機(jī)都會(huì)把自己稱為 localhost。
  • 遠(yuǎn)程remote: 遠(yuǎn)程計(jì)算機(jī)是指你既沒(méi)在其面前,也沒(méi)有在實(shí)際使用的計(jì)算機(jī),是真正意義上在 遠(yuǎn)程 位置的計(jì)算機(jī)。

現(xiàn)在術(shù)語(yǔ)已經(jīng)明確好,我們可以開(kāi)始了。

在每臺(tái)主機(jī)上激活 SSH

要通過(guò) SSH 連接兩臺(tái)計(jì)算機(jī),每個(gè)主機(jī)都必須安裝 SSH。SSH 有兩個(gè)組成部分:本地計(jì)算機(jī)上使用的用于啟動(dòng)連接的命令,以及用于接收連接請(qǐng)求的 服務(wù)器。有些計(jì)算機(jī)可能已經(jīng)安裝好了 SSH 的一個(gè)或兩個(gè)部分。驗(yàn)證 SSH 是否完全安裝的命令因系統(tǒng)而異,因此最簡(jiǎn)單的驗(yàn)證方法是查閱相關(guān)配置文件:

  1. $ file /etc/ssh/ssh_config
  2. /etc/ssh/ssh_config: ASCII text

如果返回 No such file or directory 錯(cuò)誤,說(shuō)明沒(méi)有安裝 SSH 命令。

SSH 服務(wù)的檢測(cè)與此類似(注意文件名中的 d):

  1. $ file /etc/ssh/sshd_config
  2. /etc/ssh/sshd_config: ASCII text

根據(jù)缺失情況選擇安裝兩個(gè)組件:

  1. $ sudo dnf install openssh-clients openssh-server

在遠(yuǎn)程計(jì)算機(jī)上,使用 systemd 命令啟用 SSH 服務(wù):

  1. $ sudo systemctl enable --now sshd

你也可以在 GNOME 上的 系統(tǒng)設(shè)置 或 macOS 上的 系統(tǒng)首選項(xiàng) 中啟用 SSH 服務(wù)。在 GNOME 桌面上,該設(shè)置位于 共享 面板中: 

在 GNOME 系統(tǒng)設(shè)置中激活 SSH

開(kāi)啟安全外殼協(xié)議

現(xiàn)在你已經(jīng)在遠(yuǎn)程計(jì)算機(jī)上安裝并啟用了 SSH,可以嘗試使用密碼登錄作為測(cè)試。要訪問(wèn)遠(yuǎn)程計(jì)算機(jī),你需要有用戶帳戶和密碼。

遠(yuǎn)程用戶不必與本地用戶相同。只要擁有相應(yīng)用戶的密碼,你就可以在遠(yuǎn)程機(jī)器上以任何用戶的身份登錄。例如,我在我的工作計(jì)算機(jī)上的用戶是 sethkenlon ,但在我的個(gè)人計(jì)算機(jī)上是 seth。如果我正在使用我的個(gè)人計(jì)算機(jī)(即作為當(dāng)前的本地計(jì)算機(jī)),并且想通過(guò) SSH 連接到我的工作計(jì)算機(jī),我可以通過(guò)將自己標(biāo)識(shí)為 sethkenlon 并使用我的工作密碼來(lái)實(shí)現(xiàn)連接。

要通過(guò) SSH 連接到遠(yuǎn)程計(jì)算機(jī),你必須知道其 IP 地址或可解析的主機(jī)名。在遠(yuǎn)程計(jì)算機(jī)上使用 ip 命令可以查看該機(jī)器的 IP 地址:

  1. $ ip addr show | grep "inet "
  2. inet 127.0.0.1/8 scope host lo
  3. inet 10.1.1.5/27 brd 10.1.1.31 [...]

如果遠(yuǎn)程計(jì)算機(jī)沒(méi)有 ip 命令,可以嘗試使用 ifconfig 命令(甚至可以試試 Windows 上通用的 ipconfig 命令)。

127.0.0.1 是一個(gè)特殊的地址,它實(shí)際上是 localhost 的地址。這是一個(gè)環(huán)回loopback地址,系統(tǒng)使用它來(lái)找到自己。這在登錄遠(yuǎn)程計(jì)算機(jī)時(shí)并沒(méi)有什么用,因此在此示例中,遠(yuǎn)程計(jì)算機(jī)的正確 IP 地址為 10.1.1.5。在現(xiàn)實(shí)生活中,我的本地網(wǎng)絡(luò)正在使用 10.1.1.0 子網(wǎng),進(jìn)而可得知前述正確的 IP 地址。如果遠(yuǎn)程計(jì)算機(jī)在不同的網(wǎng)絡(luò)上,那么 IP 地址幾乎可能是任何地址(但絕不會(huì)是 127.0.0.1),并且可能需要一些特殊的路由才能通過(guò)各種防火墻到達(dá)遠(yuǎn)程。如果你的遠(yuǎn)程計(jì)算機(jī)在同一個(gè)網(wǎng)絡(luò)上,但想要訪問(wèn)比自己的網(wǎng)絡(luò)更遠(yuǎn)的計(jì)算機(jī),請(qǐng)閱讀我之前寫的關(guān)于 在防火墻中打開(kāi)端口 的文章。

如果你能通過(guò) IP 地址  主機(jī)名 ping 到遠(yuǎn)程機(jī)器,并且擁有登錄帳戶,那么就可以通過(guò) SSH 接入遠(yuǎn)程機(jī)器:

  1. $ ping -c1 10.1.1.5
  2. PING 10.1.1.5 (10.1.1.5) 56(84) bytes of data.
  3. 64 bytes from 10.1.1.5: icmp_seq=1 ttl=64 time=4.66 ms
  4. $ ping -c1 akiton.local
  5. PING 10.1.1.5 (10.1.1.5) 56(84) bytes of data.

至此就成功了一小步。再試試使用 SSH 登錄:

  1. $ whoami
  2. seth
  3. $ ssh sethkenlon@10.1.1.5
  4. bash$ whoami
  5. sethkenlon

測(cè)試登錄有效,下一節(jié)會(huì)介紹如何激活無(wú)密碼登錄。

創(chuàng)建 SSH 密鑰

要在沒(méi)有密碼的情況下安全地登錄到另一臺(tái)計(jì)算機(jī),登錄者必須擁有 SSH 密鑰??赡苣愕臋C(jī)器上已經(jīng)有一個(gè) SSH 密鑰,但再多創(chuàng)建一個(gè)新密鑰也沒(méi)有什么壞處。SSH 密鑰的生命周期是在本地計(jì)算機(jī)上開(kāi)始的,它由兩部分組成:一個(gè)是永遠(yuǎn)不會(huì)與任何人或任何東西共享的私鑰,一個(gè)是可以復(fù)制到任何你想要無(wú)密碼訪問(wèn)的遠(yuǎn)程機(jī)器上的公鑰。

有的人可能會(huì)創(chuàng)建一個(gè) SSH 密鑰,并將其用于從遠(yuǎn)程登錄到 GitLab 身份驗(yàn)證的所有操作,但我會(huì)選擇對(duì)不同的任務(wù)組使用不同的密鑰。例如,我在家里使用一個(gè)密鑰對(duì)本地機(jī)器進(jìn)行身份驗(yàn)證,使用另一個(gè)密鑰對(duì)我維護(hù)的 Web 服務(wù)器進(jìn)行身份驗(yàn)證,再一個(gè)單獨(dú)的密鑰用于 Git 主機(jī),以及又一個(gè)用于我托管的 Git 存儲(chǔ)庫(kù),等等。在此示例中,我將只創(chuàng)建一個(gè)唯一密鑰,以在局域網(wǎng)內(nèi)的計(jì)算機(jī)上使用。

使用 ssh-keygen 命令創(chuàng)建新的 SSH 密鑰:

  1. $ ssh-keygen -t ed25519 -f ~/.ssh/lan

-t 選項(xiàng)代表 類型 ,上述代碼設(shè)置了一個(gè)高于默認(rèn)值的密鑰加密級(jí)別。-f 選項(xiàng)代表 文件,指定了密鑰的文件名和位置。運(yùn)行此命令后會(huì)生成一個(gè)名為 lan 的 SSH 私鑰和一個(gè)名為 lan.pub 的 SSH 公鑰。

使用 ssh-copy-id 命令把公鑰發(fā)送到遠(yuǎn)程機(jī)器上,在此之前要先確保具有遠(yuǎn)程計(jì)算機(jī)的 SSH 訪問(wèn)權(quán)限。如果你無(wú)法使用密碼登錄遠(yuǎn)程主機(jī),也就無(wú)法設(shè)置無(wú)密碼登錄:

  1. $ ssh-copy-id -i ~/.ssh/lan.pub sethkenlon@10.1.1.5

過(guò)程中系統(tǒng)會(huì)提示你輸入遠(yuǎn)程主機(jī)上的登錄密碼。

操作成功后,使用 -i 選項(xiàng)將 SSH 命令指向?qū)?yīng)的密鑰(在本例中為 lan)再次嘗試登錄:

  1. $ ssh -i ~/.ssh/lan sethkenlon@10.1.1.5
  2. bash$ whoami
  3. sethkenlon

對(duì)局域網(wǎng)上的所有計(jì)算機(jī)重復(fù)此過(guò)程,你就將能夠無(wú)密碼訪問(wèn)這個(gè)局域網(wǎng)上的每臺(tái)主機(jī)。實(shí)際上,一旦你設(shè)置了無(wú)密碼認(rèn)證,你就可以編輯 /etc/ssh/sshd_config 文件來(lái)禁止密碼認(rèn)證。這有助于防止其他人使用 SSH 對(duì)計(jì)算機(jī)進(jìn)行身份驗(yàn)證,除非他們擁有你的私鑰。要想達(dá)到這個(gè)效果,可以在有 sudo 權(quán)限的文本編輯器中打開(kāi) /etc/ssh/sshd_config 并搜索字符串 PasswordAuthentication,將默認(rèn)行更改為:

  1. PasswordAuthentication no

保存并重啟 SSH 服務(wù)器:

  1. $ sudo systemctl restart sshd && echo "OK"
  2. OK
  3. $

日常使用 SSH

OpenSSH 改變了人們對(duì)操作計(jì)算機(jī)的看法,使用戶不再被束縛在面前的計(jì)算機(jī)上。使用 SSH,你可以訪問(wèn)家中的任何計(jì)算機(jī),或者擁有帳戶的服務(wù)器,甚至是移動(dòng)和物聯(lián)網(wǎng)設(shè)備。充分利用 SSH 也意味著解鎖 Linux 終端的更多用途。如果你還沒(méi)有使用過(guò) SSH,請(qǐng)?jiān)囈幌滤?。試著適應(yīng) SSH,創(chuàng)建一些適當(dāng)?shù)拿荑€,以此更安全地使用計(jì)算機(jī),打破必須與計(jì)算機(jī)面對(duì)面的局限性。 

 

責(zé)任編輯:龐桂玉 來(lái)源: Linux中國(guó)
相關(guān)推薦

2022-04-08 12:56:52

Linux終端命令

2022-05-16 15:37:32

開(kāi)源軟件

2011-08-23 10:11:10

LinuxTop命令

2010-06-07 16:10:53

HadoopOnDem

2025-01-13 07:15:00

Monorepo代碼倉(cāng)庫(kù)中項(xiàng)目代碼管理

2010-05-17 13:11:07

Subversion安

2010-06-21 12:39:56

OSPF路由協(xié)議

2023-03-01 08:00:00

機(jī)器學(xué)習(xí)數(shù)據(jù)集

2009-11-16 08:58:43

PHP語(yǔ)言

2010-05-27 10:42:38

SVN配置文檔

2010-05-17 13:22:37

Subversion安

2009-05-11 15:58:32

Linux軟件卸載

2022-12-01 15:34:26

Arch LinuxOpenOffice

2023-03-15 09:46:07

R Markdown代碼語(yǔ)法

2010-08-04 09:06:21

Flex安裝

2021-12-30 10:26:37

Bash Shell腳本文件命令

2022-01-20 16:43:38

Bash 腳本ShellLinux

2022-02-28 11:02:53

函數(shù)Bash Shell語(yǔ)句

2016-11-08 09:18:23

Docker.NET CoreLinux

2010-09-01 16:56:11

無(wú)線局域網(wǎng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)