ssh
ssh
ssh免密登录
1. SSH密钥的组成
- 公钥(Public Key):可以安全地分享给任何人。它用于加密数据,确保只有拥有相应私钥的人才能解密。
- 私钥(Private Key):必须保密,存放在本地。它用于解密由公钥加密的数据,并进行身份验证。
2. 生成SSH密钥对
可以通过以下命令生成SSH密钥对:
ssh-keygen
执行后,系统会提示你选择保存密钥的路径和输入密码短语。默认路径是~/.ssh/id_rsa(私钥)和~/.ssh/id_rsa.pub(公钥)。
[root@localhost ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 密钥保存位置
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 为密钥输入密码
Enter same passphrase again: 再次输入密码
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:kYeILvcNGybcSzYhxvuKKEOHpUDNhHwnhtEyVidIO70 root@localhost.localdomain
The key's randomart image is:
+---[RSA 3072]----+
|oo@+ . |
| XoOoo . o |
|oo=.B o + . |
|. .=.+ . o |
|. =E* O S |
| + + B B |
|. . = . |
|o. . . |
|o.. . |
+----[SHA256]-----+
密钥存放位置/root/.ssh
[root@localhost .ssh]# ls
id_rsa id_rsa.pub
使用ssh-copy-id命令将公钥复制到目标服务器的~/.ssh/authorized_keys文件中。
ssh-copy-id username@target_server
[root@localhost .ssh]# ssh-copy-id root@192.168.5.101
[root@web01 .ssh]# cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC4G8HKl9N2opXMUxihztksB1r/cUDW0PBJBerzA3HE6x+YoOSNUdTIGMOuLPCjUkTvU6EgrYKv6FpZPig81xEulwC0pRI/ThpnD+N/zGmTFUuwpCY2hNam2y8syIXVgl6cqTHRhirZMBw1hdpR0YUskjdKb1ElrvDNHyg+Qi4zofaKVNMAeC6cG4H7xyjvaMatkhOcUJQIlTroVXzbd3bq+HvpNqyQJaDVP9iJ4eyF08rALqK8vj5Zy5LJvavxA490AZBUTnFQomeQPRodf0QOAkifMadXwli4DlwyhpcFs61ix+wBJNbVlG3sgSYEnlZgJ49TPGj4IPaZCrTPJ9txfkYPIVymcY0gvrSP8RCGJOuNIAlPNRqpqO1sVwRqFTrAj/oT3hVmmORjeinjrUoopTSpgJQjZTZjmecL8098OiKZvu5goUSs2aj+r4mOUglHq4ty4KCV+PeMJyVSgd+JMVmtUewZjJ6gXyESYi0CQ52jhtCnuHwXItw2A4rRMAU= root@localhost.localdomain
ssh客户端和服务端
[root@localhost ssh]# ls
moduli ssh_config.d ssh_host_ecdsa_key ssh_host_ed25519_key ssh_host_rsa_key
ssh_config sshd_config ssh_host_ecdsa_key.pub ssh_host_ed25519_key.pub ssh_host_rsa_key.pub
1. moduli
描述: 这个文件包含了DH(Diffie-Hellman)密钥交换协议中使用的质数和生成元的列表。用于加密通信以确保安全。
用途: 在SSH连接中,特别是在生成共享密钥时,提供安全的参数。
2. ssh_config
描述: 这是SSH客户端的全局配置文件。
用途: 你可以在此文件中设置SSH客户端的默认行为,例如主机别名、用户名、端口等。
3. sshd_config
描述: 这是SSH服务器的配置文件。
用途: 控制SSH服务器的行为,如允许的身份验证方式、端口号、最大连接数等。需要管理员权限来修改。
4. ssh_host_ecdsa_key
描述: 这是ECDSA(Elliptic Curve Digital Signature Algorithm)算法生成的SSH主机密钥的私钥。
用途: 用于SSH服务器的身份验证,确保连接的服务器是合法的。
5. ssh_host_ecdsa_key.pub
描述: 对应于ssh_host_ecdsa_key的公钥。
用途: 服务器在建立SSH连接时向客户端提供的密钥,用于验证服务器身份。
6. ssh_host_ed25519_key
描述: 这是ED25519算法生成的SSH主机密钥的私钥。
用途: 同样用于SSH服务器的身份验证,通常更安全且速度更快。
7. ssh_host_ed25519_key.pub
描述: 对应于ssh_host_ed25519_key的公钥。
用途: 用于在建立连接时向客户端提供的密钥。
8. ssh_host_rsa_key
描述: 这是RSA算法生成的SSH主机密钥的私钥。
用途: 用于SSH服务器的身份验证,确保连接的服务器是合法的。
9. ssh_host_rsa_key.pub
描述: 对应于ssh_host_rsa_key的公钥。
用途: 服务器在建立SSH连接时向客户端提供的密钥,用于验证服务器身份。
vim /etc/ssh/ssh_config
# StrictHostKeyChecking no 登录时不需要验证
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程