使用linux
有一段時間了,最近在服務器上假設了一個git
倉庫,每次提交時都使用密碼實在是比較反人類,所以就特地研究了一下如何使用ssh密鑰
來登陸服務器。linux
ssh-keygen
命令專門是用來生成密鑰的。該命令有不少選項,這裏列出了最基本的四個:git
-t
用來指定密鑰類型(dsa | ecdsa | ed25519 | rsa | rsa1
);-P
用來指定密語-f
用來指定生成的密鑰文件名-C
用來添加註釋ssh-keygen -t rsa -P 123456 -f host -C 'my host key'
意思就是新建了密語爲123456
註釋爲my host key
文件名爲host
的密鑰。此命令會生成host
和host.pub
兩個文件,前者爲私鑰文件
,後者爲公鑰文件
。若是你想免密登陸的話,請將密語設置爲空。shell
上一步生成了公鑰和私鑰後,須要將公鑰部署到服務器並用私鑰登陸。所以首先須要將建立的公鑰上傳到服務器。使用scp
或者你的工具將公鑰上傳到服務器並將文件內容追加到~/.ssh/authorized_keys
中。例如:服務器
#在本機上執行此命令,上傳公鑰 scp -P your_port host.pub user@hostname:/tmp #在服務器上執行此命令,追加到authorized_keys cd /tmp && cat host.pub >> ~/.ssh/authorized_keys #更改權限 chmod 600 ~/.ssh/authorized_keys
打開/etc/ssh/sshd_config
文件,將以下的配置打開:dom
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
重啓sshd
,service sshd restart
或者systemctl restart sshd.service
。重啓以後,服務器已經支持遠程ssh
鏈接了ssh
本人是經過ssh
命令來遠程鏈接服務器的,經過ssh -p your_port username@domain -i your_private_certification
命令,就能夠鏈接到服務器了。若是你是經過xshell
或者putty
來鏈接的話,導入你的私鑰並鏈接就能夠了。工具
若是你想只容許服務器經過公鑰和私鑰的方式來鏈接服務器的話,能夠將服務器配置文件/etc/ssh/sshd_config
中的PasswordAuthentication yes
改成PasswordAuthentication No
,不過在重啓sshd
時不要關閉當前的鏈接,確認經過私鑰能鏈接到服務器才能夠關閉。不然,一旦私鑰連不上,密碼鏈接方式又被禁用了,恐怕你就要告別你的服務器了。rest