ssh key scp命令 scp無密碼傳輸

ssh算法


~/.ssh/目錄下一般有個文件bash

[root@user .ssh]# ll
總用量 16
-rw-------. 1 root root  552 11月 16 02:48 authorized_keys

這個裏面包含的是別人的public key,若是別人有對應的private key,就可以登錄這個機器dom

生成本身的key,默認一路回車ssh

ssh-keygen -t rsa -C 「wenbintest@gmail.com」
好比若是我默認不加參數,也不輸入密碼
[root@user34-group5-441 .ssh]# 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:
20:67:6a:99:d6:85:27:87:78:93:c0:dc:c5:3e:85:86 root@user34-group5-441
The key's randomart image is:
+--[ RSA 2048]----+
|   o.. +..       |
|    ooE++ .      |
|    o @o+.       |
|     X Bo        |
|    * . S.       |
|   o             |
|                 |
|                 |
|                 |
+-----------------+

 

而後會發現.ssh目錄下多了幾個文件,生成了private key和public key,還有你的public key的指紋,最後是key的截圖ide

know_host網站

第一次登錄一個機器的時候,會看到提示這個機器的公鑰指紋,沒法確認host主機的真實性,只知道它的公鑰指紋(不是你本身生成的public key的指紋),問你還想繼續鏈接嗎?spa

所謂"公鑰指紋",是指公鑰長度較長(這裏採用RSA算法,長達1024位),很難比對,因此對其進行MD5計算,將它變成一個128位的指紋。好比是98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d,再進行比較,就容易多了。code

很天然的一個問題就是,用戶怎麼知道遠程主機的公鑰指紋應該是多少?回答是沒有好辦法,遠程主機必須在本身的網站上貼出公鑰指紋,以便用戶自行覈對。blog

當遠程主機的公鑰被接受之後,它就會被保存在文件known_hosts之中。下次再鏈接這臺主機,系統就會認出它的公鑰已經保存在本地了,從而跳過警告部分,直接提示輸入密碼。ip

[root@user34-group5-439 .ssh]# ll
總用量 16
-rw-------. 1 root root  552 11月 16 02:48 authorized_keys
-rw-------. 1 root root 1679 11月 21 06:50 id_rsa
-rw-r--r--. 1 root root  404 11月 21 06:50 id_rsa.pub
-rw-r--r--. 1 root root  350 11月 21 06:48 known_hosts
[root@user34-group5-439 .ssh]#

authorized_keys

你就能夠把public key放到你想登錄的機器上(好比你想登錄B機器)的authorized_keys文件中了,用以下命令能夠放到B機器上

ssh-copy-id  -i /root/.ssh/id_rsa.pub  root@B_ip

無密碼登錄

若是genkey到時候沒有輸入密碼,那確定就能無密碼登錄了,好比你在A機器,想要要免密碼登錄B機器,那就在你的A機器上執行以下

ssh-keygen(一路回車,不要輸入密碼)
sh-copy-id -i id_rsa.pub root@B_ip

 

權限

設置authorized_keys權限
$ chmod 600 authorized_keys 
設置.ssh目錄權限
$ chmod 700 -R .ssh

若是權限不正確,ssh認證會拒絕,這很重要!

 

ssh-agent

目的是爲了避免輸入密碼,在多個機器間開心跳轉和傳輸

好比你在local,想要登錄到A上去操做,這時候是免密碼登錄,可是到A上操做完了想直接到B上去,這時候A和B沒有配key,就須要密碼,可是ssh-agent就來解決這個問題

ssh-agent bash
ssh-add ~/.ssh/id_rsa

而後你就能夠開心跳轉到A機器了

ssh -A A_ip

而後也能夠開心跳轉到B機器了

ssh -A B_ip

  

 

scp從 本地 複製到 遠程 
====== 
* 複製文件: 
        * 命令格式: 
                scp local_file remote_username@remote_ip:remote_folder 
                或者 
                scp local_file remote_username@remote_ip:remote_file 
                或者 
                scp local_file remote_ip:remote_folder 
                或者 
                scp local_file remote_ip:remote_file 

                第1,2個指定了用戶名,命令執行後須要再輸入密碼,第1個僅指定了遠程的目錄,文件名字不變,第2個指定了文件名; 
                第3,4個沒有指定用戶名,命令執行後須要輸入用戶名和密碼,第3個僅指定了遠程的目錄,文件名字不變,第4個指定了文件名; 
        * 例子: 
                scp /home/space/music/1.mp3 root@www.cumt.edu.cn:/home/root/others/music 
                scp /home/space/music/1.mp3 root@www.cumt.edu.cn:/home/root/others/music/001.mp3 
                scp /home/space/music/1.mp3 www.cumt.edu.cn:/home/root/others/music 
                scp /home/space/music/1.mp3 www.cumt.edu.cn:/home/root/others/music/001.mp3 

* 複製目錄: 
        * 命令格式: 
                scp -r local_folder remote_username@remote_ip:remote_folder 
                或者 
                scp -r local_folder remote_ip:remote_folder 

                第1個指定了用戶名,命令執行後須要再輸入密碼; 
                第2個沒有指定用戶名,命令執行後須要輸入用戶名和密碼; 
        * 例子: 
                scp -r /home/space/music/ root@www.cumt.edu.cn:/home/root/others/ 
                scp -r /home/space/music/ www.cumt.edu.cn:/home/root/others/ 

                上面 命令 將 本地 music 目錄 複製 到 遠程 others 目錄下,即複製後有 遠程 有 ../others/music/ 目錄

 

 

 

scp無密碼傳輸設置

其實就是生成key,可是設置密碼爲空

好比從A考到B

在A上執行:

ssh-keygen  -t rsa(一路回車)
ssh-copy-id  -i /root/.ssh/id_rsa.pub  root@B_ip

而後就能夠從A上向B無密碼傳輸文件了

相關文章
相關標籤/搜索