使用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