2018-09-26oracle
参考网址:https://blog.csdn.net/zwjzqqb/article/details/78950658ssh
ssh服务能够生成公私钥,公私钥的类型有两种:rsa和dsa,做用是使用私钥免输入密码登陆到公钥所在的主机的用户,这就是ssh的是要免密登陆。
ssh互信是指多个用户之间相互配置免密登陆,能够是本身配置免密登陆本身,作互信用的公私钥能够是多套也能够是一套。 测试
每个用户的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的公私钥便可# #
#
# 环境清理: 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搭建过程当中测试互信的时候就会发生该类问题,致使互信检测失败