使用SSH管理遠程主機

一洞慎、配置網(wǎng)絡(luò)服務(wù)

1.配置網(wǎng)絡(luò)參數(shù)

(1)使用nmtui命令配置網(wǎng)絡(luò)參數(shù)

(2)使用vim編輯ifcfg-eno16777728配置文件幢竹,設(shè)置ONBOOT=yes

# vim /etc/sysconfig/network-scripts/ifcfg-eno16777728

TYPE=Ethernet

BOOTPROTO=none

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

NAME=eno16777728

UUID=dc9bf613-4d3d-4883-8be8-8282582b6fc3

ONBOOT=yes

GATEWAY0=192.168.31.1

HWADDR=00:0C:29:64:8B:37

PROXY_METHOD=none

BROWSER_ONLY=no

IPADDR=192.168.1.145

PREFIX=24

GATEWAY=192.168.1.1

# systemctl restart network

# ping -c 4 192.168.1.145

PING 192.168.1.145 (192.168.1.145) 56(84) bytes of data.

64 bytes from 192.168.1.145: icmp_seq=1 ttl=64 time=0.295 ms

64 bytes from 192.168.1.145: icmp_seq=2 ttl=64 time=0.111 ms

64 bytes from 192.168.1.145: icmp_seq=3 ttl=64 time=0.107 ms

64 bytes from 192.168.1.145: icmp_seq=4 ttl=64 time=0.107 ms

--- 192.168.1.145 ping statistics ---

4 packets transmitted, 4 received, 0% packet loss, time 3000ms

rtt min/avg/max/mdev = 0.107/0.155/0.295/0.080 ms

2.創(chuàng)建網(wǎng)絡(luò)會話

RHEL 和 CentOS 系統(tǒng)默認(rèn)使用 NetworkManager 來提供網(wǎng)絡(luò)服務(wù)箫锤,這是一種動態(tài)管理網(wǎng)絡(luò)配置的守護進程琴许,能夠讓網(wǎng)絡(luò)設(shè)備保持連接狀態(tài)辈赋。可以使用 nmcli 命令來管理 NetworkManager 服務(wù)棠枉。nmcli 是一款基于命令行的網(wǎng)絡(luò)配置工具晕粪,功能豐富讹俊,參數(shù)眾多垦沉。它可以輕松地查看網(wǎng)絡(luò)信息或網(wǎng)絡(luò)狀態(tài):

# nmcli connection show

NAME? ? ? ? UUID? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TYPE? ? ?DEVICE? ? ?

eno16777728? dc9bf613-4d3d-4883-8be8-8282582b6fc3? ethernet eno16777728

virbr0? ? ? 212a6f0b-0909-497a-aa69-79ca1c3043bb? bridge? ?virbr0

# nmcli con show eno16777728

connection.id:? ? ? ? ? ? ? ? ? ? ? ? ? eno16777728

connection.uuid:? ? ? ? ? ? ? ? ? ? ? ? dc9bf613-4d3d-4883-8be8-

8282582b6fc3

connection.stable-id:? ? ? ? ? ? ? ? ? --

connection.type:? ? ? ? ? ? ? ? ? ? ? ? 802-3-ethernet

connection.interface-name:? ? ? ? ? ? ? --

connection.autoconnect:? ? ? ? ? ? ? ? yes

connection.autoconnect-priority:? ? ? ? 0

connection.autoconnect-retries:? ? ? ? -1 (default)

connection.auth-retries:? ? ? ? ? ? ? ? -1

connection.timestamp:? ? ? ? ? ? ? ? ? 1564968668

connection.read-only:? ? ? ? ? ? ? ? ? no

connection.permissions:? ? ? ? ? ? ? ? --

connection.zone:? ? ? ? ? ? ? ? ? ? ? ? --

connection.master:? ? ? ? ? ? ? ? ? ? ? --

connection.slave-type:? ? ? ? ? ? ? ? ? --

connection.autoconnect-slaves:? ? ? ? ? -1 (default)

connection.secondaries:? ? ? ? ? ? ? ? --

connection.gateway-ping-timeout:? ? ? ? 0

connection.metered:? ? ? ? ? ? ? ? ? ? unknown

connection.lldp:? ? ? ? ? ? ? ? ? ? ? ? default

connection.mdns:? ? ? ? ? ? ? ? ? ? ? ? -1 (default)

802-3-ethernet.port:? ? ? ? ? ? ? ? ? ? --

802-3-ethernet.speed:? ? ? ? ? ? ? ? ? 0

802-3-ethernet.duplex:? ? ? ? ? ? ? ? ? --

802-3-ethernet.auto-negotiate:? ? ? ? ? no

802-3-ethernet.mac-address:? ? ? ? ? ? 00:0C:29:64:8B:37

802-3-ethernet.cloned-mac-address:? ? ? --

另外,RHEL7 系統(tǒng)支持網(wǎng)絡(luò)會話功能劣像,允許用戶在多個配置文件中快速切換(非常類似于 firewalld 防火墻服務(wù)中的區(qū)域技術(shù)) 乡话。 如果我們在公司網(wǎng)絡(luò)中使用筆記本電腦時需要手動指定網(wǎng)絡(luò)的 IP 地址,而回到家中則是使用 DHCP 自動分配 IP 地址耳奕。這就需要麻煩地頻繁修改IP 地址绑青,但是使用了網(wǎng)絡(luò)會話功能后一切就簡單多了 — 只需在不同的使用環(huán)境中激活相應(yīng)的網(wǎng)絡(luò)會話,就可以實現(xiàn)網(wǎng)絡(luò)配置信息的自動切換了屋群。

可以使用 nmcli 命令并按照“connection add con-name type ifname”的格式來創(chuàng)建網(wǎng)絡(luò)會話闸婴。假設(shè)將公司網(wǎng)絡(luò)中的網(wǎng)絡(luò)會話稱之為 company,將家庭網(wǎng)絡(luò)中的網(wǎng)絡(luò)會話稱之為 house芍躏,現(xiàn)在依次創(chuàng)建各自的網(wǎng)絡(luò)會話邪乍。使用 con-name 參數(shù)指定公司所使用的網(wǎng)絡(luò)會話名稱 company,然后依次用 ifname 參數(shù)指定本機的網(wǎng)卡名稱(千萬要以實際環(huán)境為準(zhǔn)对竣,不要照抄書上的 eno16777728) 庇楞,用autoconnect no 參數(shù)設(shè)置該網(wǎng)絡(luò)會話默認(rèn)不被自動激活,以及用 ip4 及 gw4 參數(shù)手動指定網(wǎng)絡(luò)的 IP 地址:

# nmcli connection add con-name company ifname eno16777728 autoconnect no type ethernet ip4 192.168.1.145/24 gw4 192.168.1.1

Connection 'company' (c7c3bb65-ef25-4152-a842-e1a16728c17b)

successfully added.

使用 con-name 參數(shù)指定家庭所使用的網(wǎng)絡(luò)會話名稱 house否纬。因為我們想從外部 DHCP 服務(wù)器自動獲得 IP 地址吕晌,因此這里不需要進行手動指定。

# nmcli connection add con-name house type ethernet ifname eno16777728

Connection 'house' (2b89f9fd-ae29-43f9-9411-e46ac0fb19e4)

successfully added.

# nmcli connection show

NAME? ? ? ? UUID? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TYPE? ? ?DEVICE? ? ?

eno16777728? dc9bf613-4d3d-4883-8be8-8282582b6fc3? ethernet eno16777728

virbr0? ? ? 212a6f0b-0909-497a-aa69-79ca1c3043bb? bridge? ?virbr0? ? ?

company? ? ? c7c3bb65-ef25-4152-a842-e1a16728c17b? ethernet? --?

house? ? ? ? 2b89f9fd-ae29-43f9-9411-e46ac0fb19e4? ethernet? --

使用nmcli命令配置過的網(wǎng)絡(luò)會話是永久生效的临燃, 這樣當(dāng)我們下班回家后睛驳, 順手啟用 house網(wǎng)絡(luò)會話,網(wǎng)卡就能自動通過 DHCP 獲取到 IP 地址了膜廊。

# nmcli connection up house

Connection successfully activated (D-Bus active path:

/org/freedesktop/NetworkManager/ActiveConnection/8)

3.綁定兩塊網(wǎng)卡

一般來講乏沸,生產(chǎn)環(huán)境必須提供 7×24 小時的網(wǎng)絡(luò)傳輸服務(wù)。借助于網(wǎng)卡綁定技術(shù)爪瓜,不僅可以提高網(wǎng)絡(luò)傳輸速度蹬跃,更重要的是,還可以確保在其中一塊網(wǎng)卡出現(xiàn)故障時铆铆,依然可以正常提供網(wǎng)絡(luò)服務(wù)蝶缀。假設(shè)我們對兩塊網(wǎng)卡實施了綁定技術(shù)辆苔,這樣在正常工作中它們會共同傳輸數(shù)據(jù),使得網(wǎng)絡(luò)傳輸?shù)乃俣茸兊酶於笈欢壹词褂幸粔K網(wǎng)卡突然出現(xiàn)了故障,另外一塊網(wǎng)卡便會立即自動頂替上去菲驴,保證數(shù)據(jù)傳輸不會中斷荐吵。

下面我們來看一下如何綁定網(wǎng)卡。

(1)在虛擬機系統(tǒng)中再添加一塊網(wǎng)卡設(shè)備赊瞬,請確保兩塊網(wǎng)卡都處在同一個網(wǎng)絡(luò)連接中(即網(wǎng)卡模式相同)先煎。處于相同模式的網(wǎng)卡設(shè)備才可以進行網(wǎng)卡綁定,否則這兩塊網(wǎng)卡無法互相傳送數(shù)據(jù)巧涧。

(2)使用vim文本編輯器來配置網(wǎng)卡設(shè)備的綁定參數(shù)薯蝎。網(wǎng)卡綁定的理論知識類似于前面學(xué)習(xí)的RAID硬盤組,我們需要對參與綁定的網(wǎng)卡設(shè)備逐個進行“初始設(shè)置”谤绳。需要注意的是占锯,這些原本獨立的網(wǎng)卡設(shè)備此時需要被配置成為一塊“從屬”網(wǎng)卡,服務(wù)于“主”網(wǎng)卡缩筛,不應(yīng)該再有自己的IP地址等信息消略。在進行了初始設(shè)置之后,它們就可以支持網(wǎng)卡綁定瞎抛。

# vim /etc/sysconfig/network-scripts/ifcfg-eno16777728

TYPE=Ethernet

BOOTPROTO=none

ONBOOT=yes

USERCTL=no

DEVICE=eno16777728

MASTER=bond0

SLAVE=yes

# vim /etc/sysconfig/network-scripts/ifcfg-ens35

TYPE=Ethernet

BOOTPROTO=none

ONBOOT=yes

USERCTL=no

DEVICE=ens35

MASTER=bond0

SLAVE=yes

還需要將綁定后的設(shè)備命名為 bond0 并把 IP 地址等信息填寫進去艺演, 這樣當(dāng)用戶訪問相應(yīng)服務(wù)的時候,實際上就是由這兩塊網(wǎng)卡設(shè)備在共同提供服務(wù)桐臊。

# vim /etc/sysconfig/network-scripts/ifcfg-bond0

BOOTPROTO="static"

TYPE=Ethernet

ONBOOT=yes

USERCTL=no

DEVICE=bond0

IPADDR=192.168.1.145

PREFIX=24

GATEWAY=192.168.1.1

DNS=192.168.1.1

NM_CONTROLLED=no

(3)讓Linux內(nèi)核支持網(wǎng)卡綁定驅(qū)動胎撤。覺見的網(wǎng)卡綁定驅(qū)動有三種模式-mode0、mode1和mode6断凶。下面以綁定兩塊網(wǎng)卡為例伤提,講解使用的情景。

? mode0(平衡負(fù)載模式) :平時兩塊網(wǎng)卡均工作懒浮,且自動備援飘弧,但需要在與服務(wù)器本地網(wǎng)卡相連的交換機設(shè)備上進行端口聚合來支持綁定技術(shù)。

? mode1 (自動備援模式) : 平時只有一塊網(wǎng)卡工作砚著, 在它故障后自動替換為另外的網(wǎng)卡次伶。

? mode6(平衡負(fù)載模式) :平時兩塊網(wǎng)卡均工作,且自動備援稽穆,無須交換機設(shè)備提供輔助支持冠王。

比如有一臺用于提供 NFS 或者 samba 服務(wù)的文件服務(wù)器,它所能提供的

最大網(wǎng)絡(luò)傳輸速度為 100Mbit/s舌镶,但是訪問該服務(wù)器的用戶數(shù)量特別多柱彻,那么它的訪問壓力一定很大豪娜。在生產(chǎn)環(huán)境中,網(wǎng)絡(luò)的可靠性是極為重要的哟楷,而且網(wǎng)絡(luò)的傳輸速度也必須得以保證瘤载。針對這樣的情況,比較好的選擇就是 mode6 網(wǎng)卡綁定驅(qū)動模式了卖擅。因為 mode6 能夠讓兩塊網(wǎng)卡同時一起工作鸣奔, 當(dāng)其中一塊網(wǎng)卡出現(xiàn)故障后能自動備援,且無需交換機設(shè)備支援惩阶,從而提供了可靠的網(wǎng)絡(luò)傳輸保障挎狸。

下面使用 Vim 文本編輯器創(chuàng)建一個用于網(wǎng)卡綁定的驅(qū)動文件,使得綁定后的 bond0 網(wǎng)卡設(shè)備能夠支持綁定技術(shù)(bonding) 断楷;同時定義網(wǎng)卡以mode6 模式進行綁定锨匆,且出現(xiàn)故障時自動切換的時間為 100 毫秒。

# vim /etc/modprobe.d/bond.conf

alias bond0 bonding

options bond0 miimon=100 mode=6

(4)重啟網(wǎng)絡(luò)服務(wù)后網(wǎng)卡綁定操作即可成功冬筒。正常情況下只有bond0網(wǎng)卡設(shè)備才會有IP地址等信息:

# systemctl restart network

# ifconfig

注意:如果出現(xiàn)network.service - LSB: Bring up/down networking報錯恐锣,則關(guān)半網(wǎng)絡(luò)管理服務(wù),再重啟網(wǎng)卡即可账千。操作命令如下:

# systemctl stop NetworkManager

# systemctl disable NetworkManager

可以在本地主機執(zhí)行 ping 192.168.10.10 命令檢查網(wǎng)絡(luò)的連通性侥蒙。為了檢驗網(wǎng)卡綁定技術(shù)的自動備援功能,我們突然在虛擬機硬件配置中隨機移除一塊網(wǎng)卡設(shè)備匀奏,可以非常清晰地看到網(wǎng)卡切換的過程(一般只有 1 個數(shù)據(jù)丟包) 鞭衩。然后另外一塊網(wǎng)卡會繼續(xù)為用戶提供服務(wù)。

注意:linux網(wǎng)卡bonging的備份模式實驗在真實機器上做完全沒問題(前提是linux內(nèi)核支持)娃善,但是在vmware workstation虛擬中做就會出現(xiàn)如下問題:

適配器Ethernet0的MAC地址00:0c:29:64:8b:37屬于預(yù)留的地址范圍论衍,或者系統(tǒng)上的另一個虛擬適配器正在使用該地址。

配置完成后出現(xiàn)如上問題聚磺,但是bond0能夠正常啟動也能夠正常使用坯台,只不過沒有起到備份模式的效果。當(dāng)使用ifdown eth0后瘫寝,網(wǎng)絡(luò)出現(xiàn)不通現(xiàn)象蜒蕾。

二、遠程控制服務(wù)

1.SSH(Secure Shell)是一種能夠以安全的方式提供遠程登錄的協(xié)議焕阿,也是目前遠程管理Linux 系統(tǒng)的首選方式咪啡。想要使用 SSH 協(xié)議來遠程管理 Linux 系統(tǒng), 則需要部署配置 sshd 服務(wù)程序暮屡。 sshd 是基于 SSH協(xié)議開發(fā)的一款遠程管理服務(wù)程序撤摸, 不僅使用起來方便快捷, 而且能夠提供兩種安全驗證的方法:

? 基于口令的驗證 — 用賬戶和密碼來驗證登錄;

? 基于密鑰的驗證 — 需要在本地生成密鑰對准夷,然后把密鑰對中的公鑰上傳至服務(wù)器钥飞,并與服務(wù)器中的公鑰進行比較;該方式相較來說更安全衫嵌。

sshd 服務(wù)的配置信息保存在/etc/ssh/sshd_config 文件中读宙。

sshd 服務(wù)配置文件中包含的參數(shù)以及作用

Port 22:默認(rèn)的sshd服務(wù)端口

ListenAddress 0.0.0.0:設(shè)定sshd服務(wù)器監(jiān)聽的IP地址

Protocol 2:SSH協(xié)議的版本號

HostKey /etc/ssh/ssh_host_key:SSH協(xié)議版本為1時,DES私鑰存放的位置

HostKey /etc/ssh/ssh_host_rsa_key:SSH協(xié)議版本為2時楔绞,RSA私鑰存放的位置

HostKey /etc/ssh/ssh_host_dsa_key:SSH協(xié)議版本為2時论悴,DSA私鑰存放的位置

PermitRootLogin yes:設(shè)定是否允許root管理員直接登錄

StrictModes yes:當(dāng)遠程用戶的私鑰改變時直接拒絕連接

MaxAuthTries 6:最大密碼嘗試次數(shù)

MaxSessions 10:最大終端數(shù)

PasswordAuthentication yes:是否允許密碼驗證

PermitEmptyPasswords no:是否允許空密碼登錄(很不安全)

在 RHEL 7 系統(tǒng)中,已經(jīng)默認(rèn)安裝并啟用了 sshd 服務(wù)程序墓律。接下來使用ssh 命令進行遠程連接,其格式為“ssh [參數(shù)] 主機 IP 地址” 幔亥。要退出登錄則執(zhí)行 exit 命令耻讽。

在另一臺linux機器上登錄

# ssh 192.168.1.145

The authenticity of host '192.168.1.145 (192.168.1.145)' can't be established.

ECDSA key fingerprint is SHA256:41Hr+tm8UA6vzobyTTECFOHk2kDSN82BeAhXR79grdI.

ECDSA key fingerprint is

MD5:0c:56:18:81:72:2a:e5:71:d6:e2:eb:9d:12:e7:0b:0c.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.1.145' (ECDSA) to the list of? known hosts.

root@192.168.1.145's password: (此處輸入遠程主機root管理員的密碼)

Last login: Mon Aug? 5 14:33:36 2019

# exit

logout

Connection to 192.168.1.145 closed.

如果禁止以 root 管理員的身份遠程登錄到服務(wù)器,則可以大大降低被黑客暴力破解密碼的幾率帕棉。下面進行相應(yīng)配置针肥。首先使用 Vim 文本編輯器打開 sshd 服務(wù)的主配置文件,然后把第 38 行PermitRootLogin yes 參數(shù)前的井號(#)去掉香伴,并把參數(shù)值 yes 改成 no慰枕,這樣就不再允許 root 管理員遠程登錄了。記得最后保存文件并退出即纲。

# vim /etc/ssh/sshd_config

………………省略部分輸出信息………………

36

37 #LoginGraceTime 2m

38 PermitRootLogin no

39 #StrictModes yes

40 #MaxAuthTries 6

41 #MaxSessions 10

42

………………省略部分輸出信息………………

# systemctl restart sshd

# systemctl enable sshd

在另一臺linux機器上登錄

# ssh 192.168.1.145

root@192.168.1.145's password:

Permission denied, please try again.

root@192.168.1.145's password:

Permission denied, please try again.

root@192.168.1.145's password:

Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

2.安全密鑰驗證

加密是對信息進行編碼和解碼的技術(shù)具帮,它通過一定的算法(密鑰)將原本可以直接閱讀的明文信息轉(zhuǎn)換成密文形式。密鑰即是密文的鑰匙低斋,有私鑰和公鑰之分蜂厅。在傳輸數(shù)據(jù)時,如果擔(dān)心被他人監(jiān)聽或截獲膊畴, 就可以在傳輸前先使用公鑰對數(shù)據(jù)加密處理掘猿, 然后再行傳送。 這樣唇跨,只有掌握私鑰的用戶才能解密這段數(shù)據(jù)稠通,除此之外的其他人即便截獲了數(shù)據(jù),一般也很難將其破譯為明文信息买猖。

(1)在客戶端主機中生成“密鑰對”改橘。

# ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa): (按回車鍵或設(shè)置密鑰的存儲路徑)

Enter passphrase (empty for no passphrase): (直接按回車鍵或設(shè)置密鑰的密碼)

Enter same passphrase again: (再次按回車鍵或設(shè)置密鑰的密碼)

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:AzPd+VllrzDkZDFXaU9CmOhLqvrVPf7YSg2PlnydPbM

root@linuxprobe1.com

The key's randomart image is:

+---[RSA 2048]----+

|? ? ? ? ? .*=o.=|

|? ? ? . ..*oo.=o|

|? ? ? + ..o + ooo|

|? ? ? +? o. = ..|

|? ? ? ? So .+ .? |

|? ? ? ? .o.o * .o|

|? ? ? .. . O ++o|

|? ? ? ..? + =? +|

|? ? .o.? ? +ooE |

+----[SHA256]-----+

(2)把客戶端主機中生成的公鑰文件傳送至遠程主機:

# ssh-copy-id 192.168.1.145

/bin/ssh-copy-id: INFO: Source of key(s) to be installed:"/root/.ssh/id_rsa.pub"

/bin/ssh-copy-id: INFO: attempting to log in with the new key(s),to filter out any that are already installed

/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

root@192.168.1.145's password:

Permission denied, please try again.

root@192.168.1.145's password:

Authentication failed.

[root@linuxprobe1 ~]# ssh-copy-id 192.168.1.145

/bin/ssh-copy-id: INFO: Source of key(s) to be installed:"/root/.ssh/id_rsa.pub"

/bin/ssh-copy-id: INFO: attempting to log in with the new key(s),to filter out any that are already installed

/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

root@192.168.1.145's password: (此處輸入遠程服務(wù)器密碼)

Number of key(s) added: 1

Now try logging into the machine, with:? "ssh '192.168.1.145'" and check to make sure that only the key(s) you wanted were added.

(3)對服務(wù)器進行設(shè)置,使其只允許密鑰驗證政勃,拒絕傳統(tǒng)的口令驗證方式唧龄。

記得在修改配置文件后保存并重啟sshd服務(wù)程序。

# vim /etc/ssh/sshd_config

………………省略部分輸出信息………………

61

62 # To disable tunneled clear text passwords, change to no

here!

63 #PasswordAuthentication yes

64 #PermitEmptyPasswords no

65 PasswordAuthentication no

66

………………省略部分輸出信息………………

# systemctl restart sshd

(4)在客戶端嘗試登錄到服務(wù)器,此時無須輸入密碼也可以成功登錄既棺。

# ssh 192.168.1.145

The authenticity of host '192.168.1.145 (192.168.1.145)' can't be established.

ECDSA key fingerprint is SHA256:41Hr+tm8UA6vzobyTTECFOHk2kDSN82BeAhXR79grdI.

ECDSA key fingerprint is MD5:0c:56:18:81:72:2a:e5:71:d6:e2:eb:9d:12:e7:0b:0c.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.1.145' (ECDSA) to the list of known hosts.

Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

3.遠程傳輸命令

scp(secure copy)是一個基于 SSH 協(xié)議在網(wǎng)絡(luò)之間進行安全傳輸?shù)拿罘硇涓袷綖椤皊cp[參數(shù)] 本地文件 遠程帳戶@遠程 IP 地址:遠程目錄”。與第 2 章講解的 cp 命令不同丸冕,cp 命令只能在本地硬盤中進行文件復(fù)制耽梅,而 scp 不僅能夠通過網(wǎng)絡(luò)傳送數(shù)據(jù),而且所有的數(shù)據(jù)都將進行加密處理胖烛。例如眼姐,如果想把一些文件通過網(wǎng)絡(luò)從一臺主機傳遞到其他主機, 這兩臺主機又恰巧是 Linux 系統(tǒng)佩番, 這時使用 scp命令就可以輕松完成文件的傳遞了众旗。

scp 命令中可用的參數(shù)以及作用:

-v:顯示詳細(xì)的連接進度

-P:指定遠程主機的sshd端口號

-r:用于傳送文件俠

-6:使用IPv6協(xié)議

在使用 scp 命令把文件從本地復(fù)制到遠程主機時,首先需要以絕對路徑的形式寫清本地文件的存放位置趟畏。如果要傳送整個文件夾內(nèi)的所有數(shù)據(jù)贡歧,還需要額外添加參數(shù)-r 進行遞歸操作。然后寫上要傳送到的遠程主機的 IP地址赋秀,遠程服務(wù)器便會要求進行身份驗證了利朵。當(dāng)前用戶名稱為 root, 而密碼則為遠程服務(wù)器的密碼猎莲。如果想使用指定用戶的身份進行驗證绍弟,可使用用戶名@主機地址的參數(shù)格式。最后需要在遠程主機的 IP 地址后面添加冒號著洼,并在后面寫上要傳送到遠程主機的哪個文件夾中樟遣。只要參數(shù)正確并且成功驗證了用戶身份,即可開始傳送工作身笤。由于 scp 命令是基于 SSH協(xié)議進行文件傳送的年碘,而 9.2.2 小節(jié)又設(shè)置好了密鑰驗證,因此當(dāng)前在傳輸文件時展鸡,并不需要賬戶和密碼屿衅。

# echo "Welcome to LinuxProbe.com" > readme.txt

# scp /root/readme.txt 192.168.1.155:/home

The authenticity of host '192.168.1.155 (192.168.1.155)' can't be established.

ECDSA key fingerprint is SHA256:6os3yo81DehU98Z+yHDW0A711BQyMM88+MUTs5rHF7g.

ECDSA key fingerprint is MD5:29:32:ae:8c:2f:76:24:e7:64:dc:7a:9e:71:a4:52:1d.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.1.155' (ECDSA) to the list of known hosts.

root@192.168.1.155's password: (此處輸入遠程服務(wù)器中root管理員的密碼)

readme.txt? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 100%? 26? ?12.3KB/s? 00:00

此外,還可以使用 scp 命令把遠程主機上的文件下載到本地主機莹弊,其命令格式為“scp [參數(shù)] 遠程用戶@遠程 IP 地址:遠程文件 本地目錄” 涤久。例如,可以把遠程主機的系統(tǒng)版本信息文件下載過來忍弛,這樣就無須先登錄遠程主機响迂,再進行文件傳送了,也就省去了很多周折细疚。

# scp 192.168.1.155:/etc/redhat-release /root

root@192.168.1.155's password: (此處輸入遠程服務(wù)器中root管理員的密碼)

redhat-release? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 100%? 38? ?8.3KB/s? 00:00?

# cat redhat-release

CentOS Linux release 7.6.1810 (Core)

三蔗彤、不間斷會話服務(wù)

大家在學(xué)習(xí) sshd 服務(wù)時,不知有沒有注意到這樣一個事情:當(dāng)與遠程主機的會話被關(guān)閉時,在遠程主機上運行的命令也隨之被中斷然遏。如果我們正在使用命令來打包文件贫途,或者正在使用腳本安裝某個服務(wù)程序,中途是絕對不能關(guān)閉在本地打開的終端窗口或斷開網(wǎng)絡(luò)鏈接的待侵,甚至是網(wǎng)速的波動都有可能導(dǎo)致任務(wù)中斷丢早, 此時只能重新進行遠程鏈接并重新開始任務(wù)。 還有些時候秧倾, 我們正在執(zhí)行文件打包操作怨酝,同時又想用腳本來安裝某個服務(wù)程序, 這時會因為打包操作的輸出信息占滿用戶的屏幕界面那先,而只能再打開一個執(zhí)行遠程會話的終端窗口农猬,時間久了,難免會忘記這些打開的終端窗口是做什么用的了售淡。

screen 是一款能夠?qū)崿F(xiàn)多窗口遠程控制的開源服務(wù)程序盛险,簡單來說就是為了解決網(wǎng)絡(luò)異常中斷或為了同時控制多個遠程終端窗口而設(shè)計的程序。用戶還可以使用 screen 服務(wù)程序同時在多個遠程會話中自由切換勋又,能夠做到實現(xiàn)如下功能。

?? :即便網(wǎng)絡(luò)中斷换帜,也可讓會話隨時恢復(fù)楔壤,確保用戶不會失去對遠程會話的控制。

?? :每個會話都是獨立運行的惯驼,擁有各自獨立的輸入輸出終端窗口蹲嚣,終端窗口內(nèi)顯示過的信息也將被分開隔離保存,以便下次使用時依然能看到之前的操作記錄祟牲。

?? :當(dāng)多個用戶同時登錄到遠程服務(wù)器時隙畜,便可以使用會話共享功能讓用戶之間的輸入輸出信息共享。

在 RHEL 7 系統(tǒng)中说贝,沒有默認(rèn)安裝 screen 服務(wù)程序议惰,因此需要配置 Yum倉庫來安裝它。

# mkdir -p /media/cdrom

# mount /dev/cdrom /media/cdrom

mount: /dev/sr0 is write-protected, mounting read-only

# vim /etc/yum.repos.d/rhel7.repo

[rhel7]

name=rhel7

baseurl=file:///media/cdrom

enabled=1

gpgcheck=0

# yum install screen

Loaded plugins: fastestmirror, langpacks, product-id, search-disabled-repos, : subscription-manager

This system is not registered with an entitlement server. You can use subscription-manager to register.

Loading mirror speeds from cached hostfile base? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | 3.6 kB? ? 00:00? ?

centosplus? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | 3.4 kB? ? 00:00? ?

extras? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | 3.4 kB? ? 00:00? ?

rhel7? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | 4.1 kB? ? 00:00? ?

updates? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | 3.4 kB? ? 00:00? ?

(1/2): rhel7/group_gz? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | 134kB? 00:00? ?

(2/2): rhel7/primary_db? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | 3.4MB? 00:00? ?

Resolving Dependencies

--> Running transaction check

---> Package screen.x86_64 0:4.1.0-0.25.20120314git3c2946.el7

will be installed

--> Finished Dependency Resolution

Dependencies Resolved

=================================================================

Package? ? Arch? ? ? ? Version? ? ? ? ? ? ? ? ? ? ? ? ? ??

Repository


? ? ? ? Size

=================================================================

Installing:

screen? ? ? x86_64? ? ? 4.1.0-0.25.20120314git3c2946.el7? ? ?

base? ? ? 552 k

Transaction Summary

=================================================================

Install? 1 Package

Total download size: 552 k

Installed size: 914 k

Is this ok [y/d/N]: y

Downloading packages:

screen-4.1.0-0.25.20120314git3c2946.el7.x86_64.rpm? ? ? ? | 552kB? 00:01? ?

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

? Installing : screen-4.1.0-0.25.20120314git3c2946.el7.x86_64? ? ? ? ? ? ?1/1

rhel7/productid? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | 1.6 kB? ? 00:00? ?

? Verifying? : screen-4.1.0-0.25.20120314git3c2946.el7.x86_64? ? ? ? ? ? ?1/1

Installed:

? screen.x86_64 0:4.1.0-0.25.20120314git3c2946.el7? ? ? ? ? ? ? ?


Complete!

1.管理遠程會話

screen 命令能做的事情非常多:可以用-S 參數(shù)創(chuàng)建會話窗口乡恕;用-d 參數(shù)將指定會話進行離線處理言询;用-r 參數(shù)恢復(fù)指定會話;用-x 參數(shù)一次性恢復(fù)所有的會話傲宜;用-ls 參數(shù)顯示當(dāng)前已有的會話运杭;以及用-wipe 參數(shù)把目前無法使用的會話刪除,等等函卒。

下面創(chuàng)建一個名稱為 backup 的會話窗口辆憔。請各位讀者留心觀察,當(dāng)在命令行中敲下這條命令的一瞬間,屏幕會快速閃動一下虱咧,這時就已經(jīng)進入screen 服務(wù)會話中了熊榛,在里面運行的任何操作都會被后臺記錄下來。

# screen -S backup

執(zhí)行命令后會立即返回一個提示符彤钟。雖然看起來與剛才沒有不同来候,但實際上可以查看到當(dāng)前的會話正在工作中。

# screen -ls

There is a screen on:

? ? ? ? 12773.backup? ? (Attached)

1 Socket in /var/run/screen/S-root.

要想退出一個會話也十分簡單逸雹,只需在命令行中執(zhí)行 exit 命令即可营搅。

# exit

[screen is terminating]

在日常的生產(chǎn)環(huán)境中,其實并不是必須先創(chuàng)建會話梆砸,然后再開始工作转质。可以直接使用screen 命令執(zhí)行要運行的命令帖世, 這樣在命令中的一切操作也都會被記錄下來休蟹, 當(dāng)命令執(zhí)行結(jié)束后 screen 會話也會自動結(jié)束。

# screen vim memo.txt

welcome to linuxprobe.com

為了演示 screen 不間斷會話服務(wù)的強大之處日矫, 我們先來創(chuàng)建一個名為linux 的會話赂弓, 然后強行把窗口關(guān)閉掉(這與進行遠程連接時突然斷網(wǎng)具有相同的效果) :

# screen -S linux

#

# tail -f /var/log/messages

由于剛才關(guān)閉了會話窗口,這樣的操作在傳統(tǒng)的遠程控制中一定會導(dǎo)致正在運行的命令也突然終止哪轿,但在 screen 不間斷會話服務(wù)中則不會這樣盈魁。

我們只需查看一下剛剛離線的會話名稱,然后嘗試恢復(fù)回來就可以繼續(xù)工作了:

# screen -ls

here is a screen on:

12881.linux (Detached)

1 Socket in /var/run/screen/S-root.

# screen -r linux

如果我們突然又想到了還有其他事情需要處理窃诉,也可以多創(chuàng)建幾個會話窗口放在一起使用杨耙。如果這段時間內(nèi)不再使用某個會話窗口,可以把它設(shè)置為臨時斷開(detach)模式飘痛,隨后在需要時再重新連接 (attach) 回來即可珊膜。 這段時間內(nèi), 在會話窗口內(nèi)運行的程序會繼續(xù)執(zhí)行宣脉。

2.會話共享功能

screen 命令不僅可以確保用戶在極端情況下也不丟失對系統(tǒng)的遠程控制车柠,保證了生產(chǎn)環(huán)境中遠程工作的不間斷性,而且它還具有會話共享塑猖、分屏切割堪遂、會話鎖定等實用的功能。其中萌庆,會話共享功能是一件很酷的事情溶褪,當(dāng)多個用戶同時控制主機的時候,它可以把屏幕內(nèi)容共享出來践险,也就是說每個用戶都可以看到相同的內(nèi)容猿妈。

screen 的會話共享功能的流程拓?fù)?

會話共享功能的流程拓?fù)?/div>

要實現(xiàn)會話共享功能吹菱,首先使用 ssh 服務(wù)程序?qū)⒔K端 A 遠程連接到服務(wù)器,并創(chuàng)建一個會話窗口彭则。

A終端

# ssh 192.168.1.145

# screen -S linuxprobe

B終端

# ssh 192.168.1.145

# screen -x

此文章參考劉遄老師所著的《linux就該這么學(xué)》鳍刷,經(jīng)過逐步調(diào)試,并驗證后形成的俯抖。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末输瓜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子芬萍,更是在濱河造成了極大的恐慌尤揣,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柬祠,死亡現(xiàn)場離奇詭異北戏,居然都是意外死亡,警方通過查閱死者的電腦和手機漫蛔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門嗜愈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人莽龟,你說我怎么就攤上這事蠕嫁。” “怎么了毯盈?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵剃毒,是天一觀的道長。 經(jīng)常有香客問我奶镶,道長,這世上最難降的妖魔是什么陪拘? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任厂镇,我火速辦了婚禮,結(jié)果婚禮上左刽,老公的妹妹穿的比我還像新娘捺信。我一直安慰自己,他們只是感情好欠痴,可當(dāng)我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布迄靠。 她就那樣靜靜地躺著,像睡著了一般喇辽。 火紅的嫁衣襯著肌膚如雪掌挚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天菩咨,我揣著相機與錄音吠式,去河邊找鬼陡厘。 笑死,一個胖子當(dāng)著我的面吹牛特占,可吹牛的內(nèi)容都是我干的糙置。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼是目,長吁一口氣:“原來是場噩夢啊……” “哼谤饭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起懊纳,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤揉抵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后长踊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體功舀,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年身弊,在試婚紗的時候發(fā)現(xiàn)自己被綠了辟汰。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡阱佛,死狀恐怖帖汞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情凑术,我是刑警寧澤翩蘸,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站淮逊,受9級特大地震影響催首,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜泄鹏,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一郎任、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧备籽,春花似錦舶治、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至珠闰,卻和暖如春惜浅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背伏嗜。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工赡矢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留杭朱,地道東北人。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓吹散,卻偏偏與公主長得像弧械,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子空民,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,619評論 2 354

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