1. 程式人生 > >ssh和scp詳解

ssh和scp詳解

ssh服務器 非對稱加密 詳解 秘鑰登陸 ftp serve color remote windows系統

一、SSH客戶端使用

  使用ssh客戶端遠程登陸到指定的計算機:

$ ssh {user}@{remote} -o IdentityFile=/home/id_rsa -o StrictHostKeyChecking=no
  user:遠程機器上的用戶名,如果不指定的話默認為當前用戶;
  remote:遠程機器的地址,可以是 IP/域名,或者是 後面會提到的別名;
  port:ssh Server **的端口,SSH服務器默認端口號是 22,不指定則使用默認端口號。

  在工作中,SSH服務器的端口號很有可能不是22,如果遇到這種情況就需要使用 -p 選項,指定正確的端口號,否則無法正常連接到服務器。

1、免密碼登陸

ssh無密碼登陸要使用公鑰和私鑰。linux下可以用ssh-keygen生成公鑰/私鑰對。

(1)在客戶端機器生成公鑰/私鑰對

$ ssh-keygen -t rsa -P ‘‘

直接ssh-keygen然後三次回車就可以了。會在/home/root(用戶) 下生成.ssh目錄,.ssh下有id_rsa和id_rsa.pub。
-P表示密碼;-P ‘‘:表示空密碼,這種情況可以不使用-P參數。

(2)上傳公鑰到服務器

  把客戶端機器生成的id_rsa.pub公鑰復制到服務器的 /home/root(用戶)/.ssh/authorized_keys文件中。

$ scp  .ssh/id_rsa.pub   [email protected]:/home/hqs/.ssh/id_rsa.pub
# 把復制的id_rsa.pub添加到.ssh/authorized_keys文件
$ cat id_rsa.pub >> .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys        # authorized_keys的權限要為600

(3)非對稱加密算法

使用 公鑰 加密的數據,需要使用 私鑰 解密;
使用 私鑰 加密的數據,需要使用 公鑰 解密。

2、配置別名

(1)上傳公鑰到服務器(ssh-copy-id)

執行 ssh-copy-id -p port user@remote

(2) 配置別名

配置別名可以讓我們進一步偷懶,比如:ssh centos來替代上面這一長串命令,在客戶端計算機 ~/.ssh/config 裏面追加一下內容:

Host centos
       HostName  服務器ip地址
       User  python
       Port  22

保存後,可以使用ssh centos實現遠程登陸,scp同樣可以使用。

3、使用rsa秘鑰登陸

$ ssh  {user}@remoteaddr  -o IdentityFile=/home/{user}/.ssh/id_rsa -o StrictHostKeyChecking=no

二、SCP使用

  scp 就是 secure copy,是一個 Linux 下用來進行 遠程拷貝文件 的命令。既可以將本地內容拷貝到遠程計算機,也可以將遠程計算機內容拷貝到本地。

$ scp  用戶名@ip:文件名或路徑  用戶名@ip:文件名或路徑
       -r:若給出的源文件是目錄文件,則scp將遞歸復制該目錄下的所有子目錄和文件,目標文件必須為一個目錄名;
       -P:若遠程SSH服務器的端口不是22,需要使用大寫字母 -P 選項指定端口。
       -i identity_file: 從指定文件中讀取傳輸時使用的密鑰文件,此參數直接傳遞給ssh。

# 把本地當前目錄下的 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

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

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

# 指定RSA秘鑰
# 下載數據
$ scp  -i  ~/.ssh/id_rsa  -r root@remote_ip:/data/www/develop/develop_activity_task  /data/www/activity_task_bak

# 上傳數據
$ [root@localhost fsp]# scp -i /home/id_rsa patch.zip [email protected]:/home/fsp/
Authorized users only. All activities may be monitored and reported.
patch.zip

  註意:

  scp 這個終端命令只能在 Linux 或者 UNIX 系統下使用;

  如果在windows系統中,可以安裝putty,使用pscp命令行工具或者安裝FileZilla使用FTP進行文件傳輸。

ssh和scp詳解