如何配置ssh密钥登录远程服务(如何使用ssh密钥登录远程服务器)
如何配置ssh密钥登录远程服务(如何使用ssh密钥登录远程服务器)4. 服务器收到客户端的登录请求,服务端生成一个随机字符串然后使用公钥加密的结果发送给客户端,要求客户端证明自己的身份。3. 客户端向服务器发起登录请求2. 使用密钥登录远程服务器的过程原理1. 生成密钥2. 把公钥上传到远程服务器指定位置
- 什么是密钥(key)?
- 使用密钥登录远程服务器的过程原理
- 使用密钥登录远程服务器示例
- 如何避免每次登录服务器每次都输入密码?
1.什么是密钥?
密钥(key)是一种参数,通过加密算法得到的。用于明文和密文相互转换的的参数。密钥分为“对称密钥”和“非对称密钥”。
对称密钥:只有一把钥匙,加密和解密都是用这把钥匙
非对称密钥:有2把钥匙,一把公开的钥匙(公钥),一把秘密保存的钥匙(私钥),公钥和私钥是一一对应的。公钥是公开的可以对外发送,私钥必须私密保存,不能泄露。
2. 使用密钥登录远程服务器的过程原理
1. 生成密钥
2. 把公钥上传到远程服务器指定位置
3. 客户端向服务器发起登录请求
4. 服务器收到客户端的登录请求,服务端生成一个随机字符串然后使用公钥加密的结果发送给客户端,要求客户端证明自己的身份。
5. 客户端收到来自服务器的数据,使用私钥进行加密,然后再发送给服务器
6. 服务器收到客户端的加密签名后,使用公钥解密,然后和原始数据做对比,来完成认证过程(如果一致,就允许用户登录
如何使用ssh密钥登录远程服务器
3.使用密钥登录远程服务器示例
3.1. 生成密钥
3.2. 把公钥上传到远程服务器指定位置
3.3. 客户端向服务器发起登录请求
3.1. 生成密钥
ssh-keygen -b 位数 -t 加密算法[dsa或者rsa] -N 私钥文件的密码 -f 生成秘钥文件位置
ssh-keygen -b 4096 -t rsa -N 123 -f tenxun
# 示例
ssh-keygen -b 4096 -t rsa -N 123 -f tenxun 130 ↵ zhaowei@zhaoweideMBP
# 执行命令后如下显示
Generating public/private rsa key pair.
Your identification has been saved in tenxun.
Your public key has been saved in tenxun.pub.
---[RSA 4096]----
|B=O o |
|.. o . . |
| |
----[SHA256]-----
3.2. 把公钥上传到远程服务器指定位置
使用 ssh-copy-id 命令把公钥上传到服务器 ”~/.ssh/authorized_keys“ 文件中,也可以自己手动拷贝到服务器 ”~/.ssh/authorized_keys“文件中,手动拷贝记得重启服务器。
# 可以不定公钥路径和.pub后缀名,ssh-copy-id 会自动在~/.ssh目录里面寻找
ssh-copy-id -i tenxun root@148.70.132.116
# 执行命令后如下显示
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "tenxun.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s) to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@148.70.132.116's password:
Number of key(s) added: 1
Now try logging into the machine with: "ssh 'root@148.70.132.116'"
and check to make sure that only the key(s) you wanted were added.
3.3. 客户端向服务器发起登录请求
# 执行命令后
ssh -i./tenxun root@148.70.132.116 zhaowei@zhaoweideMBP
Enter passphrase for key './tenxun':
# 输入私钥密码
Last login: Sat Aug 21 07:14:35 2021 from 175.152.148.247
4.如何避免每次登录服务器每次都输入密码?
私钥设置了密码以后,每次使用都必须输入密码,烦的一批。ssh-agent 命令就是了解决每次使用都输入密码,它让用户在整个对话(session)中,只在第一次使用ssh命令时输入密码,然后把私钥保存在内存中,后面使用都不需要私钥的密码了。
第1步 运行 ssh-agent 代理命令,执行命令后会在后台运行
第2步 添加 ssh-add 私钥
第3步 再次输入 ssh 命令登录 这个时候不用输入私钥密码就直接登录成功了
ssh-agent
ssh-add ~/.ssh/tenxun
ssh -i ./tenxun root@148.70.132.116
ssh-agent 130 ↵ zhaowei@zhaoweideMBP
# 执行命令后如下
SSH_AUTH_SOCK=/var/folders/ky/vcx6v0zs21dc4d4f4mc168jm0000gn/T//ssh-NHnCz48IVXdn/agent.52049; export SSH_AUTH_SOCK;
SSH_AGENT_PID=52050; export SSH_AGENT_PID;
echo Agent pid 52050;
ssh-add ~/.ssh/tenxun 1 ↵ zhaowei@zhaoweideMBP
# 执行命令后如下
Enter passphrase for /Users/zhaoweijie/.ssh/tenxun:
Identity added: /Users/zhaoweijie/.ssh/tenxun (zhaowei@zhaoweideMBP.lan)
# 再次输入命令 这个时候不用输入私钥密码就直接登录成功了
ssh -i ./tenxun root@148.70.132.116