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無密碼傳輸文件了