ssh-keygen 秘钥登录

最后更新于:2022-04-02 03:51:39

[TOC] ## 概念 ### 密钥是什么 密钥(key)是一个非常大的数字,通过加密算法得到。对称加密只需要一个密钥,非对称加密需要两个密钥成对使用,分为公钥(public key)和私钥(private key) ### 密钥登录的过程 SSH 密钥登录分为以下的步骤,整个流程是自动的。 0. 预备步骤,客户端生成自己的公钥和私钥 1. 客户端的公钥放入远程服务器的指定位置。 2. 服务器收到用户 SSH 登录的请求,发送一些随机数据给用户,要求用户证明自己的身份。 3. 客户端收到服务器发来的数据,使用私钥对数据进行签名,然后再发还给服务器。 4. 服务器收到客户端发来的加密签名后,使用对应的公钥解密,然后跟原始数据比较。如果一致,就允许用户登录。 ### 参数说明 ``` -b 参数指定密钥的二进制位数,-b至少应该是1024,更安全一些可以设为2048或者更高 -C 参数可以为密钥文件指定新的注释 如: -C "your_email@domain.com" or -C "test key" -f 参数指定生成的私钥文件 如: ssh-keygen -t dsa -f mykey 会在 当前目录生成私钥文件mykey和公钥文件mykey.pub -F 参数检查某个主机名是否在known_hosts文件里面 如: ssh-keygen -F example.com -N 参数用于指定私钥的密码 如: ssh-keygen -t dsa -N secretword -p 参数用于重新指定私钥的密码(passphrase) 与-N的不同之处在于,新密码不在命令中指定,而是执行后再输入 -R 参数将指定的主机公钥指纹移出known_hosts文件 如: ssh-keygen -R example.com -t 参数用于指定生成密钥的加密算法,一般为dsa或rsa ``` ## 操作流程 ### 生成密钥 方式一: dsa ``` ssh-keygen -t dsa ``` 生成秘钥`~/.ssh/id_dsa`,生成公钥`~/.ssh/id_dsa.pub` 方式二: rsa ``` ssh-keygen -t rsa ``` 生成秘钥`~/.ssh/id_rsa`,生成公钥`~/.ssh/id_rsa.pub` 生成密钥以后,建议修改它们的权限,防止其他人读取 ``` $ chmod 600 ~/.ssh/id_rsa $ chmod 600 ~/.ssh/id_rsa.pub ``` ### 上传公钥 #### 手动上传 你要以哪个用户的身份登录到服务器,密钥就必须保存在该用户主目录的`~/.ssh/authorized_keys`文件 手动上产 ``` cat ~/.ssh/id_rsa.pub | ssh root@192.168.0.126 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" ``` 设置为只有自己可写 ``` chmod 644 ~/.ssh/authorized_keys ``` #### ssh-copy-id 自动上传公钥 ``` ssh-copy-id -i key_file user@host ``` >[info] 公钥文件可以不指定路径和.pub后缀名,ssh-copy-id会自动在~/.ssh目录里面寻找 ## 场景 ### 生成ssh 证书 `ssh-keygen -t rsa -P '' ` ### 管理机的秘钥发给其他节点 ``` # ssh-keygen -t rsa -P '' # ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.111 # ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.229 // ssh 连接 # ssh root@192.168.0.111 //or # ssh -i ~/.ssh/id_rsa root@192.168.0.111 ```
';