LINUX SSH 建立密钥对

为什么要生成密钥

在工作中,要访问服务器的话,为了鉴别你的身份,需要输入你的账户和密码,如果访问的频率比较低,直接输入账户和密码倒也没什么,但是访问的频率比较高,这就是一个很繁琐的操作,同时也为自动化(比如自动化部署)带来了一些不方便。为了解决这一个问题,就可以采用密钥对的方法来处理。

密钥对

所谓密钥,顾名思义就是秘密的钥匙,密钥分为对称密钥和非对称密钥。在这里所用的密钥是非对称密钥。而非对称密钥又叫做公钥密钥加密(即一个公钥一个密钥合成一个密钥对)。公钥用来加密,私钥用来解密。

操作

那么具体的操作可以通俗一点来理解:就是你自己制造了一把锁子(公钥)和一把钥匙(密钥),然后你把锁子(公钥)放到了服务器上,把钥匙(密钥)放到了你的本地电脑上面,由于加密算法的存在,你的锁子和钥匙是唯一的一对,所以只要“密钥”这把钥匙能解开”公钥“这把锁,那么你就可以顺利访问服务器而不需要每次再输入你的账户和密码了。

配置私钥和公钥

先检查一下服务器的ssh配置文件

/etc/ssh/sshd_config

RSAAuthentication yes # 启用 RSA 认证 默认为 yes

PubkeyAuthentication yes # 启用公钥认证,默认为yes

在客户端执行命令  ssh-keygen -t rsa 生成密钥,会生成一个私钥和一个公钥文件,在提示输入 passphrase 时如果不输入,直接回车,那么以后你登录服务器就不会验证密码,否则会要求你输入 passphrase,默认会将私钥放在 /root/.ssh/id_rsa 公钥放在 /root/.ssh/id_rsa.pub。

windows 下面是一样的命令 我这里用的是git的命令窗口:

密钥文件会保存到,C:Users你的用户名.ssh 文件夹下面

将公钥拷贝到远程服务器上的/root/.ssh/authorized_keys文件中,注意,文件名一定要叫authorized_keys。如果有多个客户端,将多个公钥以换行分开,一行一个客户端。

客户端上保留私钥,公钥可以删除。服务器上保存公钥,客户端上保存私钥。这样就可以实现无密码验证登录了。

如果想要获得最大化的安全性,禁止口令登录,

可以修改 /etc/ssh/sshd_conf 中的

PasswordAuthentication yes 改为

PasswordAuthentication no

即只能使用密匙认证的 openssh,禁止使用口令认证。

如果希望ssh公钥生效需满足至少下面两个条件:

1) .ssh目录的权限必须是700

2) .ssh/authorized_keys文件权限必须是600

上传公钥到服务器 
如果需要访问的是服务器,那么就需要上传你的公钥到对应的服务器上面了:

原文地址:https://www.cnblogs.com/yinfutao/p/10009911.html