03.遠程登錄和複製文件 序號|命令|對應英文|作用 | | | 01|ssh 用戶名@ip|secure shell|關機/重啟 02|scp 用戶名@ip:用戶名或路徑 用戶名@ip:文件名或路徑|secure copy|遠程複製文件 3.1 ssh 基礎(重點) 在Linux中SSH是非常常用 ...
03.遠程登錄和複製文件
序號 | 命令 | 對應英文 | 作用 |
---|---|---|---|
01 | ssh 用戶名@ip | secure shell | 關機/重啟 |
02 | scp 用戶名@ip:用戶名或路徑 用戶名@ip:文件名或路徑 | secure copy | 遠程複製文件 |
3.1 ssh 基礎(重點)
在Linux中SSH是非常常用的工具,通過SSH客戶端我們可以連接到運行了SSH伺服器的遠程機器上
- SSH客戶端是一種使用
Secure shell(SSH)
協議連接到電腦的軟體程式 - SSH是目前較可靠,專為遠程登錄會話和其他網路服務提供安全性的協議
- 利用
SSH 協議
可以有效防止遠程管理過程中的信息泄露 - 通過
SSH 協議
可以對所有傳輸的數據進行加密,也能夠防止DNS欺騙和IP欺騙 SSH
的另一項有點事傳輸的數據可以是經過壓縮的,所以可以加快傳輸的速度
- 利用
1)功能變數名稱 和 埠號
功能變數名稱
- 由一串用點分隔的名字組成,eg:
www.baidu.com
- 是IP地址的別名,方便用戶記憶
埠號
- IP地址:通過IP地址找到網路上的電腦
- 埠號:通過埠號可以找到電腦上運行的應用程式
- SSH伺服器的預設埠號是
22
,如果是預設埠號,在連接的時候可以省略
- SSH伺服器的預設埠號是
- 常見服務埠號列表:
序號|服務|埠號
-|-|-
01|SSH伺服器|22
02|Web伺服器|80
03|HTTPS|443
04|FTP伺服器|21
軟體中:
訪問地址組成的結構:ip地址
+:
+埠號
Linux中:
eg:$ ssh -p埠號 用戶名@IP地址
註意:
在這之前要確定LInux上有安裝ssh操作如下:
1.ps - e| grep ssh
如果沒有看到進程類似:
就說明沒有啟動或安裝
2.安裝ssh:sudo apt-grep install openssh-server
,之後輸入yes,進行安裝。再次通過ps - e| grep ssh
確定是否啟動
3.啟動ssh:sudo /etc/init.d/ssh start
4.ssh連接客戶端:$ ssh 用戶名@IP地址:埠號
,或者不用輸入埠號
2)SSH客戶端的簡單使用
ssh [-p port] user@remote
user
是在遠程機器上的用戶名,如果不指定的話,就預設為當前用戶remote
是遠程機器的地址,可以是IP/功能變數名稱,或者是後面會提到的別名port
是SSh Server箭頭的埠,如果不指定,就預設為預設22
提示:
- 使用
exit
退出當前用戶的登錄
註意:
ssh
這個終端命令只能在linux
或UNIX
系統下使用- 如果在
Windows
系統中,可以安裝PuTTY
或者XShell
客戶端軟體即可
提示:
- 在工作中,SSH伺服器的埠很可能不是22,如果遇到這種情況就需要使用
-p
選項,指定正確埠號,否則無法正常連接到伺服器
3)Windows下SSH客戶端安裝
Putty
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.htmlXShell
http://xshellcn.com
3.2 scp(掌握)
- scp就是
secure copy
,是一個在Linux下用來進行遠程拷貝文件的命令 - 它的地址格式與ssh基本相同,需要註意的是,在指定埠是用的是大寫
-p
而不是小寫的
user是用戶名,remote是遠程IP
1# 把本地當前目錄下的01.py 文件複製到遠程家目錄下的 Desktop/01.py
2# 註意: `:`後的路徑如果不是絕對路徑,則以用戶的家目錄作為參照路徑
scp -P port 01.py user@remote:Desktop/01.py
3# 把遠程家目錄小的Desktop /01.py 文件複製到本地當前目錄下的01.py
scp -P port 01.py user@remote:Desktop/01.py
4# 加上 -r選項可以傳送文件夾
5# 把當前目錄下的demo 文件夾複製到遠程家目錄下的Desktop
scp -r demo user@remote:Desktop
6# 把遠程家目錄下的Desktop 複製到當前目錄下的demo文件夾
scp -r user@remote:Desktop demo
選項 | 含義 |
---|---|
-r | 若給出源文件是目錄文件(文件夾),則scp將遞歸複製該目錄下的 所有子目錄和文件,目標文件必須為一個目錄名 |
-P | 若遠程SSH伺服器的埠不是22,需要使用大寫字母-P選項指定埠 |
註意:
scp
在這個終端命令只能在linux
huoUNIX
系統下使用- 如果在
windows
中,可以安裝PuTTY
,使用pscp
命令行工具或者安裝FileZilla
使用FTP
進行文件傳輸
FileZilla
- 官網:https://filezilla-project.org/download.php?type=client
FileZilla
在傳輸文件時,使用的是FTP服務
而不是SSH服務
報錯
解決方法
1.防火牆的問題,由於我的防火牆日常關閉,所有跟這個沒關係
2.建立新站點,採用 stfp + 埠 22 的方式
FIlezilla -> 文件 -> 站點管理->新站點->常規里的協議:STFP-SSH ->主機:遠程的IP 用戶名和密碼->連接
3.3 SSH高級(高級)
- 免密登錄
- 配置別名
提示:有關SSH配置信息都保存在家目錄下的.ssh
目錄下
1)免密登錄
步驟:
1.配置公鑰
- 執行
ssh-keygen
即可生成SSH鑰匙,一路ENTER即可 ,之後會生成id_rsa id_rsa.pub 兩個文件
2.上傳公鑰
- 執行
ssh-copy-id -p port user@remote
,可以讓遠程伺服器記住我們的公鑰
下圖是操作結果
示意圖:
本地使用私鑰對數據進行加密/解密
伺服器使用公鑰對數據進行加密/解密
非對稱加密演算法
- 使用公鑰加密的數據,需要使用私鑰解密
- 使用私鑰加密的數據,需要使用公鑰解密
2)配置別名
每次輸入ssh-copy-id -p port user@remote
,時間久也很麻煩,特別是當user
,remote
和port
都得輸入,而且還不好記憶
但配置別名就會很方便了,例如:ssh mac
具體操作是在本地電腦的~/.ssh/chonfig
里追加以下內容:
Host mac HostName ip地址 User 用戶名 port 22
保存之後,就可以使用ssh mac
實現遠程別名登錄,scp
同樣可以使用