Ubuntu下使用SSH 命令用於登錄遠程桌面


https://blog.csdn.net/yucicheung/article/details/79427578

問題描述

做DL的經常需要在一台電腦(本地主機)上寫代碼,另一台電腦(服務器,計算力強)上進行訓練,我們在兩台電腦上都安裝的是Ubuntu16.04,為了在local主機下也可以隨時跑程序,調代碼,同時省流量而且迅速(不考慮這些的話用teamviewer也行),所以在兩台電腦主機上進行SSH配置。
基礎:ssh命令連接
step1:SSH程序的安裝

確保在服務器上安裝好了openssh-server程序,在本地主機上安裝好了openssh-client程序。

sudo apt install openssh-client #本地主機運行此條,實際上通常是默認安裝client端程序的
sudo apt install openssh-server #服務器運行此條命令安裝

step2:服務器啟動ssh服務

以下命令都只針對服務器端(server only)。
一般服務器上安裝ssh完成后,會自動啟動ssh服務,並且默認隨系統啟動,如果沒有,請手動啟動:

sudo /etc/init.d/ssh start #服務器啟動ssh-server服務,

其他命令:

sudo /etc/init.d/ssh stop #server停止ssh服務
sudo /etc/init.d/ssh restart #server重啟ssh服務

step3:查詢服務器的ip地址

在服務器終端運行以下命令:

ifconfig #查詢ip地址,在返回信息中找到自己的ip地址

step4:在本地主機端ssh遠程登錄服務器

這一步需要知道服務器的用戶名(我的服務器名字也是yucicheung)及IP地址。
在本地主機上運行以下命令:
用戶端連接服務器用於登錄遠程桌面(以下user時遠程主機的用戶名)

ssh qian@10.170.11.147  #用戶名@IPdress
#或
ssh -l qian@10.170.11.147
# 如果需要調用圖形界面程序
ssh -X qian@10.170.11.147

 初次登錄時會出現以下信息,請記住要輸入的密碼是服務器主機本身的登陸密碼

 

以上表示連接成功,且命令提示副前的用戶名@主機名由本地主機變成服務器的信息,即表明現在該終端所有的命令都是在服務器中執行

本地主機端登錄相關的其他命令:

  • 如果服務器的SSH服務沒有開啟在22端口,那么SSH鏈接時則需要用-p指定端口(如202):
ssh -p 202 yucicheung@10.170.11.147
#或
ssh -l yucicheung -p 202 10.170.11.147

step5:退出遠程登錄

用Ctrl+D或者

exit

進階:利用公鑰省去密碼輸入

每次登錄遠程主機都需要輸入密碼是很不便捷的,如果要加速這一步驟,可以利用密鑰對進行連接,主要思路是:生成一對公鑰私鑰,私鑰在local主機上,公鑰在遠程服務器上,每次建立ssh連接自動檢查密鑰對是否匹配。

step1 生成密鑰對

ssh-keygen -t rsa #-t表示選擇類型,類型為rsa
簡化命令:ssh-keygen
執行以后會在$HOME目錄下生成一個.ssh文件夾,其中包含私鑰文件id_rsa和公鑰文件id_rsa.pub

step2 復制公鑰至服務器

 
         
方法一:ssh-copy-id -i .ssh/id_rsa.pub user@host   #用戶名@IP  將地址拷貝到遠程端
簡化命令:ssh-copy-id user@host
 
 
方法二:
# 登錄遠程服務器 
ssh yucicheung@10.170.11.147
 # 在服務器上創建.ssh文件夾,如果已經存在就跳過此步
 mkdir .ssh
 # 為了保證.ssh文件夾的安全,應取消其他用戶對文件夾的所有權限 
chmod 700 .ssh
 # 退出登錄 
exit 
# 本地主機的公鑰復制到遠程服務器,作為已認證密鑰 
scp /home/yucicheung/.ssh/id_rsa.pub yucicheung@10.170.44.206:/home/yucicheung/.ssh/authorized_keys

在進行以上配置以后,再進行連接時,就可以免去口令(密碼)的輸入了。

配置別名:

每次都輸入 `ssh -p port user@remote`,時間久了會覺得很麻煩,特別是當 `user`, `remote` 和 `port` 都得輸入,而且還不好記憶

而 **配置別名** 可以讓我們進一步偷懶,譬如用:`ssh mac` 來替代上面這么一長串,那么就在 `~/.ssh/config` 里面追加以下內容:

Host mac
    HostName ip地址
    User your_username
    Port 22

保存之后,即可用 `ssh mac` 實現遠程登錄了,`scp` 同樣可以使用

SCP遠程拷貝文件

# 把本地當前目錄下的 01.py 文件 復制到 遠程 家目錄下的 Desktop/01.py
# 注意:`:` 后面的路徑如果不是絕對路徑,則以用戶的家目錄作為參照路徑
scp -P port 01.py user@remote:Desktop/01.py

# 把遠程 家目錄下的 Desktop/01.py 文件 復制到 本地當前目錄下的 01.py
scp -P port user@remote:Desktop/01.py 01.py

# 加上 -r 選項可以傳送文件夾
# 把當前目錄下的 demo 文件夾 復制到 遠程 家目錄下的 Desktop
scp -r demo user@remote:Desktop

# 把遠程 家目錄下的 Desktop 復制到 當前目錄下的 demo 文件夾
scp -r user@remote:Desktop demo

選項   含義
-r    若給出的源文件是目錄文件,則 scp 將遞歸復制該目錄下的所有子目錄和文件,目標文件必須為一個目錄名
-P   若遠程 SSH 服務器的端口不是 22,需要使用大寫字母 -P 選項指定端口


免責聲明!

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



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