使用ssh公钥实现免密码登录

391 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。\

2:背景

为建立在ssh协议上的程序也不需要输入密码就可以运行,比如我的使用场景就是就是需要从将文件(file)从一台主机拷贝到另一台主机,利用的是scp(secure copy)这个command,scp是建立在ssh之上的,所以当你需要使用scp的时候,如果你没有配置ssh免密的话,那么每当你用一次scp,就需要输入一次remote sever的密码,这将极大消耗我们的耐心及浪费我们的时间!
主机A:192.168.198.131
主机B:192.168.198.132

两种命令方式

1、简洁操作

主机A免密码登录主机B:将A的公钥上传到主机B

  • 在主机A创建密钥对
ssh-keygen     #创建证书
#然后均回车(选择默认)
  • 将公钥文件上传至免登录主机B
  • ssh-copy-id -i ~/.ssh/id_rsa.pub -p 50028 192.168.198.132(端口不是22的情况)
ssh-copy-id -i ~/.ssh/id_rsa.pub  192.168.198.132
  • A可以免密码登录B

2:手动拷贝

节点间的无密码访问是通过配置ssh 公钥认证来实现的。

  • 生成了私钥 id_dsa 和公钥 id_dsa.pub,具体操作方法如下。
ssh-keygen -t rsa -P ''

-P表示密码,-P ” 就表示空密码,也可以不用-P参数,这样就要三车回车,用-P就一次回车。

  • 把A机~/.ssh/id_rsa.pub 复制到B机的 /root/.ssh/authorized_keys文件里,先要在B机上创建好 /root/.ssh目录
scp ~/.ssh/id_rsa.pub root@192.168.198.131:/root/.ssh/authorized_keys
-   **authorized_keys的权限要是600!!!** 
    只有用户自己有写权限。否则验证无效
[root@B ~]# chmod 600 /root/.ssh/authorized_keys
  • 检查是否可以直接(不需要密码)登录其他节点。 
    如能两两之间不需要密码登录其他节点,则表明配置成功。

问题答疑 /usr/bin/which: no ssh-copy-id in 和ssh: Could not resolve hostname