两台主机之间建立信任(ssh免密码)

背景: 有时候我们在两个主机之间复制文件的时候,提示输入密码,很不方便,那如何免密码复制呢?,就是使用通过linux公钥和秘钥,建立双机信任关系。
ssh免密码的要点 :
你想免密码登陆到哪个主机哪个用户, 就把你自己的公钥文件内容追加到远程主机对应用户下的authorized_keys文件中(对面可能没有这个文件,创建即可)

  1. 生成秘钥:ssh-keygen —身份验证密钥的生成,管理和转换
[root@node1 ~]# ssh-keygen -t rsa  -f ~/.ssh/id_rsa   #生成rsa;-t dsa加密算法;-f文件名:指定密钥文件的文件名;
  1. 实现本地linux 服务器免密登陆远程linux服务器10.15.0.99(本地公钥放到远程authorized_keys文件中):
ssh-copy-id -p 22 -i ~/.ssh/id_rsa.pub [email protected]  #复制本地公钥到远程服务器;在10.15.0.99的 ~/.ssh/目录下生成authorized_keys文件,其内容为本地公钥
  1. 实现远程服务器192免密登陆本地windows主机(将远程公钥放到本地authorized_keys文件中,windows本地不会建立authorized_keys文件,自己创建)
    在本地建立authorized_keys文件,其内容为远程服务[email protected]:/home/easyci/.ssh 的公钥(id_rsa.pub)内容
  2. 实现本地windows主机免密登陆远程服务器(将本地公钥放到远程文件中)
    (windows本地无法执行ssh-copy-id命令)
    传输本地公钥到远程服务器
scp  ~/.ssh/id_rsa.pub [email protected]

清除authorized_keys文件的内容(可以不用操作)


image.png

将id_rsa.pub文件的内容复制到authorized_keys的末尾


image.png
  1. 测试是否能免密登陆


    image.png
  2. 注意:
  • 2和3步都执行了,就叫做互信;
  • 如果远程主机的端口非22端口,需要指定-p port选项。
  • ssh-copy-id是由openssh-clients包提供,没有这个命令可以安装这个包。
  • centos6,7使用ssh-copy-id的时候可以不用指定-i选项,centos5必须指定的。
  • 将公钥拷贝到服务器的~/.ssh/authorized_keys文件中方法有如下几种:
    1、将公钥通过scp拷贝到服务器上,然后追加到~/.ssh/authorized_keys文件中,这种方式比较麻烦。scp -P 22 ~/.ssh/id_rsa.pub user@host:~/。
    2、通过ssh-copy-id程序,就是我演示的方法,ssh-copyid user@host即可
    3、可以通过cat ~/.ssh/id_rsa.pub | ssh -p 22 user@host ‘cat >> ~/.ssh/authorized_keys’,这个也是比较常用的方法,因为可以更改端口号。

windows重启ssh:net stop sshd,net start sshd
linux重启ssh:service sshd restart , systemctl restart sshd.service

windows本地的ssh地址


image.png

windows10 自带的有

  • scp
  • sftp
  • ssh
  • ssh-add
  • ssh-agent
  • ssh-keygen
  • ssh-keyscan
    路径是 C:\Windows\System32\OpenSSH
    参考资料:https://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_023_sshgenkey.html
    https://www.cnblogs.com/wenxingxu/p/9597307.html

你可能感兴趣的:(两台主机之间建立信任(ssh免密码))