linux下ssh公鑰驗證的設置和遠程登陸

使用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的密鑰。此命令會生成hosthost.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

重啓sshdservice 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

相關文章
相關標籤/搜索