目 录CONTENT

文章目录

ssh开启免密登录

xlong
2024-04-14 / 0 评论 / 0 点赞 / 6 阅读 / 4163 字 / 正在检测是否收录...

密钥是什么

密钥(key)是一个非常大的数字,通过加密算法得到。对称加密只需要一个密钥,非对称加密需要两个密钥成对使用,分为公钥(public key)和私钥(private key)。

SSH 密钥登录采用的是非对称加密,每个用户通过自己的密钥登录。其中,私钥必须私密保存,不能泄漏;公钥则是公开的,可以对外发送。它们的关系是,公钥和私钥是一一对应的,每一个私钥都有且仅有一个对应的公钥,反之亦然。

如果数据使用公钥加密,那么只有使用对应的私钥才能解密,其他密钥都不行;反过来,如果使用私钥加密(这个过程一般称为“签名”),也只有使用对应的公钥解密。

密钥登录的过程

SSH 密钥登录分为以下的步骤。

预备步骤,客户端通过ssh-keygen生成自己的公钥和私钥。

第一步,手动将客户端的公钥放入远程服务器的指定位置。

第二步,客户端向服务器发起 SSH 登录的请求。

第三步,服务器收到用户 SSH 登录的请求,发送一些随机数据给用户,要求用户证明自己的身份。

第四步,客户端收到服务器发来的数据,使用私钥对数据进行签名,然后再发还给服务器。

第五步,服务器收到客户端发来的加密签名后,使用对应的公钥解密,然后跟原始数据比较。如果一致,就允许用户登录。


ssh-keygen命令

OpenSSH 提供了一个工具程序ssh-keygen命令,用来生成密钥。

# 直接输入ssh-keygen,程序会询问一系列问题,然后生成密钥。
ssh-keygen
# 使用-t参数,指定密钥的加密算法。一般为dsa或rsa
ssh-keygen -t dsa

# -b参数指定密钥的二进制位数。这个参数值越大,密钥就越不容易破解,但是加密解密的计算开销也会加大。
ssh-keygen -b 2048

# -f参数指定生成的私钥文件
ssh-keygen -f mykey

# -F参数检查某个主机名是否在known_hosts文件里面。
ssh-keygen -F example.com

# -N参数用于指定私钥的密码(passphrase)。
ssh-keygen -t dsa -N secretword

# -p参数用于重新指定私钥的密码(passphrase)。它与-N的不同之处在于,新密码不在命令中指定,而是执行后再输入。ssh 先要求输入旧密码,然后要求输入两遍新密码。

# -R参数将指定的主机公钥指纹移出known_hosts文件。
ssh-keygen -R example.com

执行ssh-keygen命令以后,会出现第一个问题,询问密钥保存的文件名,默认是~/.ssh/id_dsa文件,这个是私钥的文件名,对应的公钥文件~/.ssh/id_dsa.pub是自动生成的。用户的密钥一般都放在主目录的.ssh目录里面。

ssh开启免密登录

编辑 sshd_config 配置文件

vim /etc/ssh/sshd_config

#  开启 RSA 密钥验证,公钥验证功能
PubkeyAuthentication yes    

# 设置公钥验证文件的路径
AuthorizedKeysFile .ssh/authorized_keys

# 关闭密码认证
PasswordAuthentication no

生成公钥和私钥

方法一:在服务器上生成密钥

生成公钥和私钥,把公钥上传到.ssh 目录authorized_keys文件中。

ssh-keygen
cat .ssh/id_rsa.pub > .ssh/authorized_keys 

下载.ssh/id_rsa文件,打开xshell,点击工具--用户密钥管理者--导入,将id_rsa文件导入,xshell用户密钥

配置xshell使用刚导入的密钥即可进行免密登录。

方法二:在xshell上生成密钥

  1. 点击 Xshell 的工具-新建用户密钥生成向导,开始生成密钥。

  2. 弹出页面的密钥类型和密钥长度默认不要修改,点击下一步,看到程序生成 2048 位 RSA 密钥,点击下一步,输入密钥名称和登录密码。密钥名称随便起一个,密码是用来和密钥一起双重加密的,哪怕密钥被盗了,没有密码还是无法 SSH 登陆到服务器上。

  3. 点击下一步,把密钥另存为文件保存到本地电脑。这个是公钥。

另外在 Xshell 的工具>>用户密钥管理者里面能够看到对应的私钥,私钥最好另存到本地电脑和邮箱中,这点很重要。

上传公钥到服务器.ssh目录authorized_keys。

设置权限

chmod 700 .ssh
chmod 644 .ssh/authorized_keys

配置xshell使用刚导入的密钥即可进行免密登录。

在服务器上使用免密登录

# -i 指定私钥文件登录 
ssh -i ecs-key.pem  192.168.1.15

0

评论区