首先申明,如下內容均源於網絡,全部的命令提示,解釋都是預先學習了網上的大牛們且本身進行了實驗。此處只是隨筆/記錄,便於本人之後學習,也便於大牛指正理解錯誤的地方!!nginx
如有大牛發現問題還請在評論區指教。算法
公鑰和私鑰的生成shell
ssh-keygen
命令專門是用來生成密鑰的。你們能夠谷歌一下(條件不容許百度一下也行)。vim
這裏列出了最基本的四個:ruby
1.-t
用來指定密鑰類型(dsa | ecdsa | ed25519 | rsa | rsa1 一般咱們經常使用dsa和rsa算法進行加密,能夠百度搜下
);服務器
2.-P
用來指定密語;網絡
3.-f
用來指定生成的密鑰文件名;dom
4.-C
用來添加註釋。ssh
命令:ide
ssh-keygen -t rsa -P 123456 -f test -C 'my test key'
解釋:
就是新建了密語爲123456
註釋爲my test key
文件名爲test
的密鑰。此命令會生成test
和test.pub
兩個文件,前者爲私鑰文件
,後者爲公鑰文件
。若是你想免密登陸的話,請將密語設置爲空。
另外:請注意ssh-keygen是用短線符號鏈接在一塊兒的,不要分開,中間若是有空格會報錯:
Bad escape character 'ygen'.———很差的轉義字符「ygen」。
也能夠不用輸這麼長的命令一步一步的來根據提示操做:
命令:
ssh-keygen -t rsa
截圖沒截好,最後無字的紅色箭頭文字內容爲:到你建立公鑰目錄下去找test(私鑰)和test.pub(公鑰)兩個文件
上一步生成了公鑰和私鑰後,須要將公鑰部署到服務器並用私鑰登陸。使用/winscp/xhell/secureCRT/scp或者你的工具將公鑰上傳到服務器並將文件內容追加到~/.ssh/authorized_keys
中。例如:
#在本機上執行此命令,上傳公鑰
1.xshell/secureCRT:
rz -e 找到test test。pub文件目錄
2.scp: scp -P your_port test.pub user@hostname:/tmp
3.winscp:
選擇上傳,或者直接拖放至目標文件夾 #在服務器上執行此命令,追加到authorized_keys(這個名字能夠本身取,但後面使用要用對) cd /home/ && cat test.pub >> ~/.ssh/authorized_keys #更改權限 chmod 600 ~/.ssh/authorized_keys
1.xhell/secureCRT等鏈接工具:
執行vim /etc/ssh/ssh_config打開ssh_config
# IdentityFile ~/.ssh/identity
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa
把前面#去掉,而後在 IdentityFile 後填寫你用來執行ssh時所用的密鑰
2.scp鏈接修改,將以下的配置打開:
執行vim /etc/ssh/sshd_config打開sshd_config配置文件
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
重啓sshd
,service sshd restart
或者systemctl restart sshd.service
。重啓以後,服務器已經支持遠程ssh
鏈接了
推薦使用1方法,方便。2方法有點難找。
1.xhell/secureCRT鏈接服務器的,直接導入私鑰並鏈接就行(推薦)
2.經過ssh
命令來遠程鏈接服務器,執行ssh -p your_port username@domain -i your_private_certification
命令,就能夠鏈接到服務器。
pS:
若是隻容許服務器經過公鑰和私鑰的方式來鏈接服務器,可將服務器配置文件/etc/ssh/sshd_config
中的PasswordAuthentication yes
改成PasswordAuthentication No
,
在重啓sshd
時先不要關閉當前的鏈接,當你確認經過私鑰能鏈接到服務器再關閉,否則,一旦私鑰連不上,你又把密碼鏈接方式給禁用了,那就鏈接不上服務器了(反正我是不知道怎麼連了)。