SSH 协议是一个加密的网络协议,它广泛应用在远程登录等场景。使用过 SSH 命令的读者应该知道,SSH 命令需要你输入密码,同时在命令里是无法指定密码的,这在一些场景会很不方便。
SSH 提供了密码之外的其他认证方式,本文介绍使用公钥的方式进行认证。
公钥加密(非对称加密算法)
公钥加密是一种应用非常广泛的加密算法。这个算法的核心是公钥和私钥这样的密钥对,公钥可以公开,私钥必须严格保密。公钥加密的信息,只有私钥能够解析;私钥的签名,公钥可以进行验证。
公钥认证方式的核心是:将客户端的公钥,拷贝到远端服务器的authorized_keys
文件里,实现认证。
客户端公钥生成
生成公钥的方法非常简单,使用ssh-keygen
即可。默认会生成~/.ssh/id_rsa
的私钥和~/.ssh/id_rsa.pub
的公钥。ssh-keygen
的参数如下,读者可以根据自己实际的情况选择。
-t
指定密钥的类型,默认是 RSA ,推荐使用 ed25519 。-b
指定密钥的长度,默认是2048。-c
关于密钥的说明。-f
指定密钥的文件名。-p
私钥存储时会进行对称加密,增加黑客获取密钥的难度。
拷贝公钥到远端服务器
ssh-copy-id命令
拷贝公钥到远端服务器最简单的方法是使用ssh-copy-id
命令,ssh-copy-id [email protected]
,它的选项有:
-p
指定 SSH 端口,如果你修改过 SSH 的端口,可以使用这个参数来指定。-i
指定需要拷贝的文件,建议指定具体的公钥文件。
使用shell命令
下面命令的含义是将本地文件~/.ssh/id_rsa.pub
的内容,通过ssh
命令上传到远端服务器。读者可以根据实际情况修改命令里面的参数。
|
|
使用公钥进行验证
将本地的公钥拷贝到远端服务器之后,使用-i
选项指定公钥文件,就可以使用公钥进行验证了。
|
|