分享免费的编程资源和教程

网站首页 > 技术教程 正文

如何使用ssh密钥登录远程服务器

goqiw 2024-09-03 21:07:41 技术教程 14 ℃ 0 评论
  1. 什么是密钥(key)?
  2. 使用密钥登录远程服务器的过程原理
  3. 使用密钥登录远程服务器示例
  4. 如何避免每次登录服务器每次都输入密码?

1.什么是密钥?

密钥(key)是一种参数,通过加密算法得到的。用于明文和密文相互转换的的参数。密钥分为“对称密钥”和“非对称密钥”。

对称密钥:只有一把钥匙,加密和解密都是用这把钥匙

非对称密钥:有2把钥匙,一把公开的钥匙(公钥),一把秘密保存的钥匙(私钥),公钥和私钥是一一对应的。公钥是公开的可以对外发送,私钥必须私密保存,不能泄露。

2. 使用密钥登录远程服务器的过程原理

1. 生成密钥

2. 把公钥上传到远程服务器指定位置

3. 客户端向服务器发起登录请求

4. 服务器收到客户端的登录请求,服务端生成一个随机字符串然后使用公钥加密的结果发送给客户端,要求客户端证明自己的身份。

5. 客户端收到来自服务器的数据,使用私钥进行加密,然后再发送给服务器

6. 服务器收到客户端的加密签名后,使用公钥解密,然后和原始数据做对比,来完成认证过程(如果一致,就允许用户登录


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

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表