1. 程式人生 > 實用技巧 >ssh 遠端服務

ssh 遠端服務

二、ssh遠端服務介紹

1.簡介

SSH是一個安全協議,在進行資料傳輸時,會對資料包進行加密處理,加密後在進行資料傳輸。確保了資料傳輸安全。那SSH服務主要功能有哪些呢?

1.提供遠端連線的服務
	linux遠端連線: ssh  telnet
	windows的遠端連線:  RDP (remote desktop)、向日葵、teamviewer
2.對傳輸資料進行加密

2.ssh和telnet

1)使用telnet連線伺服器

#安裝telnet服務
[root@nfs ~]# yum install -y telnet-server

#啟動
[root@nfs ~]# systemctl start telnet.socket

#telnet只支援普通使用者登入,建立使用者
[root@nfs ~]# useradd lhd
[root@nfs ~]# echo 123 | passwd --stdin lhd
Changing password for user lhd.
passwd: all authentication tokens updated successfully.

#連線測試
[c:\~]$ telnet 10.0.0.31 23
Connecting to 10.0.0.31:23...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Kernel 3.10.0-957.el7.x86_64 on an x86_64
nfs login: lhd
Password: 123
[lhd@nfs ~]$ su -

#篩選去重命令
[root@nfs ~]# echo "vviimm  //eettcc//ssyyssccoonnffiigg//nneettwwoorrkk--ssccrriippttss//iiffccffgg--eetthh00" | sed -nr 's#(.)(.)#\1#gp'
vim /etc/sysconfig/network-scripts/ifcfg-eth0

2)兩者區別

1.telnet:
	1)不能使用root使用者登入,只能使用普通使用者
	2)資料包沒有進行加密,傳輸都是明文的
	
2.ssh:
	1)可以使用任意使用者登入
	2)資料傳輸都是加密的

三、ssh相關命令

SSH有客戶端與服務端,我們將這種模式稱為C/S架構,ssh客戶端支援Windows、Linux、Mac等平臺。
在ssh客戶端中包含 ssh|slogin遠端登陸、scp遠端拷貝、sftp檔案傳輸、ssh-copy-id祕鑰分發等應用程式。

1.ssh命令

[root@web01 ~]# ssh [email protected] -p 22

#命令拆分
ssh 			#命令
root			#系統使用者(如果不寫,就使用當前伺服器的當前使用者)
@				#分隔符
172.16.1.31		 #遠端主機的IP
-p 				#指定埠(終端不支援)
22				#埠(預設22)

-o StrictHostKeyChecking=no		#首次訪問時不驗證身份

2.xshell連線不上虛擬機器怎麼辦?

1.查網路
ping ip
tcping ip port

2.查埠
telnet
tcping ip port

3.檢查網絡卡是否啟動
ip a

4.虛擬網路編輯器
檢視子網IP和閘道器

5.檢視windows虛擬網絡卡
vmnat8

6.防火牆

3.scp命令

scp客戶端命令:遠端拷貝
類似於rsync,scp全量,rsync增量

scp支援推和拉

1)scp推:

#把當前目錄下的hostname_ip.sh檔案推送到172.16.1.31機器的/tmp目錄下
[root@web01 ~]# scp hostname_ip.sh 172.16.1.31:/tmp

#注意:
	與rsync不同,推送時不論是加 / 還是不加 / ,推送的都是目錄
	如果想推送目錄下的檔案,則使用 *

2)scp拉:

[root@web01 ~]# scp 172.16.1.31:/tmp/1.txt ./

#注意:
	與rsync不同,拉取時不論是加 / 還是不加 / ,拉取的都是目錄
	如果想拉取目錄下的檔案,則使用 *

3)常用引數

-P 指定埠,預設22埠可不寫
-r 表示遞迴拷貝目錄
-p 表示在拷貝檔案前後保持檔案或目錄屬性不變
-l 限制傳輸使用頻寬(預設kb)

[root@web01 /tmp]# scp -l 8096 1.txt 172.16.1.31:/tmp/
[email protected]'s password: 
1.txt    12%   64MB   1.0MB/s   07:19 ETA

4)總結

1.scp通過ssh協議加密方式進行檔案或目錄拷貝。
2.scp連線時的使用者作為為拷貝檔案或目錄的許可權。
3.scp支援資料推送和拉取,每次都是全量拷貝,效率較低。

4.sftp命令

1)終端連線

#檔案傳輸命令
sftp:/root> 

#下載檔案
sftp:/root> get hostname_ip.sh
Fetching /root/hostname_ip.sh to hostname_ip.sh
sftp: received 497 ؖ½ؠin 0.01 seconds

#上傳檔案
sftp:/root> put

2)伺服器之間連線

#連線
[root@web01 ~]# sftp [email protected]
[email protected]'s password: 
Connected to 172.16.1.31.

#操作遠端連線過去的機器
sftp> pwd
Remote working directory: /root
sftp> ls -l
-rw-------    1 root     root         1429 Jul  6 02:17 anaconda-ks.cfg
-rw-r--r--    1 root     root          497 Aug  5 20:15 hostname_ip.sh
-rw-r--r--    1 root     root       727290 Aug 15 01:15 sersync2.5.4_64bit_binary_stable_final.tar.gz

#如果想操作本機,則在命令前加一個 l
sftp> lls -l
total 8
-rw-r--r--  1 root root    0 Aug 18 00:25 1.txt
-rw-------. 1 root root 1429 Jul  6 02:17 anaconda-ks.cfg
-rw-r--r--. 1 root root  497 Aug  5 20:15 hostname_ip.sh

#拉取命令
sftp> get 1.txt ./
#當使用拉取命令的時候,前面的是遠端伺服器,後面的是本地伺服器

#推送命令
sftp> put 1.txt ./
#當使用put的時候,前面的是本地伺服器,後面的是遠端伺服器

3)檔案傳輸工具

#圖形化工具
1.xftp
2.filezilla
3.flashfxp

4)命令對比

1.rz/sz:
	1.不能上傳4G以上的檔案
	2.不能斷點續傳
	3.不能上傳資料夾

2.sftp:
	1.能上傳大於4G的檔案
	2.能斷點續傳
	3.可以上傳資料夾

四、SSH驗證方式

1.方式一:基於使用者名稱密碼遠端連線

#需要知道伺服器的IP,埠,系統使用者,使用者密碼才能連結遠端主機
[root@nfs ~]# ssh [email protected] -p 2222
[email protected]'s password: 
Last login: Tue Aug 18 00:44:33 2020 from 10.0.0.1
[root@web01 ~]#

#設定密碼
1.複雜的密碼(容易忘記)
2.簡單的密碼(容易被破解)
3.每臺機器密碼都不一樣
4.密碼是動態的
5.密碼三個月一變
6.密碼錯誤三次,鎖定使用者
7.密碼肯定是沒有規律的

2.方式二:基於金鑰的方式

預設情況下,通過ssh客戶端命令登陸遠端伺服器,需要提供遠端系統上的帳號與密碼,但為了降低密碼洩露的機率和提高登陸的方便性,建議使用金鑰驗證方式。

1)生成金鑰對

[root@web01 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
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:n618dqJXK1Z1mvHcv31VadZTBwni3gXEghWSp9+HTj4 root@web01
The key's randomart image is:
+---[RSA 2048]----+
|        .++++..o |
|        ooo.... o|
|         o..  . =|
|        .. . ..==|
|        S.....oB=|
|         ..o+ * =|
|          o+.+ .o|
|         . .E o +|
|          +* = .+|
+----[SHA256]-----+
[root@web01 ~]#

2)將公鑰傳送至要免密登入的伺服器

1>方式一:手動複製
#檢視公鑰
[root@web01 ~]# cat .ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDbOLFAuHJy6xtGOBFIWALpyWNyR3ixgULtv9uVMELre1iVv6S/fBT3YqKR6naX1y1oyhWBD6njMhXDANuG9OQ/ABTHrgOJrF5JMY1AS9jI5DrMaIdfoBXcmck6RuID5yddlLiA6VdeHI8ndtth7bu6Ed50otviNbzF7NG7chX9oGbju6uGMY12pb0BKCtJaJ9qycGJOZCi8OyrIycJBexsiC+DYOwvXjmtdRtf7KNBnHSDDEIsywQNku1/WXUE0l4CMoZ/zjgO19fdxfdbCT4qAWTz0r9CDUzhEFIVZgz73KLahy+IXIhNupHXf0VcrS3h11rWDUrOeIw2oIZHEPz3 root@web01

#將公鑰寫到要連線的機器
[root@nfs ~]# vim .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDbOLFAuHJy6xtGOBFIWALpyWNyR3ixgULtv9uVMELre1iVv6S/fBT3YqKR6naX1y1oyhWBD6njMhXDANuG9OQ/ABTHrgOJrF5JMY1AS9jI5DrMaIdfoBXcmck6RuID5yddlLiA6VdeHI8ndtth7bu6Ed50otviNbzF7NG7chX9oGbju6uGMY12pb0BKCtJaJ9qycGJOZCi8OyrIycJBexsiC+DYOwvXjmtdRtf7KNBnHSDDEIsywQNku1/WXUE0l4CMoZ/zjgO19fdxfdbCT4qAWTz0r9CDUzhEFIVZgz73KLahy+IXIhNupHXf0VcrS3h11rWDUrOeIw2oIZHEPz3 root@web01

#授權
[root@nfs ~]# chmod 600 .ssh/authorized_keys

#連線測試
[root@web01 ~]# ssh 172.16.1.31
Last failed login: Tue Aug 18 00:51:38 CST 2020 from 10.0.0.1 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Mon Aug 17 23:39:28 2020 from 172.16.1.7
[root@nfs ~]# 
2>方式二:命令推送公鑰
#命令推送公鑰
[root@web01 ~]# ssh-copy-id -i .ssh/id_rsa.pub [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/id_rsa.pub"
The authenticity of host '172.16.1.41 (172.16.1.41)' can't be established.
ECDSA key fingerprint is SHA256:mOtCaBS+53EDW9mKoXVj4v5Q1E1fYB0DexMHr/WzTc4.
ECDSA key fingerprint is MD5:75:12:f6:05:4c:5d:66:6f:21:0d:8e:0f:fc:bb:36:d6.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password: 

Number of key(s) added: 1

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

[root@web01 ~]#

#連線測試
[root@web01 ~]# ssh 172.16.1.41
Last login: Mon Aug 17 23:32:44 2020 from 10.0.0.1