互信 ssh
2018-09-26 21:03 受匕图灵 阅读(450) 评论(0) 编辑 收藏 举报2018-09-26
参考网址:https://blog.csdn.net/zwjzqqb/article/details/78950658
1. 简单解释
ssh服务可以生成公私钥,公私钥的类型有两种:rsa和dsa,作用是使用私钥免输入密码登录到公钥所在的主机的用户,这就是ssh的是要免密登录。
ssh互信是指多个用户之间相互配置免密登录,可以是自己配置免密登录自己,做互信用的公私钥可以是多套也可以是一套。
2. 相关目录和权限说明
每一个用户的ssh公私钥所在的目录,在当前用户家目录的.ssh目录下。如果该用户从来没有使用过ssh命令连接到任何主机,此时~/.ssh目录是不存在的。不建议手动创建,使用一次ssh命令连接自己即可创建出来
$ ssh 127.0.0.1
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
RSA key fingerprint is 02:da:60:ad:4f:3e:d2:6b:33:b3:9a:27:d5:e3:80:e7.
Are you sure you want to continue connecting (yes/no)?
# 显示以上信息时.ssh目录已经创建了,此时直接ctrl+c结束掉即可
# 也可以输入yes回车,然后输入密码进行ssh登录,以用户自己登陆到主机的回环地址下的用户自己
$ cd ~/.ssh
# 上一步ctrl+c结束掉,此时该目录为空
# 如果上一步没有ctrl+c结束掉,正常登录后该目录会有一个叫做 known_hosts 文件
# 记录已经连接过的主机信息
$ ssh 127.0.0.1
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
RSA key fingerprint is 02:da:60:ad:4f:3e:d2:6b:33:b3:9a:27:d5:e3:80:e7.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '127.0.0.1' (RSA) to the list of known hosts.
# 这一句警告就是说将 127.0.0.1 (RSA)信息添加到已知的主机信息中,即known_hosts文件中
vincent@127.0.0.1's password:
exit
$ ssh -o StrictHostKeyChecking=no localhost
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
vincent@localhost's password:
Last login: Tue Jan 2 12:32:28 2018 from 127.0.0.1
exit
# 如果不想在第一次连接到某主机某的用户时交互的输入yes(即known_hosts文件中没有该主机的该用户的信息)
# 可以使用 -o StrictHostKeyChecking=no 参数默认自动添加未知主机到known_hosts文件中
# 这是一个非常技巧性的参数
# 生成rsa的公私钥
ssh-keygen -t rsa
# 输入该命令敲回车之后,还需要连续敲三次回车,当然每次回车之前是可以输入一些信息的
# 比如第一次是指定生成的公私钥文件名,一般建议默认,第二次和第三次是输入密码和确认密码
ls -l
# -rw------- 1 vincent vincent 1675 Jan 2 12:45 id_rsa
# -rw-r--r-- 1 vincent vincent 397 Jan 2 12:45 id_rsa.pub
# 文件id_rsa就是默认生成的私钥文件,权限只能是600,如果不是这个权限,则会出问题
# 文件id_rsa.pub是默认生成的公钥文件,权限是644
# 理论上讲只要某台机器的某个用户上有刚才生成的公钥文件,那么用私钥文件就能够免密码登录到该机器
# 公钥像锁,私钥像该锁的钥匙,把公钥放到某主机的某用户下,相当于在某用户的门上安装了一把自己有钥匙的锁
# 自己拿着钥匙就能开锁进门了
# 但是公钥可能有很多个,比如多个用户都要免密码登录到一个主机的某个用户下
# 因此公钥文件不能直接使用,而要生成另外一个文件存放所有公钥用于免密登录
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys
ssh 127.0.0.1 date
# 该文件的权限只能是600,否则也是无法免密登录的
# ssh IP CMD 是指ssh到主机后执行命令CMD,然后退出主机
# 以上配置authorized_keys文件是手工配置,是有正规的命令自动配置的
ssh-copy-id user@127.0.0.1
# vincent@127.0.0.1's password:
# Now try logging into the machine, with "ssh '127.0.0.1'", and check in:
# .ssh/authorized_keys
# to make sure we haven't added extra keys that you weren't expecting.
# 推荐该操作
# 使用 ssh-copy-id 命令,会在authorized_keys不断追加公钥信息
# 生成dsa的公私钥
ssh-keygen -t dsa
# 操作上只有这一个区别
# 一般只生成rsa的公私钥即可
#
#
#
3. 场景一:某用户自己免密登录自己
# 环境清理:
rm -rf ~/.ssh
# 正式开始设置:
mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t rsa
ssh-keygen -t dsa
cd ~/.ssh
cat *.pub >> authorized_keys
# 因为生成了rsa和dsa的密钥,因此需要将两个公钥文件内容写入authorized_keys文件
chmod 600 authorized_keys
ssh -o StrictHostKeyChecking=no 127.0.0.1 date
ssh -o StrictHostKeyChecking=no localhost date
ssh -o StrictHostKeyChecking=no $(hostname) date
ssh -o StrictHostKeyChecking=no $(hostname -i) date
# 以上四条命令是指连接到回环地址,回环地址主机名,主机名,主机名对外IP地址
# 这四条命令是必须要执行的,因为一般或者某些第三方程序测试互信的时候不会使用参数 -o StrictHostKeyChecking=no 的
# 此时known_hosts没有相关信息,需要手动输入yes,或者测试互信就直接失败掉了
# 比如oracle的10gRAC搭建过程中测试互信的时候就会发生该类问题,导致互信检测失败
受匕图灵
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架