Linux常用命令(5)--SSH訪問遠程服務器、SCP服務器間文件拷貝


一、使用"ssh"命令,登錄訪問遠程服務器

  Linux是一個支持多用戶操作的系統,在同一時刻允許多個用戶同時訪問系統,共享系統提供的服務。那么用戶如何從不同的機器上訪問同一台Linux服務器呢?此時就需要借助於SSH客戶端,來進行用戶登錄和訪問系統。

  查看"man ssh"在線文檔,"ssh"命令描述信息如下:

  查看"ssh"在線文檔可知,假設遠程服務器ip地址為:192.168.100.36,遠程用戶名為:newbie,則訪問遠程服務器的命令如下:

ssh -l newbie 192.168.100.36

 

 二、基於服務器間密鑰的方式,實現"ssh"遠程免密碼登錄

  默認情況下,通過“ssh”客戶端來訪問遠程服務器時,每次都要輸入用戶密碼(在經常訪問服務器時,此種體驗讓人很不爽)。實際上"ssh"可以實現免密碼登錄,實現的最簡單的方法是創建一個公鑰/私鑰對,以此來驗證服務器的有效性,替代密碼驗證。
  注意:免密登錄也不是萬能的。免密登錄時,從一台【主機A】的用戶userA,使用【主機B】的用戶userB來登錄到【主機B】,此時存在着嚴格的用戶對應關系。基於密鑰免密登陸的實現步驟如下:

  1、在客戶端【主機A】生成一對密鑰(公鑰/私鑰) 

基於空口令生成一個新的ssh密鑰,以實現無密碼登錄,執行命令如下:

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

參數說明: -t 加密算法類型,這里是使用rsa算法 -P 指定私鑰的密碼,不需要可以不指定 -f 指定生成秘鑰對保持的位置

  2、客戶端【主機A】,使用"ssh-copy-id"命令,將客戶端【主機A】的公鑰,發送個服務端【主機B】

       注:經過ssh-copy-id后接收公鑰的服務端會把公鑰追加到服務端對應用戶的$HOME/.ssh/authorized_keys文件中 

ssh-copy-id userB@serverB

#注:執行此命令時,需要輸入userB的登陸密碼。

  

  3、客戶端【主機A】,使用“ssh”命令訪問服務器端【主機B】,進行登錄操作

ssh -l userB serverB

  4、服務端根據客戶端的用戶名和主機名查找對應的公鑰,將一個隨機的字符串用該公鑰加密后發送給客戶端

  5、客戶端用自己的私鑰進行解密收到的字符串,並將解密后的字符串發送給服務端

  6、服務端對比發送出去的和接收到的字符串是否相同,如果相同,則登錄成功。

 

三、設置“ServerAliveInterval”參數,保持SSH客戶端的長鏈接

  用ssh連接服務器時,過段時間不用, 需要恢復一下斷開的連接, 原因是NAT防火牆喜歡對空閑的會話進行超時處理,以確保它們狀態表的干凈和內存的低占用率,因為 長時間保持連接, 會長期占用部分系統資源, 為了節省系統資源,NAT防火牆就會把長時間的ssh連接斷掉;頻繁重連ssh總歸是有些麻煩,下邊是我對部分ssh工具解決方法:
使用命令參數進行ssh連接時加一個參數 -o ServerAliveInterval=30 (客戶端主動向服務端請求響應的間隔為30s)來保持活動狀態。

ssh -l 登錄用戶名 -o ServerAliveInterval=30  服務器地址

 

 四、服務器間,遠程拷貝命"scp

  scp工具,是基於ssh遠程安全登錄的,可以將主機A上的文件或目錄,拷貝給主機B並且可以改名字,也可以將主機B上的文件或目錄下載到主機A中,同時也支持修改文件名。

  1、遠程拷貝文件

scp 本機文件 user@host:路徑/ 
注:將bigdata1上的
/etc/profile文件拷貝到bigdata2的根目錄下 scp /etc/profile root@bigdata2:/
注:將bigdata1上的
/etc/profile文件拷貝到bigdata2的根目錄下,並改名為profile.txt scp /etc/profile root@bigdata2:/profile.txt

 

  2、遠程拷貝目錄

scp -r 本機目錄 user@host:路徑/ 

注:將bigdata1上的/bin目錄拷貝到bigdata2的根目錄下 
scp -r /bin root@bigdata1:/home/ (-r 表示遞歸)

 

  3、下載文件到本地

scp user@host:文件名 本地目錄 

注:將bigdata2上的/profile下載到本地並改名為profile.txt 
scp root@bigdata2:/profile ./profile.txt

 

  4、下載目錄到本地

scp -r user@host:文件名 本地目錄 

注:將bigdata2上的/bin下載到本地並改名為bin.bak 
scp -r root@bigdata2:/home/bin ./bin.bak

 

轉載說明:本篇博客的“第二節”、“第四節”轉載自網絡。 原文標題:SSH遠程登錄和SSH免密碼登錄 原文地址:https://blog.csdn.net/m0_37822234/article/details/82494556


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM